AppEngine:如何获取数据存储区写入事件的序列?

时间:2011-06-27 10:36:50

标签: google-app-engine

我需要一个用于整个应用程序数据的音序器。

使用计数器实体是一个坏主意(每秒写5次限制),并且不能选择Sharding计数器。

由于服务器的时钟差异以及可能的服务器时间被设置/重置,GMT时间戳似乎不安全。

有什么想法吗? 如何获取一个实体属性,我可以查询自给定值以来更改的所有实体?

TIA

1 个答案:

答案 0 :(得分:1)

分布式数据存储(例如应用引擎数据存储区)没有全局序列 - 如果实体B写入服务器B',如果这些事件发生得足够接近,那么实际上无法确定实体A是否写入服务器A' ,除非你有一台机器调解所有交易并对它们进行序列化,这对你的系统的可扩展性设置了一个硬上限。

对于实际的实际问题,最简单的解决方案是为每条记录分配修改时间戳,每次需要同步时,查找比(时间戳)更新的记录 - (epsilon),其中epsilon是短的时间间隔长于服务器之间时间同步的预期差异(类似10秒应该充足)。然后,您的客户可以丢弃它收到的任何重复记录。

相关问题