一种高性能网络游戏的的架构设计
⼀种⾼性能⽹络游戏的的架构设计
⽹络游戏的结构分为客户端与服务器端,客户端采⽤2D绘制引擎或者3D绘制引擎绘制游戏世界的实时画⾯,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的游戏画⾯绘制。客户端与服务器通过⽹络数据包交互完成每⼀步游戏逻辑,由于游戏逻辑是由服务器负责处理的,要保证⾯对海量⽤户登录时,游戏具有良好的流畅性和⽤户体验,优秀的服务器架构起到了关键的作⽤。
我爱祖国手抄报内容文字1  服务器架构设计
1.1  服务器架构分类如何将excel转换成word
服务器组的架构⼀般分为两种:第⼀种是带⽹关服务器的服务器架构;第⼆种是不带⽹关服务器的服务器架构,这两种⽅案各有利弊。在给出服务器架构设计之前,先对这两种设计⽅案进⾏详细的探讨。
所谓⽹关服务器,其实是Gate服务器,⽐如LoginGate、GameGate等。⽹关服务器的主要职责是将客户端和游戏服务器隔离,客户端程序直接与这些⽹关服务器通信,并不需要知道具体的游戏服务器内部架构,包括它们的IP、端⼝、⽹络通信模型(完成端⼝或Epoll)等。客户端只与⽹关服务器相连,通过⽹关服务器转发数据包间接地与游戏服务器交互。同样地,游戏服务器也不直接和客户端通信,发给客户端的协议都通过⽹关服务器进⾏转发。
1.2  服务器架构设计
根据⽹络游戏的规模和设计的不同,每组服务器中服务
器种类和数量是不尽相同的。本⽂设计出的带⽹关服务器的服务器组架构如图1所⽰。
本⽂将服务器设计成带⽹关服务器的架构,虽然加⼤了服务器的设计复杂度,但却带来了以下⼏点好处:
(1)作为⽹络通信的中转站,负责维护将内⽹和外⽹隔离开,使外部⽆法直接访问内部服务器,保障内⽹服务器的安全,⼀定程度上较少外挂的攻击。
(2)⽹关服务器负责解析数据包、加解密、超时处理和⼀定逻辑处理,这样可以提前过滤掉错误包和⾮法数据包。
(3)客户端程序只需建⽴与⽹关服务器的连接即可进⼊游戏,⽆需与其它游戏服务器同时建⽴多条连接,节省了客户端和服务器程序的⽹络资源开销。
(4)在玩家跳服务器时,不需要断开与⽹关服务器的连接,玩家数据在不同游戏服务器间的切换是内⽹切换,切换⼯作瞬间完成,玩家⼏乎察觉不到,这保证了游戏的流畅性和良好的⽤户体验。
在享受⽹关服务器带来上述好处的同时,还需注意以下可能导致负⾯效果的两个情况:如何避免⽹关服务器成为⾼负载情况下的通讯瓶颈问题以及由于⽹关的单节点故障导致整组服务器⽆法对外提供服务的问题。上述两个问题可以采⽤“多⽹关” 技术加以解决。顾名思义,“多⽹关” 就是同时存在多个⽹关服务器,⽐如⼀组服务器可以配置三台GameGate。当负载较⼤时,可以通过增加⽹关服务器来增加⽹关的总体通讯流量,当⼀台⽹关服务器宕机时,它只会影响连接到本服务器的客户端,其它客户端不会受到任何影响。
从图1的服务器架构图可以看出,⼀组服务器包括LoginGate、LoginServer、GameGate、GameServer、DBServer和MServer等多种服务器。LoginGate和GameGate就是⽹关服务器,⼀般⼀组服务器会配置3台GameGate,因为稳定性对于⽹络游戏运营来说是⾄关重要的,⽽服务器宕机等突发事件是游戏运营中所⾯临的潜在风险,配置多台服务器可以有效地降低单个服务器宕机带来的风险。另外,配置多台⽹关服务器也是进⾏负载均衡的有效⼿段之⼀。下⾯将对各种服务器的主要功能和彼此之间的数据交互做详细解释。
(1)LoginGate
LoginGate主要负责在玩家登录时维护客户端与LoginServer之间的⽹络连接与通讯,对LoginServer和客户端的通信数据进⾏加解密、校验。
(2)LoginServer
LoginServer主要功能是验证玩家的账号是否合法,只有通过验证的账号才能登录游戏。从架构图可以看出, DBServer和GameServer会连接LoginServer。玩家登录基本流程是,客户端发送账号和密码到LoginServer验证,如果验证通过,LoginServer会给玩家分配⼀个SessionKey,LoginServer会把这个SessionKey发送给客户端、DBServer和GameServer,在后续的选择⾓⾊以后进⼊游戏过程
中,DBServer和GameServer将验证SessionKey合法性,如果和客户端携带的SessionKey不⼀致,将⽆法成功获取到⾓⾊或者进⼊游戏。
(3)GameGate成语疯狂猜
GameGate(GG)主要负责在⽤户游戏过程中负责维持GS与客户端之间的⽹络连接和通讯,对GS和客户端的通信数据进⾏加解密和校验,对客户端发往GS的⽤户数据进⾏解析,过滤错误包,对客户端发来的⼀些协议作简单的逻辑处理,其中包括游戏逻辑中的⼀些超时判断。在⽤户选择⾓⾊过程中负责维持DBServer与客户端之间的⽹络连接和通讯,对DBServer和客户端的通信数据进⾏加解密和校验,对客户端发往DBServer的⽤户数据做简单的分析。维持客户端与MServer之间的⽹络连接与通讯、加解密、数据转发和简单的逻辑处理等。(4)GameServer
灭菌
GameServer(GS)主要负责游戏逻辑处理。⽹络游戏有庞⼤世界观背景,绚丽激烈的阵营对抗以及完备的装备和技能体系。⽬前,⽹络游戏主要包括任务系统、声望系统、玩家PK、宠物系统、摆摊系统、⾏会系统、排名系统、副本系统、⽣产系统和宝⽯系统等。从软件架构⾓度来看,这些系统可以看着GS的⼦系统或模块,它们共同处理整个游戏世界逻辑的运算。游戏逻辑包括⾓⾊进⼊与退出游戏、跳GS以及各种逻辑动作(⽐如⾏⾛、跑动、说话和攻击等)。
及各种逻辑动作(⽐如⾏⾛、跑动、说话和攻击等)。
由于整个游戏世界有许多游戏场景,在该架构中⼀组服务器有3台GS共同负责游戏逻辑处理,每台游戏服务器负责⼀部分地图的处理,这样不仅降低了单台服务器的负载,⽽且降低了GS宕机带来的风险。玩家⾓⾊信息⾥会保持玩家上次退出游戏时的地图编号和所在GS编号,这样玩家再次登录时,会进⼊到上次退出时的GS。
为什么一开网页就卡
上⾯提到过,在验证账号之后,LoginServer会把这个SessionKey 发给GS,当玩家选择⾓⾊登录GS时,会把SessionKey⼀起发给GS,这时GS会验证SessionKey是否与其保存的相⼀致,不⼀致的话GS会拒绝玩家进⼊游戏。MServer的主要负责GS之间的数据转发以及数据⼴播,另外,⼀些系统也可以放到MServer上,这样也可以减轻GS的运算压⼒。
(5)DBServer
DBServer主要的功能是缓存玩家⾓⾊数据,保证⾓⾊数据能快速的读取和保存。由于⾓⾊数据量是⽐较⼤的,包括玩家的等级、经验、⽣命值、魔法值、装备、技能、好友、公会等。如果每次GS获取⾓⾊数据都去读数据库,效率必然⾮常低下,⽤DBServer缓存⾓⾊数据之后,极⼤地提⾼了数据请求的响应速度。
LoginServer会在玩家选组时把SessionKey发给DBServer,当玩家发送获取⾓⾊信息协议时会带上这个SessionKey,如果跟DBServer保存的SessionKey不⼀致,则DBServer会认为玩家不是合法⽤户,获取⾓⾊协议将会失败。另外,玩家选取⾓⾊正式进⼊游戏时,GS会给DBServer发送携带SessionKey的获取⾓⾊信息协议,这时DBServer同样会验证SessionKey的合法性。总之,只有客户端、DBServer和GS所保存的SessionKey⼀致,才能保证协议收到成功反馈。
与DBServer通讯的服务器主要有GG,GS和LoginServer,DBServer与GG交互的协议主要包括列⾓⾊、创建⾓⾊、删除⾓⾊、恢复⾓⾊等,DBServer与GS交互的协议包括读取⾓⾊数据、保存⾓⾊数据和跳服务器等,DBServer与LoginServer交互的协议主要是⽤户登录协议,这时候会给DBServer发送SessionKey。
(6)MServer
每⼀个组有⼀台MServer,主要负责维持3台GS之间数据的转发和数据⼴播。另外⼀些游戏系统也可
销魂什么意思能会放到MServer上处理,⽐如⾏会系统。
1.3  服务器交互的主要流程
下⾯给出服务器之间数据通讯的主要流程从这些流程能看出各种服务器之间是如何数据交互和协同⼯作的。
图2的流程说明了,在选⾓⾊过程中,客户端会把携带游戏账号和SessionKey的选⾓⾊协议发给GG,GG做⼀些简单处理之后转发给DBServer,DBServer要验证SessionKey的合法性,验证通过之后,DBServer会从⾓⾊信息缓冲区⾥取出该账户的所有⾓⾊信息发给客户端。这个过程在客户端的表现是,当选择好服务器组之后,客户端会直接显⽰该账号下的所有⾓⾊,之后就可以选择⾓⾊进⼊游戏了。
图3的流程说明了,在玩家选⾓⾊正式进⼊游戏时,客户端会把携带游戏账号、⾓⾊ID和SessionKey的登录协议发给GG,GG做⼀些简单处理之后转发给GS。GS会验证SessionKey的合法性,验证通过之后,GS会把验证通过的结果发给客户端,同时GS给DBServer发获取⾓⾊数据的协议,这些⾓⾊数据是⼀个玩家所有的游戏数据,包括装备、技能等等。
图4的流程说明了,在玩家游戏过程,客户端把逻辑协议(包括⾛、说话、跑、使⽤技能等)发给GG,GG完成加解密和简单逻辑处理之后转发给GS,GS负责这些协议的主要
逻辑处理。
2  总结
⽹络游戏服务器的架构设计已经成为当前⽹络游戏研究领域的热点,因为⾼性能服务器架构设计是⼀款⽹络游戏成功的关键。本⽂从实际应⽤出发,提出了⼀种⾼性能的服务器架构设计解决⽅案,并且详细探讨了各种服务器的功能,本⽂的最后给出了⼏个服务器之间数据通讯的关键流程,以图⽂并茂的⽅式解释各个服务器是如何协同⼯作的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。