0

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

这就是我正在尝试做的事情:我正在构建一个用户在投票中投票的“游戏”。投票进行得很快(大约每用户分钟一次),所以我认为有必要使用阴影技术来确保用户在写投票时不会遇到瓶颈。当用户进行投票时,会读取投票实体以确保投票仍在运行,然后假设将投票写入分片成功,用户应该收到他们的投票已计入的通知(在返回的页面上)。投票结束后,根据每个用户的投票组装分片并进行计算;然后显示结果。

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

有可能防止这种情况吗?在实践中我什至需要担心这个吗?

谢谢!

4

1 回答 1

0

If you're trying to achieve real-time results, then use memcache. The incr() method should be of particular interest to your voting game. You can write the results to the datastore on a much less frequent basis (say, every 100 votes and again at the end of voting) so your performance will be much better. You may even be able to avoid sharding this way.

于 2013-06-02T20:08:18.007 回答