移动端网络游戏主要分为两种类型,一种是弱联网的,一种是强联网的。
弱联网的游戏,主要是指对游戏数据实时性要求比较低的联网游戏,比如卡牌游戏,休闲游戏等。
强联网的游戏,主要是指对游戏数据实时性要求比较高的联网游戏,比如MMORPG,ARPG等。
要求客户端与服务器之间进行实时通信。
在这里主要是跟大家讨论一下如何架设具有负载均衡的游戏服务器,对于游戏服务器开发,自然而然就会涉及到分区,跨服,并服等需求,针对这些需求我们该如何去架设服务器?
以下是我们服务器架设示意图,供大家参考:
首先我们先绘制出游戏服务器分布图:
通过上图,我们可以看出,服务器之间的数据交换,该游戏服务器主要是由LoginServer,GateSever,GameServer,DBServer,CenterServer组成。
负载均衡主要是通过,GateServer完成的,就是说当玩家登陆的时候,GateServer会根据GameSever运行情况从里面找出一个相对空闲的GameServer分配给玩家。GateServer与GameServer之间是多对多的关系。换句话说就是GateServer当掉只会影响局部GameServer中玩家的人数,不影响全局。上图显示的只是软件的服务器架构,不是硬件的,意思是说,上面的布局可以在一台硬件服务器上配置完毕,也可以在多台服务器上配置,他们之间的配置是通过配置表完成的,样式如下:
以上是中心服务器配置,那下面是GameServer服务器配置:
数据的传递流程是这样的:
用户发送消息到LoginServer,LoginServer确认消息是否正确,如果正确就发送到CenterServer,来获取GateServer的ip地址和端口信息,接着说消息到达CenterServer后,CenterServer会选取负载最低的GateServer的ip地址和端口信息发给LoginServer,LoginServer发送给客户端,客户端接收到消息后链接GateServer,并发送消息到GateServer,GateServer把用户id保存起来并发送给CenterServer,然后通过GateServer分配用户到负载较小的GameServer、FightServer上面,并记录用户分派的服务器,将已登录用户收编发送消息给GateServer。然后GateServer会发消息给GameServer,GameServer会去DBServe查证,用户信息是否合法,整个流程就是这样子的。
服务器的架构一般都是这个样子。