使用GAE ndb进行匹配
作者:互联网
我有一个游戏,用户在该游戏中与服务器联系,以找到想要玩游戏的同级别用户.这是游戏请求的基本架构.
我正在使用ndb在Google DataStore中为每个用户级别存储一个等待队列.
我正在通过它们的键访问这些队列,以确保强一致性(根据this article).使用重复的(列表)LocalStructuredProperty将实体存储在队列中.
问题:
>实体从等待队列中删除,因为它与请求匹配.事务已提交但尚未应用.该相同实体与另一个请求匹配并被删除.这会引发错误吗?
>这些高度一致的访问限制为〜1个写入/秒.有没有更好的架构可以消除这种限制?
对于后一个问题,我考虑过的一件事是维持多个队列(其数量随需求而增长和收缩).
解决方法:
不确定第一个问题,但是您可以在事务中使用sleep语句模拟它.
对于第二个问题,您可以使用另一种体系结构.如果等待队列的持续时间相对较短(数分钟而不是数小时),则可能要使用内存缓存.这将比写入磁盘快得多,并且您可以避免处理一致性问题.
标签:app-engine-ndb,google-app-engine,google-cloud-datastore,python 来源: https://codeday.me/bug/20191118/2025536.html