棋牌類游戲常用架構:
?
?
我從事過4年的棋牌類游戲開發,使用過的架構大致如上,各模塊解釋如下。
LoginServer: 登陸服務器,主要負責player 的登陸請求,驗證player的合法性,為合法的player分配session,與cilent 采用短連接方式,可以有多個來進行負載均衡。驗證player通過后,LoginServer找到一個合適的GateWay發送給client。
?
GateWay: 網關服務器,有多個來做負載均衡,與client 使用長連接方式,client發送的消息都通過GateWay轉發給大廳服務器或游戲服務器,大廳服務器或游戲服務器返回給client的消息也都經過GateWay,充當游戲消息轉發的中轉站,防御網絡惡意攻擊。將來自不同游戲客戶端的消息格式轉換為系統內部統一處理的消息格式,系統處理完消息后,再將返回消息交給gateway轉化為客戶端對應的格式返回。
?
LobbyServer:大廳服務器,可以有多個,負責游戲大廳中功能,例如游戲桌數目,各游戲桌在線人數等等。
?
GameServer:游戲服務器,多個,不同的游戲有不同的游戲服務器,具體游戲的邏輯實現。
?
dbmgr:?? 數據服務器,所有需要持久的數據,都經過dbmgr與數據庫進行交互,dbmgr通過數據緩存,批量事務,本地持久等手段大大提高整體系統性能。對于一般同時在線只有幾千的系統dbmgr只需要1個則夠,對于超大型系統,玩家超多的系統,則可以使用分區方式,每一個區使用一個dbmgr,系統根據玩家所屬的區來選擇對應的dbmgr。