bookmark_border一种典型的休闲游戏服务端架构简介

服务端整体介绍

图片1.png

图片2_iqiyi.png

服务端程序启停

服务器程序启动先后顺序依次是:proxycontrolDBlobbyloginnatrecordgameplatform。各个模块启动后,都会向control发送注册请求。各个模块关闭后,会向control发送关闭请求。

图片3.png

服务端各模块详细说明

ProxyServer

Proxy负责服务端组件之间的消息转发。Proxy本身维护一个与Control之间的TCP长连接。除ProxyControl之外的其他服务端组件(NATLoginLobbyDBServerGameServer)都会维护一个与 Proxy之间的TCP长连接。

ProxyControl之外的其他服务端组件之间相互不知道对方的存在,不直接通信,它们之间通过Proxy中转消息。

如:LoginServer接收到Client的登录请求时,LoginServer会通过Proxy中转向DBServer发送用户登录处理请求,由DBServer完成到DB中查询校验登录信息的处理;DBServer完成用户登录信息的校验处理后,将校验结果通过Proxy中转返回给LoginServer,然后LoginServer将登录结果返回给 Client

 

ControlServer

Control是整个服务端的控制管理中心,control服务内存中管理维护所有其他服务端组件(Proxy除外)的信息和状态。

 

DBServer

DBServer主要作为操作数据库(简称DB)的一个“代理”服务器,异步处理其他服务端组件的DB操作请求。比如:除了启动时从DB加载相关配置项,GameServer在需要操作DB时,都会向DBServer发送相应的DB操作请求;DBServer完成实际的DB查询操作后,将查询结果返回给GameServer 

另一方面,DBServer提供了对部分频繁访问的数据的缓存功能,比如:在一定时间内登录用户的信息会缓存在DBServer内,用户登录时,首先会在缓存中查找,查找不到时才会去查询DB

LobbyServer

负责管理游戏大厅配置、游戏房间信息。Client进入大厅后,当进入具体某个游戏房间时,client会向LobbyServer请求对应的GameServer地址信息。

 

LoginServer

LoginServer负责处理Client的登录请求。如果Client登录成功,LoginServer会为Client指定并下发LobbyServer地址信息。

 

NATServer

NATServer一定程度上相当于一个负载均衡器,客户端连接NATServer后,NATServer会为Client 选择指定其登录连接的LoginServer地址。这样可以实现简单的负载分担,并具有一定的高可用性。

RecordServer

 RecordServer负责游戏记录的保存与查询请求。

GameServer

GameServer即游戏服务器,负责实现具体的游戏逻辑,处理玩家的进入游戏房间、上桌、坐下、站起、举手准备等。每一个游戏都是一个单独的库,由GameServer加载管理,当玩家从大厅进入到某个游戏后,GameServer负责客户端和相应游戏库之间的交互。