1)平台服
- 平台服务器定义
平台服务器一般都用于处理全局相关功能,涉及玩家登陆,角色唯一性认证,跨区,全区排行榜等。主要包括以下几种:
六、guild_server工会服务器
七、friend_server好友服务器
八、team_server队伍服务器
九、activity_server活动服务器
十、trade_server交易服务器
1)简单定义
用于管理限制交易会所、拍忙行的数据,商店的购买等数据
2)服务器备注
①个人每日限制、每周限制、终身限制放在逻辑服务器gs处理
②拍卖行等全区统一限制的东西,放在交易服处理
3)逻辑流程
①先判断有没有购买资格、有没有钱,符合不符合开商店的条件
②先扣钱,再触发购买的行为树节点事件
十一、service_manager_server服务管理服务器
- 定义
用于服务器的管理,重启和从共享内存restore恢复,当注册的服务器节点挂了,负责拉起相关的服务器节点
十三、account_server账号服务器
- 简单定义
登陆服务器进程,玩家登陆时首先连接account_server服务器。
十六、dbmanager_server管理dbc的中转服务器
- 简单定义
管理多个dbcache服务器,用于往mysql存数据,后期会根据一定规律将玩家、工会数据按照地域或创建先后顺序分配到不同的dbcache_server去存储
十七、global_server全局服务器
- 简单定义
全局服务器,处理所有区服的全局信息,比如处理所有区服的主播排名等
十八、match_server匹配服务器
十九、world_server世界服务器
二十、idip_server 补偿管理服务器
- 简单定义
idipserver:一个管理服务器,用来给玩家发邮件,补偿等特殊操作。
2)普通服
- 普通服务器定义
普通服一般都是涉及单个区服相关的,和其他区服往往是独立开来的,一般包括:
一、game_server逻辑服务器
- 定义
逻辑服务器,一般的需要即时反馈的逻辑放在这里处理(战斗相关的逻辑都可以放在这里) - 与其他服务器的区别
后期可能根据场景的不同或分线的不同,开多个逻辑服务器负载均衡游戏玩家在线的压力
二、gate_server网关服务器
- 简单定义
网关服务器进程,gatewayserver相当于游戏客户端与mmo服务器之间交换数据的桥梁,游戏客户端与mmo服务器中其他服务器进程交互都是通过gatewayserver进行转发的。网关服务器收到玩家的消息后,根据消息类型转发给对应的服务器进程,同理各个服务器进程也是先把消息发给网关服务器,然后再由网关服务器发给玩家。
三、mail_server邮件服务器
四、router_server路由服务器
五、scene_server场景服务器
- 简单定义
场景服务器进程,mmo服务器中主要的服务器进程,承担了大量的服务器端逻辑操作,比如玩家在游戏地图中移动,跳转地图,玩家PK,与npc的交互,怪物的攻击,移动等等。在场景服务器进程中存在一个场景玩家对象,该玩家对象身上又存了很多与玩家相关的数据与操作,比如装备及其装备的打造,升级;坐骑及其参战,休息;图鉴及其激活,升级等。 - 链接
传送门
十四、cache_server缓存服务器
1)简单定义
缓冲服务器,用于给客户端推送不同逻辑服务器上的数据,例如各种人物状态数据等
2)服务器备注
1)libevent配合redis完成异步命令输送和回调结果
十五、dbcache_server数据库管理服务器
1)简单定义
存储服务器进程,通过该服务器进程进行数据持久化操作,比如把数据存到mysql数据库。
2)服务器备注
1)mysql集群注意限频单database单表20M每秒输送数据,否则mysql有可能被打崩
3)相关思考
①有遇到面试说dbcache是dbmanager的子进程:
1、但是如果是子进程的话,那么这样只能部署在同一台机器上,而且得用到waitpid这个接口,要么屏蔽sigchld这个信号,要么用孙子进程去做,否则至少得阻塞1到2秒
2、但是如果不用子进程,用中心服务器去扩缩容的时候,得用脚本去启动这个进程,然后这个进程再去自动上报给DBManager,这样可以部署在不同物理机,但是1、增加了网络延时,2、需要对这个进程进行验证