GAE 人力资源提交/可见性 + 时间戳



GAE HR是朝着可扩展性迈出的一步,将提交和可见性分开,但在可用性方面却倒退了一步。这种分离会产生一个问题("最终一致性"?),导致它在某些应用程序设计中的使用终止。通常,我在 http 请求中提交并重定向到显示结果的另一个页面,但我必须稍加延迟(几毫秒)才能尝试获取该提交的更改。这是我为此找到的最简单的解决方法,而不是修复。不幸的是,我不能保证我得到了该提交的更改。由于多种计算同步范式,我认为不可能知道更改更新需要多长时间,可能需要几毫秒、几分钟甚至几天(在不太可能的情况下)。

我想知道我可以通过使用时间戳来"修复"这个问题,什么很容易传递给查询字符串中的另一个请求或存储在会话 memcache 变量中。如果我有上次提交的时间戳,以后对数据库的任何查询都可以使用此时间戳来检查检索的数据是否在该时间戳之后提交,如果没有,它会一次又一次地重试查询。这样我就可以保证正确的可见性("强一致性"?),即使需要很长时间。它最终可以读取该时间戳之后其他用户/进程提交的数据,我认为这不是问题。这种方法正确吗?

我可以使用每个表中的时间戳字段来实现这一点,但 lib 会更好(内置时间戳字段、轮询时间的自动调整、上次提交的内部缓存会话时间戳,也许还有一些低级数据库回调而不是轮询)。有这样的第三方库吗?我知道使用 GAE 低级数据库 API 的 ORM 库,但我不知道如何开始这样的事情。

为了在 GAE 数据存储中实现强一致性 - 使用祖先查询。

https://cloud.google.com/appengine/docs/python/datastore/queries#Python_Ancestor_queries

最新更新