首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google App Engine数据存储中每秒写入5+的事务计数器

Google App Engine数据存储中每秒写入5+的事务计数器
EN

Stack Overflow用户
提问于 2010-12-20 00:55:41
回答 2查看 546关注 0票数 4

我正在开发一个锦标赛版本的游戏,我希望1000+同步玩家。当锦标赛开始时,玩家将很快被淘汰(可能超过每秒5人),但随着锦标赛的进行,这个过程会变慢。根据球员从锦标赛中被淘汰的时间,将获得一定数量的积分。例如,第一个倒下的玩家什么也得不到,而排名第500位的玩家得到1分,第一名获胜者得到200分。现在,我想要在球员被淘汰后立即奖励和显示积分。

问题是,当我在玩家被淘汰后将新行推送到数据存储中时,行实体必须在单独的实体组中,这样我就不会达到1个实体组每秒1-5次写入的gae数据存储限制。此外,我还需要能够一致地读取和写入行数,以便我可以为所有被淘汰的球员正确确定奖品。

为了支持这一点,实现数据模型的最佳方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-20 07:04:26

由于玩家数量有限,每秒几次的争用问题不太可能持续很长时间,因此您有两种选择:

  1. 干脆忽略这个问题。淘汰群集将会发生,但只要这不是持续的情况,事务的重试机制将确保它们都被执行。
  2. 当有人外出时,独立记录这一点,并异步更新锦标赛状态,分配排名。这意味着你不能立即通知他们他们的排名,而是需要做出异步回复或让他们轮询。

坦率地说,我建议使用前者:即使你的1000人锦标赛的一半在前5分钟内就结束了-这是一个荒谬的不太可能的事件-你仍然看到每秒不到2次淘汰。在现实中,任何峰值都会比这更小,寿命更短。

要记住的一件事是,由于事务重试的工作方式,同一实体组上一起发生的事务将以半随机顺序进行解析-即,它不是严格的FIFO队列。如果您需要这样做,您必须自己执行它,尽管这在任何类型的分布式系统中都不是一件微不足道的事情。

票数 2
EN

Stack Overflow用户

发布于 2011-01-28 07:25:47

现有的评论和答案很好地解决了这个特定的问题。

在更高的层次上,看看这个来自google code jam团队的post and open source library。他们遇到了类似的问题,最终开发了一个基于数据存储的可伸缩记分板,可以有效地处理对任意页面的更新和请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4484006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档