1. 程式人生 > >KBEngine源碼:組件方案

KBEngine源碼:組件方案

位置 斷開 mod 均衡 架構 地方 自己 redis 常見用法

相對於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

日誌服務器。收集和備份各個組件的運行日誌。

參考:

cbe引擎概覽

KBEngine源碼:組件方案