相对于skynet,KBEngine提供了完整的组件方案。
Loginapp
登录验证、注册、Client的接入口。
Baseapp
- 通过Loginapp分配过来的Client会与Baseapp保持连接,完成客户端与服务端的交互。
- 定时把Entity的数据保存进数据库。
- Baseapp之间会进行互相备份,保证数据的安全。
- 灾难恢复-当Baseapp发生问题(崩溃、断开连接等)时,会自动进行恢复。
常见用法
Baseapp上不涉及与空间或位置相关的逻辑,所以脚本层通常会选择在baseapp上实现如:社交系统、广播聊天、排行、游戏大厅等等逻辑系统。
BaseappMgr
协调所有Baseapp的工作,包括Baseapp负载均衡处理等。一个KBE架构中,只会出现一个BaseappMgr。
Cellapp
常见用法
- Navigate导航
- AI逻辑
- 战斗系统
- View视图的控制
- 可以增加一个副本或者房间
CellappMgr
负责协调所有Cellapp的工作,包括负载均衡处理等。一个KBE架构中,只会出现一个CellappMgr。
DBMgr
数据库管理器,管理与底层数据库的通讯。可以连接Mysql、Redis等多种数据库,并且能连接多台数据库进行负载均衡。
DBMgr最多可以挂65535个数据库,这些数据库可以在不同硬件上也可以在相同的机器上,api使用时,通过Entity.writeToDB等接口和一定的算法,指定存储到某个地方,这样就可以平均分配到不同的数据库上了。同时,Mysql等数据库都有自己的分库分表机制,可以共同协助完成这项工作。
作用
- 对数据库的访问。
- 高性能多线程的数据存取。
默认使用Mysql作为数据库。同时,一个KBE架构中,只会出现一个DBMgr。
Machine(信息中心)
抽象出来的一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。
- 接收远程指令,处理本机上的组件启动与关闭;
- 通知服务器群组各个进程的存活状态;
- 提供本机上运行组件的接入口;
- 收集当前机器上的一些信息,如:CPU、内存、带宽等。
工具组件:
Interfaces
- 快速接入第三方计费、第三方账号、第三方数据
- 快速与运营系统耦合
多台机器下可以共同一个Interfaces。
Logger
日志服务器。收集和备份各个组件的运行日志。
组件相关路径
脚本:kbengineassetsscripts
源码:kbenginekbesrcserver
参考: