分布式服務器框架
框架簡介
-
此框架由三種服務器組成:
- n個
連接服務器
:負責處理客戶端的網絡鏈接,並轉發客戶端和邏輯服務器之間的消息。 - n個
邏輯服務器
:負責處理(由鏈接服務器轉發過來的)客戶端的網絡消息 - 1個
全局服務器
:負責處理全局邏輯 - 其實還額外需要一個神器:etcd,作為服務器框架中的
邏輯服務器
感知鏈接服務器
的新增和失效 - 無論拓撲圖請參考
架構圖
:
- n個
-
框架內置組件:
- 多連接ssdb客戶端
- redis/ssdb代理服務器
- 僅支持C++語言的RPC(支持protobuf類型消息,適合服務器之間業務開發,並支持異步回調)
既定規則(建議)
- 客戶端擁有最多兩個
邏輯服務器
:分別是Primay和Slave - 當客戶端鏈接某
鏈接服務器
會(自動)分配一個Primary類型的邏輯服務器
(且不會、也不能重設) - 客戶端的消息優先(轉到到)Slave處理
邏輯服務器
可自由設置客戶端的當前Slave- 當然,客戶端的Primay和Slave可以為同一個
邏輯服務器
- 實際項目中,您可以借助第三方負載均衡服務器來分配
鏈接服務器
的地址給客戶端. - 內置有
ssdb
客戶端和ssdb
代理服務器,如果你的應用需要數據庫,不妨一試。
使用方式
- 開發應用時,只需要關注
客戶端
和邏輯服務器
之間的消息設定,不需要考慮鏈接服務器
,且沒有任何(需要引入的)預設消息。 - 開發應用時,只需要分別實現
邏輯服務器
中的initLogicServerExt
函數 和 (可選)全局服務器
中的initCenterServerExt
函數 (通常進行消息handle注冊即可)。 - 作為示例
中心服務器
的擴展參考CenterServerExt.cpp邏輯服務器
的擴展參考LogicServerExt.cpp- 測試客戶端請看:SimulateClient.cpp