我正在建立一个网站,玩家可以在其中玩虚拟积分的回合制游戏(如扑克网站,但不同)。我提出的设置:
客户端将使用Flash制作,网络服务器将使用PHP。其余的都是Java。
通信
协议:
如果客户有他的意愿,该网站将需要支持数千个并发玩家。有了这些信息,你能看到我设置中的任何瓶颈吗?我个人有点担心只存在一个数据服务器,但我不确定如何分解它。其他可扩展性(或其他)评论也是受欢迎的。
答案 0 :(得分:3)
您的架构有许多单一服务,这些服务对于任何用户的系统任何部分都至关重要。我认为这些是SPOF。
在这种类型的应用程序中,我认为水平分区是一个好主意,因为对于一个它可以轻松完成并增加系统的可靠性。假设您的SPOF是分区的,而不是冗余的。这更容易,也可能更便宜。如果SPOF的一部分出现故障(假设您的20个独立和物理分布式数据服务器中有1个),这很糟糕,因为5%的玩家被锁定了。但可能很快就会起床。如果您的SPOF是多余的,那么任何失败的可能性都会降低。但如果确实如此,那么每个人都会被锁定。这是一个问题,因为你会让所有人同时尝试重新上线。一旦你的SPOF回来了,它会受到一些高于它通常要处理的请求数量级的命中。并且您仍然可以同时使用水平分区和冗余,如平衡服务所建议的那样。
答案 1 :(得分:1)
参与了几场Facebook游戏,我会说:
考虑成千上万玩家的可扩展性,但是在为这些玩家进行扩展之前,你必须得到成千上万的玩家。
也就是说,提前计划,但担心在为数千名并发玩家计划系统之前获得1名玩家。
我怀疑您描述的设置对初始用户群的效果非常好。在构建时,请避免执行以下操作:要求登录服务器与大厅服务器通信。让每个服务器都独立存在,杀死你的大事是服务之间的相互依赖。
但最重要的是,尽可能以最便捷的方式完成。如果你有足够的用户对你的系统征税,这将是一件非常好的事情。您可以聘请DBA来帮助您了解在拥有那么多用户时如何扩展。