我正在开发一款实时游戏,可以实时容纳数千名玩家。什么是最好的服务器结构?
我的想法是使用2个服务器群集 - 一个用于服务器端(所有计算端),另一个用于数据库端,其中负载均衡器对每个群集“负责”。一个主服务器将接收来自用户的请求,并发回用户可以使用的相关服务器的IP地址。
数据库集群将使用数据库复制来实现数据库之间的一致性。
我正在使用.NET + MSSQL进行游戏。
谢谢!
(P.S - 在ServerFault上被问到,没人能帮忙:()
答案 0 :(得分:3)
<强>服务器:强>
需要更多信息才能提出任何建议。成千上万是一个巨大的范围,可能是2000,可能是20万。同样,服务器所需的数据量和处理量也会有所不同。如果存在大量数据,并且完整性很重要,那么为应用程序和数据库服务器建立存储区域网络(SAN)可能会更好。
<强>网络:强>
成千上万的用户发送大量数据很快就会导致网络连接问题。如果这是基于互联网的,你将需要多个连接(只是为了处理数据,以及故障转移),如果它是基于LAN的,你可能仍然需要多个“外部”IP点。在内部(在任何负载平衡器/防火墙之后),您可能还需要对事物进行子网划分,因为服务器间通信可能非常高。
<强>备份强>
如果一台服务器发生故障会怎样?该服务器的用户是否断开连接?他们的进步是否失败?如果它是一个应用服务器,也许什么都不会丢失(只要它使用数据库来存储所有会话数据)但是数据库服务器呢?
最终尺寸:
你真的想要设计最终尺寸吗?现在为可扩展设置设计软件和架构是一个好主意。如果它是可扩展的(例如,从:1个连接,1个app服务器和1个db服务器开始),您可以随时根据需要修改基础结构(更多用户 - 添加负载均衡器和第二个应用服务器)。只要您考虑到这一点,您应该能够随着事物的发展而扩展。
总切线(AWS):
如果你还没有绑定某个东西,而且它是一个在线系统,那么你可以建立Amazon Web Services吗?它们的设置不仅允许可扩展性,而且还有一些关于如何拆分任务/设计布局的excellent cases studies。鉴于AWS服务通常是真实服务器的模拟,您甚至可以将案例研究作为构建非AWS设置的指南。