我有一个游戏,用户联系服务器以找到与他们级别想玩游戏的用户。这是游戏请求的基本架构。
我正在使用 ndb
为 Google DataStore 中的每个用户级别存储一个等待队列。
我通过键访问这些队列以确保强一致性(根据 this article )。实体使用重复的(列表)LocalStructuredProperty 存储在队列中.
问题:
- 实体从等待队列中删除,因为它与请求匹配。事务已提交但尚未应用。同一实体与另一个请求匹配并被删除。这会引发错误吗?
- 这些高度一致的访问限制为~1 次写入/秒。有没有更好的架构可以消除这种限制?
对于后一个问题,我考虑过的一件事是维护多个队列(其数量随着需求而增长和收缩)。
最佳答案
不确定您的第一个问题,但您可以在交易中使用 sleep 语句来模拟它。
对于第二个问题,您可以使用另一种架构。如果等待队列持续时间相对较短(几分钟而不是几小时),您可能需要使用内存缓存。这将比写入磁盘快得多,并且您可以避免处理一致性问题。
关于python - 使用 GAE + ndb 进行配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39899451/