一種經典的分布式游戲服務器
整體
-
網關服務器(全局網關)-Gate
- 用于為客戶端提供統一的連接入口
- 為用戶分配登陸驗證服務器和連接服務器
-
登陸驗證服務器-LoginAuth
-
連接服務器(游戲網關)-Link
- 維持客戶端與服務端的長連接
- 轉發客戶端和服務端之間的消息
-
場景服務器
細節
- 用戶登陸時,會首先連接網關(http或者socket均可),網關通過rpc或者http請求驗證服務器完成驗證;驗證通過后獲得由網關分配的連接服務器信息,之后客戶端會斷開與網關服務器的連接,連接返回的連接服務器
- 一張游戲地圖與一臺獨立的場景服務器對應,場景不能進行分割.場景服務器負責維護場景中所有實體并驅動場景邏輯運轉.主要邏輯包括實體管理、消息服務、ai服務、aoi服務.可通過加入新的游戲場景的方法來分散用戶且一些和場景相關的服務器可通過獨立運行的方式進行水平擴展.另外對于跨場景的操作則是通過一個全局服務器來進行處理
- 聊天服務可與場景服務分離,通過一個獨立的服務器進行
- 尋路和副本組隊均可獨立出服務器進行
- 內部服務器之間可通過rpc進行調用
圖示
引用
思考
- 按照此種方式設計,如果要實現百萬人同時在線,則還是需要分服,因為此種設計場景是最小的單位;根據壓測算出一組服務器承載的壓力上限,然后根據導入服務器人數進行服務器規劃部署
- Gate、LoinAuth、Link等均可進行水平擴展
- 場景邏輯中的一些服務如尋路、副本等均可進行水平擴展
無縫大世界的游戲服務器
基本思想
- 整個服務器主體分為三層,NODE專注場景,OBJ專注玩家對象,GATE專注網絡。這樣的模型在無縫場景服務器中得到廣泛的應用

- 每臺 Node服務器用來管理一塊地圖區域,由 NodeMaster(NM)來為他們提供總體管理
-
玩家從一塊區域走向另外一塊區域
- 將地圖按照標準尺寸均勻切割成靜態的網格,每個格子由一個具體的Node負責,但是根據負載情況,能夠實時的遷移到其他 Node上。在遷移分為三個階段:準備,切換,完成。三個狀態由Node Master負責維護

類似引擎實現
-
bigworld、kbengine

- loginapp:登錄驗證、注冊、接入口;與客戶端的第一個連接點;dns負載均衡
- baseapp:與客戶端通訊的固定點(proxy/gate);與cellapp通訊的中介;用來處理無空間屬性的邏輯
- baseapp_mgr:管理所有baseapp及負載等
- cellapp:空間數據的處理
- cellapp_mgr:管理所有cellapp及負載等
- dbmrg:管理數據存儲等
- daemon:監視服務器進程等
引用
思考
- 比較廣泛的解決方案,但自實現難度較大,不建議使用
- 目前除了bigworld引擎,網易手游內部根據其架構實現了一個叫mobile_server的簡化版,有'亂斗西游'等成功產品
其他方案參考
NoahGameFrame
pomelo
-
LordOfPomelo
- 是一個基于Pomelo框架開發的分布式MMORPG游戲Demo

-
優缺點
- 采取了大量web服務器的思想,使用zk使一些全局單點做了高可用
- 使用node.js,小眾
引用
posted on 2017-03-06 14:18
landon 閱讀(4950)
評論(0) 編輯 收藏 所屬分類:
GameServer