我正在开发一款游戏的锦标赛版本,我期待1000多名同时玩家。比赛开始时,玩家将被快速淘汰(可能超过每秒5次),但随着锦标赛的进行,这个过程会变慢。取决于玩家从锦标赛中被淘汰的情况,奖励一定数量的积分。例如,先下降的玩家,什么都不得,而第500名玩家获得1分,第一名获胜者获得200分。现在我想在玩家被淘汰后立即奖励和显示积分数。
问题在于,当玩家被淘汰后将新行推入数据存储区时,行实体必须位于单独的实体组中,因此我不会达到每秒1-5次写入的gae数据存储区限制对于1个实体组。此外,我需要能够一致地读取和写入行数,以便我可以正确地确定所有被淘汰的玩家的奖金。
实现数据模型以支持此功能的最佳方法是什么?
答案 0 :(得分:2)
由于玩家人数有限,几秒钟内的争用问题不太可能持续很长时间,因此您有两种选择:
要记住的一件事是,由于事务重试的工作原理,同一实体组上一起出现的事务将以半随机顺序解析 - 也就是说,它不是严格的FIFO队列。如果你需要,你必须自己强制执行,尽管在任何类型的分布式系统中这都是微不足道的事情。
答案 1 :(得分:0)
现有的评论和答案很好地解决了具体问题。
在更高级别,请查看来自Google代码堵塞小组的post and open source library。他们遇到了类似的问题,最终开发了一个基于数据存储区的可扩展记分板,可以有效地处理任意页面的更新和请求。