我应该将登录服务器与游戏服务器分开吗?


15

我正在考虑制造MMO服务器,并且一直在研究其他游戏如何构建其网络。我注意到的一件事是,总是有一个登录服务器,然后是游戏服务器。

我仍在决定是否应该这样做,但是我想先听听一些意见。这样有什么好处,登录服务器如何与游戏服务器通信以处理登录?


1
问题“如何在MMO中​​实现负载平衡?” 可能很有趣:gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann 2011年

Answers:


15

我认为这主要是由于登录和游戏处理在逻辑上或多或少相互独立,因此通常将它们分开以实现更好的去耦,更易于维护和可伸缩性。它们不必驻留在不同的物理服务器上,它们可以在同一台计算机上以及独立服务上运行。如果通信量太大,则可以轻松将登录服务器移至另一台计算机。

同样,登录服务器是一种可能的攻击媒介,因此最好将它们与安全性分开。

在内部,不同的服务器端服务可以使用常规套接字相互通信,无论它们位于群集中的同一台计算机上还是另一台计算机上。或者,可以使用数据库服务器为每个用户维护“已登录”标志。


大多数时候,我在gameserver数据库中和loginserver数据库中看到这样的标志,因此登录服务器可以相互检查,如果logindb!= gamerserverdb,则用户将注销。
daemonfire300 2011年

10

MMO开发中非常重要的一个方面是实现可伸缩性并实现负载平衡。

通过检查凭据,禁止状态,计算最近失败的登录次数等方式对用户进行身份验证是一项无需知道任何游戏逻辑或游戏数据即可完成的任务。因此,很容易将其移至其自己的服务器群集。

此外,登录服务器是客户联系的众所周知的“入口”。成功通过身份验证后,他们可以将客户端调度到游戏服务器群集中的相应服务器。可以通过将网络连接转发到正确的游戏服务器或告诉客户端打开与正确的游戏服务器的新连接来完成此分派。

您应该尽早考虑削减系统以进行分发。在一台服务器上运行多个组件非常容易。但是,很难将已经开发为一个单元的东西分开。


2

作为前魔兽世界玩家,我的经验是登录服务器始终是链中最薄弱的环节。

世界服务器通常都非常稳定,甚至可以很好地处理异常负载(例如,新的扩展包版本)。

但是登录服务器似乎永远无法应付得很好,并且在世界服务器正常的情况下经常会关闭。(这意味着,如果您在团队副本/地牢中失去联系,您将无法重新进入,但其他玩家正在等您!)

现在,WoW登录系统已合并到Battle.Net中,当WoW承受重负载时(如《大地的裂变》启动后的几个小时),星际争霸2可能变得不可用。

因此,如果您要构建一个拥有大量用户的游戏,那么登录系统的可伸缩性和性能也非常重要。


1
我猜登录服务器是暴力破解密码的主要目标,因此它们必须能够处理相当多的负载。尤其是在游戏如此流行的情况下,除了正常随机猜测用户名之外,攻击者还开始使用僵尸网络(以防止每个ip地址限制速率)。
Hendrik Brummermann 2011年

无法登录并将玩家放置在世界中可能有多种原因。它可能是登录服务器/帐户数据库。但这可能是由于无法从数据库中加载播放器信息引起的。或由于将玩家分配到世界服务器,聊天服务器等系统的故障而引起的……内部防火墙可能仍然能够处理已知的连接,但可能无法应用规则集来决定新的连接。与玩家互动后,与之互动要复杂得多。
Hendrik Brummermann 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.