Google应用引擎着色一致性

时间:2013-05-31 23:10:47

标签: python google-app-engine concurrency transactions

我遇到问题,Google App Engine尝试在聚合分片实体时确保强大的稳定性。我最初假设批量“获取”键确保读取是最新的,但后来才知道这是不正确的。现在我对如何实现强稳定感到困惑。

这是我正在尝试做的事情: 我正在建立一个用户在民意调查中投票的“游戏”。投票很快(大约每用户一分钟),所以我认为必须采用阴影技术来确保用户在撰写选票时不会瓶颈。当用户进行投票时,读取投票实体以确保投票仍在运行,然后假设对该分片的投票成功,用户应该收到他们的投票被计算的通知(在返回的页面上) )。在轮询结束之后,组装分片并基于每个用户的投票进行计算;然后显示结果。

重要的是,在分片聚合期间实际看到收到确认的用户投票。如果服务器拒绝用户的投票(特别是如果它接近轮询结束时),则可以,但是他们应该收到失败通知。我担心GAE的最终一致性保证可能会出现(仅使用基本着色)用户成功将其投票写入分片(并获得成功通知)的情况,但累加器尚未看到更新并且确实不计算用户在最终统计中投票。

有可能阻止这种情况吗?我是否真的需要在实践中担心这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您尝试获得实时结果,请使用memcache。 incr()方法应该是您的投票游戏特别感兴趣的。您可以在不太频繁的基础上将结果写入数据存储区(例如,每100票并在投票结束时再次),这样您的表现会更好。您甚至可以通过这种方式避免分片。