6

我刚刚在Query Cursors 的 AppEngine 文档中看到以下段落:

游标的一个有趣应用是监视实体是否有未见的变化。如果应用程序在每次实体更改时使用当前日期和时间设置时间戳属性,则应用程序可以使用按时间戳属性排序的查询(升序)和 Datastore 游标来检查实体何时移动到结果列表的末尾. 如果更新了实体的时间戳,则带有游标的查询将返回更新后的实体。如果自上次执行查询以来没有更新实体,则不返回任何结果,并且光标不会移动。

为了使其可靠地工作,必须对跨不同服务器实例的时钟同步做出某种保证。否则,您可能会遇到以下情况:

  1. 服务器实例 1(快速时钟)使用时间戳 1000 保存更新。
  2. 客户要求更新并找到这一更新。
  3. 服务器实例 2(慢时钟)使用时间戳 950 保存另一个更新。
  4. 客户要求更新,但由于时间戳未增加,因此未找到此更新。

据我了解,从来没有任何这样的时钟同步保证。这个变了吗???

更新:

我刚刚意识到,即使时钟完美同步,由于查询的最终一致性,这种方法也可能会丢失结果。如果较晚的更新最终在较早的更新之前提交并使其成为同时查询而较早的更新没有,它将隐藏较早的更新。还是我错过了什么?

4

1 回答 1

1

我在时钟和谷歌云平台上找到的唯一文档在这里这里。根据第一个链接帖子,实例是使用 NTP 服务同步的,它已经为您完成了。

于 2015-05-25T11:43:15.077 回答