游戏服务器——中心服

一、中心服介绍

中心服用于应用统一调度中心和数据脚本发放中心。

一 服务器信息调度:DB Server第一个启动,随后中心服启动,中心服启动前会和DB Server进行连接,之后其他服务器(网关服、登陆服、广场服、游戏服、Web Server)启动前都会和中心进行连接,当中心服收到别的服务器连接时,会将新连接的服务器信息广播给所以已经连接的服务器。网关服务器就是通过中心服广播的(网关服、登陆服、广场服、游戏服、Web Server)信息在必要的时候和他们进行连接。

二 数据脚本发放:网站后台配置修改同步之后,网站会通知Web Server,Web Server 会将需要同步数据id发给中心服,中心服去DB中重新读取配置,并给配置发送给广场服/游戏服。

 

二、服务器启动流程

1、启动准备

  1. 初始化网络库
  2. 监听事件注册

2、开始启动

  1. 创建日志、定时器
  2. 创建网络监听服务并启动监听
  3. 挂接逻辑事件(用户线程读取网络数据 )
  4. 创建DB服代理服务(连DB服并进行消息交互)
  5. 加载插件
  6. 创建守护中心(与守护中心服连接,用于服务器拉起)

3、启动流程图

 

4、补充说明

1、2.5中【加载插件】中心服目前只有一个配置读取插件,由于读取游戏相关的各种配置,并将其发送给广场服/游戏服

 

三、中心服与其他服务器之间消息交互

  1. 中心服成功启动
  2. 其他服务器(网关服、登陆服、广场服、游戏服、Web Server)启动时会主动连中心服,连接成功之后,会将自己的服务器信息发生给网关服。
  3. 网关服收到新连接服务器信息之后会将该信息广播给所以连接的客户端(其他服务器)当后台配置同步时,后台网站会将更新的配置id,通过Web Server转发给中心服,中心服去DB取对应配置,并转发给需要服务器。
  4. 当有服务器启动并向中心服发送登录信息时,中心服会将该服务器需要的配置信息发生给该服务器。

 

四、类图

可以将网关服划分为四个模块。

4.1 DB服客户端代理

4.1.1 功能

  • 与DB服进行连接
  • 将中心服需要执行的db请求通过DB服客户端代理发送给DB服(DB服执行db请求,并返回结果)
  • 接收DB服发送回来的db请求执行结果,并将结果转发给对应接收返回结果的接口

4.1.2 类

VersibuleClient:和db服连接,将db请求发送给db服,接收db请求返回结果,并转发返回结果给对应接口

接口定义:

4.2 DB服客户端代理

4.2.1 功能

  • 接收客户端连接(网关服、登录服、广场服、游戏服、Web服)。
  • 保存其他服务器连接成功发送过来的服务器信息,并为新连接的服务器设置唯一的服务器id。
  • 将其他服务器信息发送给新连接的服务器,并将新连接成功的服务器信息广播给已经连接成功的服务器。
  • 服务器之间消息转发。

4.2.2 类

CConectionEventHandler:中心服会为每一个连接对象创建一个CConectionEventHandler对象,并记录连接服务器信息。CConectionEventHandler用于和连接的客户端进行通信,当收到登录消息会将已经连接的所有服务器信息发生给新连接的客户端,并将新连接的服务器消息广播给所有连接的服务器。

4.3 插件

4.3.1 功能

  • 一个插件负责一个功能模块
  • 支持插件添加和删除
  • 每个插件都继承一个通用的IPlugin接口,以及各个模块根据自己的需求定义的接口(例如:IDBConfigPlugin)。
  • IPlugin接口中定义客户端连接通知、db返回等接口函数用于插件可能需要用到的常见处理逻辑。

4.3.2 类

  • PluginItem:用于记录插件信息(插件名称、句柄、插件指针),通过添加或删除插件id枚举对插件添加或删除。
  • IPlugin:每个插件都必须继承的接口,定义有一些通用方法接口
  • IDBConfigPlugin:这是一个具体插件接口,它会继承IPlugin,并定义该插件自己需要的接口。
  • CDBConfigPlugin:这是一个具体的插件,用于读取后台配置,并将配置发送给需要的服务器。

接口定义:

4.4 配置读取和分发

4.4.1 功能

  • 中心服启动会向数据库请求所有配置信息,并将配置发送给需要的服务器
  • 当收到其他服务器连接,会将这个服务器需要的配置发送给它
  • 当收到网站配置刷新请求,会重新请求需要刷新的配置,并将最新的配置发送给需要的服务器

这是CDBConfigPlugin插件中管理配置功能。

4.4.2 类

  • IConfig:配置接口
  • CConfigBase<CONFIGTYPE type>:公共方法:创建和发送
  • 各种配置类:用于具体配置读取和发送给需要的服务器。

接口定义:

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值