RPG游戏经典的系统架构设计 :
bigword 游戏引擎就是使用这种架构,我认识的很多rpg游戏公司的同事也大致采用了这种架构方式。
loginapp : 登陆服务器,主要负责player 的登陆请求,验证player的合法性,为合法的player分配session,与cilent 采用短连接方式,可以有多个loginapp来负载均衡。验证player通过后,loginapp通过baseappmgr找到一个合适的baseapp发送给client。
baseapp: 我们可以叫做网关服务器,有多个来做负载均衡,与client 使用长连接方式,为player分配适合的cellapp,client发送的消息都通过baseapp转发给cellapp,cellapp返回给client的消息也都经过baseapp,充当游戏消息转发的中转站。 baseapp同时负责聊天模块。
cellapp : 可以叫游戏服务器或地图服务器,多个,负责具体游戏逻辑实现,与player进行游戏交互。
baseappmgr:管理网关服务器,只需要1个,或可以做主从备份方式。负责为player分配baseapp,并记录player所在的baseapp,cellapp踢客时先通知baseappmgr,然后baseappmgr找到对应的baseapp进行踢客。
cellappmgr: 管理游戏服务器,只需要1个,或可以做主从备份方式。负责为player分配合适的cellapp,并对cellapp进行管理。
dbmgr: 数据服务器,所有需要持久的数据,都经过dbmgr与数据库进行交互,dbmgr通过数据缓存,批量事务,本地持久等手段大大提高整体系统性能。对于一般同时在线只有几千的系统dbmgr只需要1个则够,对于超大型系统,玩家超多的系统,则可以使用分区方式,每一个区使用一个dbmgr,系统根据玩家所属的区来选择对应的dbmgr。
revivier: 监视器,可以监视所有服务器的运行状态,如有必要可以对服务器进行启动,关闭等各种管理,其功能可以理解为ice中间件中icegrid架构的icegridnode和 icegridregistry的进程管理功能
MessageLogger/statLogger: 日志服务器,统计服务器, 记录系统的日志,或进行必要的信息收集及统计,此模块视整个系统的必要性,可选。