前言
這段時間有空,正好有時間總結之前的東西。
框架
最早做棋牌,cpp的框架,後來又接觸到了nodejs的,golang的框架,也看了一些網上開源的遊戲框架,記錄總結一下。
框架圖:
-
LogicManger:這個框架是支持分區的,每個 logicManager Server管理着一組gate Server 和一組 GameLogic Server,代表一個區。LogicManager會根據遊戲類型和分發策略把不同用戶分到不同的GameLogic服務器上。
-
GameLogic:遊戲邏輯處理服務器, 一個gameLogic 可以是支持一種遊戲,也可以支持多種,logic Server啓動後連接logicManager,註冊自己的信息,包括可以支持哪種遊戲等信息。
-
Gate: 是網關,直接和client連接,長連接。屏蔽後面的GameLogic,和LogicManager等服務器,保存用戶socket等信息,根據用戶狀態和消息號區分客戶端發過來的消息,分發到不同的服務器上(GameLogic和 logicManager)。
-
login: 登錄服務器,主要處理用戶登錄,可以多個,直接連center服務器。login服務器沒有具體處理邏輯,它會把用戶登錄信息轉發給center服務器,然後再把消息回傳給client服務器。收到其他消息會直接斷開client連接。
-
center: 中心服務器,主要是管理多區manger的。保存用戶基本信息,同時同步不同區用戶信息變化。LogicManager會在center服務器註冊自己的信息,包括manager管理的gate的id,ip:port 。
-
db: db數據庫服務器,連接數據庫,賦值讀寫數據庫。
功能模塊
接下來會通過細分講解每個部分,因爲每個服務器基礎功能是通用的, 所以會先講解通用基礎模塊,然後在每個服務器依次的講解。
- 通用基礎模塊,分爲 網絡模塊,數據庫模塊
- 服務器模塊, login,gate,logic,manager ,center,db, 緩存模塊
通用基礎模塊
網絡模塊
網絡模塊:底層用的是boost asio 網絡模塊。LSocket 類是對asio api的封裝。
關於接收到報文以後的處理流程會在消息協議的部分分析。