我正在尝试在 Windows Azure 中设置一个全局计数器,用于跟踪一天内启动的游戏数量。每次玩家开始游戏时,都会从客户端向服务器发出 Web 服务调用,并且全局计数器将加一。对于数据库来说,这应该相当简单......但我想知道如何有效地做到这一点。数据库方法适用于同时处理数百个客户端,但如果我有 100,000 个客户端,会发生什么情况?
感谢您的帮助/想法!
最佳答案
一年多前,这是 Cloud Cover 剧集中的一个主题:Cloud Cover Episode 43 - Scalable Counters with Windows Azure 。他们讨论了如何创建Apaythy Button (类似于 Facebook 上的“赞”按钮)。
Steve Marx 还在博客文章中详细讨论了这一点,并附有源代码:Architecting Scalable Counters with Windows Azure 。在此解决方案中,他们执行以下操作:
- 在每个实例上,跟踪本地计数器
- 使用
Interlock.Increment
修改本地计数器 - 如果计数器发生变化,请将新值保存在表存储中(让计时器每隔几秒执行一次此操作)。对于每个部署/实例,计数器表中都会有 1 条记录。
- 要显示总计数,请计算计数器表中所有记录的总和。
关于c# - 如何在Azure中构建高度可扩展的全局计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578225/