我有一个游戏,用户联系服务器以找到想要玩游戏的用户。这是游戏请求的基本架构。
我正在使用ndb
为Google DataStore中的每个用户级别存储等待队列。
我通过密钥访问这些队列以确保强一致性(每this article)。实体使用重复的({3}}列表存储在队列中。
问题:
我对后一个问题考虑的一件事是维护多个队列(其数量随着需求而增长和缩小)。
答案 0 :(得分:2)
不确定您的第一个问题,但您可以在交易中使用sleep语句模拟它。
对于第二个问题,您可以使用另一种架构。如果等待队列持续时间相对较短(几分钟而不是几小时),您可能需要使用memcache。它比写入磁盘快得多,您可以避免处理一致性问题。
答案 1 :(得分:1)
1.-如果您在交易中执行实体获取和发布,则同一实体无法与游戏匹配,因此没有错误且保持一致。
2.-每秒写1次是同一实体组内交易的限制。如果需要更多,可以对队列实体进行分片。
您可以使用专用的memcache或redis实例来避免争用。这比数据存储快得多。
了解这些人如何使用树节点进行匹配: https://www.youtube.com/watch?v=9nWyWwY2Onc