KBEngine源碼:組件方案
阿新 • • 發佈:2018-08-04
位置 斷開 mod 均衡 架構 地方 自己 redis 常見用法
相對於skynet,KBEngine提供了完整的組件方案。
Loginapp
登錄驗證、註冊、Client的接入口。
Baseapp
- 通過Loginapp分配過來的Client會與Baseapp保持連接,完成客戶端與服務端的交互。
- 定時把Entity的數據保存進數據庫。
- Baseapp之間會進行互相備份,保證數據的安全。
- 災難恢復-當Baseapp發生問題(崩潰、斷開連接等)時,會自動進行恢復。
常見用法
Baseapp上不涉及與空間或位置相關的邏輯,所以腳本層通常會選擇在baseapp上實現如:社交系統、廣播聊天、排行、遊戲大廳等等邏輯系統。
BaseappMgr
協調所有Baseapp的工作,包括Baseapp負載均衡處理等。一個KBE架構中,只會出現一個BaseappMgr。
Cellapp
- 處理遊戲、空間或位置有關的邏輯
- 空間數據管理,如增加幾何映射、設置空間數據
- 抽象概念-Space空間的創建和摧毀。
常見用法
- Navigate導航
- AI邏輯
- 戰鬥系統
- View視圖的控制
- 可以增加一個副本或者房間
CellappMgr
負責協調所有Cellapp的工作,包括負載均衡處理等。一個KBE架構中,只會出現一個CellappMgr。
DBMgr
數據庫管理器,管理與底層數據庫的通訊。可以連接Mysql、Redis等多種數據庫,並且能連接多臺數據庫進行負載均衡。
DBMgr最多可以掛65535個數據庫,這些數據庫可以在不同硬件上也可以在相同的機器上,api使用時,通過Entity.writeToDB等接口和一定的算法,指定存儲到某個地方,這樣就可以平均分配到不同的數據庫上了。同時,Mysql等數據庫都有自己的分庫分表機制,可以共同協助完成這項工作。
作用
- 對數據庫的訪問。
- 高性能多線程的數據存取。
默認使用Mysql作為數據庫。同時,一個KBE架構中,只會出現一個DBMgr。
Machine(信息中心)
抽象出來的一個服務端硬件節點(一臺硬件服務器只能存在一個這樣的進程)。
- 接收遠程指令,處理本機上的組件啟動與關閉;
- 通知服務器群組各個進程的存活狀態;
- 提供本機上運行組件的接入口;
- 收集當前機器上的一些信息,如:CPU、內存、帶寬等。
工具組件:
Interfaces
- 快速接入第三方計費、第三方賬號、第三方數據
- 快速與運營系統耦合
多臺機器下可以共同一個Interfaces。
Logger
日誌服務器。收集和備份各個組件的運行日誌。
參考:
cbe引擎概覽
KBEngine源碼:組件方案