服務端開發筆記一:伺服器架構探索,服務端架構
一 背景
在網易的第一個項目《惡魔不要啊》到現在基本結束了,馬上要開新項目了。
下一個項目在開啟之前打算先做一個測試專案,因為目下HTML5遊戲特別火,下個項目需要支援HTML5。
目前國內可以選擇的有cocos2d-js和egret,這個測試專案同事有這兩個引擎開發,對比一下兩個引擎,看看選哪個比較合適。
之前一直做前端,下個項目打算轉後端了,下面是我們這個測試專案用的伺服器架構。
二 gate伺服器
gate伺服器有兩種結構都可以接受。
1 不分區:完成登入認證,通過路由,返回一個connecter伺服器;
2 分區:返回所有connector伺服器及其線上人數給前端,前端選擇不同的區。
之後用戶端會斷開此連結,連結connector伺服器。
三 connecter伺服器
維護用戶端和伺服器之間建立串連。
中轉用戶端和服務端之間的訊息。
如果是分區的結構,還需要做登入認證。
四 auth伺服器
登入伺服器主要有以下幾個功能:
1 註冊
2 登入驗證
五 logic伺服器
1 logic伺服器
邏輯伺服器是遊戲中的邏輯處理的介面,一個很多組伺服器。
一般有情境伺服器、聊天伺服器、組隊伺服器、排行伺服器等等。
2 domain
處理伺服器相關邏輯運算
六 data伺服器
1 實體entity
載入到記憶體中的遊戲資料。
如果entity中的資料發生改變,會同步到用戶端和資料庫。
2 data伺服器
同步實體和資料庫中的資料。
用的是網易的開原始伺服器引擎pomelo,有興趣的可以參考下。
----------------------------------------------
2015年4月29日更新
----------------------------------------------
後來發現,對於上面二、三種提到的分區方式,不是很合理。
這樣的結構所有的資料都是在同一資料庫中,需要對每個玩家添加一個區欄位,來標記所選擇的伺服器。
對於指定服的操作需要根據區欄位,檢索出所有的玩家,效率太低。
目前考慮到的可行方法是,另外在架設一台提供伺服器列表的服,分區通過不同的gate伺服器實現。