论文部分内容阅读
随着互联网技术的快速发展,网络游戏成为了人们主要的娱乐方式之一。传统的网络游戏服务器架构采用客户端-服务器模式,由客户端直接向服务器发起网络请求,服务器给予相应的响应。随着游戏玩家数量的不断增加,单个游戏服务器无法处理,而客户端与服务器直连的架构模式难以支持游戏服务器集群,限制了游戏的负载上限。另一方面,传统的服务器架构模式下服务器与服务器之间相互独立,不进行消息通信,难以实现跨服战场和全服战场等业务需求。本文基于游戏玩家数量不断增长和跨服战场难以实现的背景,根据当前游戏服务器架构的研究现状,针对他们的缺点并结合游戏公司服务器架构的需求,从设计和实现的角度提出了网关服务器架构这一解决方案。本文的主要工作如下:(1)针对游戏玩家不断增长导致了游戏服务器负载上限的问题,本文提出了在直连的架构模式中引入网关服务器,网关服务器实现了对游戏服务器集群的负载均衡,游戏服务器集群根据游戏实际负载动态上线或下线游戏服务器,支持更大规模的玩家同时在线竞技,使得游戏没有负载上限。(2)针对跨服战场的需求问题,本文提出了将通信消息定义为单播、组播和广播三种消息类型,单播消息用来做客户端到服务器的通信,组播消息用来做跨服战场通信,广播消息用来做全服战场通信,网关服务器和游戏服务器根据消息类型做不同的处理,有效地解决了跨服战场的问题,也支持了更复杂的业务需求。(3)针对消息序列化的问题,本文提出了自定义二进制协议,实现了消息协议的编解码,提高了消息的传输效率,解决了分包和黏包的问题,同时二进制协议支持任意语言来实现游戏客户端。(4)针对服务管理的问题,本文提出了在服务器架构中引入服务注册中心,基于ZooKeeper实现的服务注册中心实现了对游戏服务的注册、发现和监听。同时服务注册中心通过划分节点实现了对服务的管理,支持游戏服务器动态上线和下线,使得开发人员不用手动维护服务器配置表,简化了开发流程。目前上海某游戏公司已经为网关服务器架构成立开发小组,使用该架构已经完成了对游戏服务器逻辑的部分重构,为游戏服务器架构的演进奠定了基础。