KBEngine源码:组件方案

相对于skynet,KBEngine提供了完整的组件方案。

Loginapp

登录验证、注册、Client的接入口。

 

Baseapp

  1. 通过Loginapp分配过来的Client会与Baseapp保持连接,完成客户端与服务端的交互。
  2. 定时把Entity的数据保存进数据库。
  3. Baseapp之间会进行互相备份,保证数据的安全。
  4. 灾难恢复-当Baseapp发生问题(崩溃、断开连接等)时,会自动进行恢复。

常见用法

Baseapp上不涉及与空间或位置相关的逻辑,所以脚本层通常会选择在baseapp上实现如:社交系统、广播聊天、排行、游戏大厅等等逻辑系统。

 

BaseappMgr

协调所有Baseapp的工作,包括Baseapp负载均衡处理等。一个KBE架构中,只会出现一个BaseappMgr。

 

Cellapp

  1. 处理游戏、空间或位置有关的逻辑
  2. 空间数据管理,如增加几何映射、设置空间数据
  3. 抽象概念-Space空间的创建和摧毁。

常见用法

  1. Navigate导航
  2. AI逻辑
  3. 战斗系统
  4. View视图的控制
  5. 可以增加一个副本或者房间

 

CellappMgr

负责协调所有Cellapp的工作,包括负载均衡处理等。一个KBE架构中,只会出现一个CellappMgr。

 

DBMgr

数据库管理器,管理与底层数据库的通讯。可以连接Mysql、Redis等多种数据库,并且能连接多台数据库进行负载均衡。

DBMgr最多可以挂65535个数据库,这些数据库可以在不同硬件上也可以在相同的机器上,api使用时,通过Entity.writeToDB等接口和一定的算法,指定存储到某个地方,这样就可以平均分配到不同的数据库上了。同时,Mysql等数据库都有自己的分库分表机制,可以共同协助完成这项工作。

作用

  1. 对数据库的访问。
  2. 高性能多线程的数据存取。

默认使用Mysql作为数据库。同时,一个KBE架构中,只会出现一个DBMgr。

 

Machine(信息中心)

抽象出来的一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。

  1. 接收远程指令,处理本机上的组件启动与关闭;
  2. 通知服务器群组各个进程的存活状态;
  3. 提供本机上运行组件的接入口;
  4. 收集当前机器上的一些信息,如:CPU、内存、带宽等。

 

工具组件:

Interfaces

  1. 快速接入第三方计费、第三方账号、第三方数据
  2. 快速与运营系统耦合

多台机器下可以共同一个Interfaces。

 

Logger

日志服务器。收集和备份各个组件的运行日志。

 

组件相关路径

脚本:kbengine\assets\scripts

源码:kbengine\kbe\src\server

 

参考:

cbe引擎概览

 

 

posted @ 2018-08-03 23:43  _raindrop  阅读(780)  评论(0编辑  收藏  举报