一、 MMORPG特点
下面的所讲述的三个特点,给我们带来了性能问题,带来了挑战。我们最终形成的征途服务器分布式技术构架,是解决他们带来的问题,而不是绕过他们。
1. 实时的交互 电子游戏的交互的实时性不言而喻,MMORPG则带来了更复杂的交互。无论是玩家与NPC还是玩家与玩家之间,当一个玩家发出指令,周围的玩家都应立即看到他做出的改变。玩家的忍受度基本都在200ms内。
2. 区域群集效应 一般来讲MMORG都会有一个或者多个让玩家聚集的功能区,从软件开发角度讲这是业务的需求。 对服务器带来的压力我们做一个简单的测算: 每人做出1个事件的平均时间是T,并将结果发给可见范围内的玩家,在单位时间T内,服务器的复杂度是O(n+n2),n是可见范围内的玩家数量。换一个不严格的说法,就是当你有n个人群聚在一起,你的服务器将会少上n2-n的不群聚的人。
所以区域群集效应对服务器性能带来的降低是巨大的。
3. 更多的人在一起做更多内容的交互 跟MO游戏比较,MMO的游戏在一起交互的玩家大大增加。 跟其他类型游戏比较,RPG的内容相对来说要很多。 MMO和RPG元素放在一起,服务器要做的事情就是MMO的人数 x RPG的内容。
二、相对应带来的关键问题
1. 更多要处理的数据,更多要同步给用户的数据复杂度是O(n )。
2. 当用户聚集在一起,性能的下降是迅速的复杂度是O(n2)。这里的n不是总人数,而是聚集的人数。
三、要让多人在一起互动,服务器需要解决上述2大问题
即游戏数据的处理及同步 单台服务器处理能力有限,所以分布式服务器技术是很自然的解决方案。围绕上述两个核心问题,我们提出一些分布式服务器技术构架的具体解决方案。这些方案都是实际应用于征途服务器中。
a) 针对游戏数据处理 1. 将游戏世界按区域拆分到多个游戏服务器中,这些游戏服务器共同组建了一个整体的游戏世界,这些在一起的玩家可以很方便的互动。 2. 当然数据同步也被游戏服务器分散承担。 3. 带来的问题 3.1. 用户基本状态信息,比如是否登录,目前在那个服务器。 3.2. 解决办法是架设一个session 服务器。
b) 针对游戏数据同步 1. 为什么数据同步已经有负载了,还要针对数据同步进行负载均衡。 1.1. 我们要容纳更多的玩家。 1.2. 随着人数增加,人数高峰的到来,区域群集效应对性能影响突出。在实际情况中,总是某一个或几个区域聚集的人特别多。因此带来的性能问题,无法通过划分更细小的区域,增加游戏服务器来解决。 2. 另外从实际角度,我们也不能一味通过将游戏世界拆分成更多游戏服务器来解决。 2.1. 那会到导致服务器的浪费。 2.2. 从用户体验上讲也不好,毕竟经常从一个服务器跳转到另一个服务器让玩家感到麻烦。 2.3. 客户端经常重新连接也在一定程度上带来了不稳定因素和性能下降。 3. 所以增加了gateway服务器,放置在游戏服务器的前端,将同步数据的工作交给他。 4. 大致工作原理及效果 4.1. 玩家平均的链接到gateway服务器。 4.2. 游戏服务器将用户的位置同步到gateway服务器。 4.3. 理论上每台gateway的同步负载为原来游戏服务器负载的S2分之一(S是gateway服务器的数量)。
c) 当形成如此的构架后,诸多功能可以合理的分配到各个服务器 1. 比如gateway服务器增加 1.1. 数据包的整合,加密,压缩。 1.2. 数据包合法性,反外挂的检测。 1.3. 其他与游戏相关性不大,但是很必要的功能。 2. 比如session服务器增加 2.1. 工会功能。 2.2. 聊天转发。 2.3. 好友。 2.4. 其他非游戏区域性功能。
四、此种服务器分布式带来的问题和局限
诸多问题和局限,导致运营成本和开发成本的增加,但是我们可以通过一些适当的手段规避或者减小这方面的风险。 1. 不太适合服务器人数少的区,灵活性不够,会造成浪费。虚拟化能解决此问题。 2. 服务器之间的数据同步增加,内耗较多。程序开发要做大量的优化工作。 3. 游戏服务器的复杂度增加,开发难度增大。做好封装,开发管理及对团队的培训。
五、游戏服务器分布式技术的发展趋势
1. 给玩家带来更好的用户体验,比如无缝体验,更大的世界。 2. 游戏业务的分布,将业务剥离做负载均衡,比如,聊天,NPC。 3. 云计算。
六、只有分布式是不够的 1. 良好的均衡技术构架是实现大容量游戏的前提,在实际开发中的设计和优化同样非常重要。 2. 游戏设计的优化,将游戏业务适当分散在不同的服务器。 3. 循环算法的优化,一切性能问题都在循环里。 4. 数据流量的优化,不管是服务器之间的流量,还是服务器和客户端的流量。
|