原文地址:https://blog.csdn.net/erlib/article/details/24302385
一種簡單實用的網(wǎng)絡(luò)游戲服務(wù)器架構(gòu)
下圖中每個方框表示一個獨立的進程APP組件醉锅,每個服務(wù)進程如果發(fā)生宕機會影響部分用戶,整體服務(wù)但不會全部中斷。在宕機進程重啟后摸吠,又可以并入整體巢寡,全部服務(wù)得以繼續(xù)阱表。
gls:game login server腐晾,游戲登錄服務(wù)器鸭蛙,某種程序上较屿,其不是核心組件隧魄,gls調(diào)用外部的接口,進行基本的用戶名密碼認證隘蝎。此外需要實現(xiàn)很多附屬的功能:登錄排隊(對開服非常有幫助)购啄,GM超級登錄通道(GM可以不排隊進入游戲),封測期間激活用戶控制嘱么,限制用戶登錄狮含,控制客戶端版本等。
db:實質(zhì)上是后臺sql的大內(nèi)存緩沖曼振,隔離了數(shù)據(jù)庫操作几迄,比較內(nèi)存中的數(shù)據(jù),只把改變的數(shù)據(jù)定時批量寫入sql冰评。系統(tǒng)的算法映胁,開發(fā)穩(wěn)定性都要求非常高。
center:所有組件都要在這里注冊甲雅,在線玩家的session狀態(tài)都在這里集中存放解孙,和各組件有心跳連接。所有對外的接口也全部通過這里抛人。
角色入口:玩家登錄游戲后的選擇角色
gs:game server弛姜,最核心組件,同一地圖妖枚,所有游戲邏輯相關(guān)的功能廷臼,都在這里完成。
gate:建立和用戶的常鏈接盅惜,主要作sockt轉(zhuǎn)發(fā)中剩,屏蔽惡意包,對gs進行保護抒寂。協(xié)議加密解密功能结啼,一個gate共享多個gs,降低跳轉(zhuǎn)地圖連接不上的風險屈芜。
IM郊愧,關(guān)系朴译,寄售:表示其它組件,負責對應(yīng)的跨地圖發(fā)生全局的游戲邏輯属铁。
另一個架構(gòu)圖
1- 這是一條WebService的管道眠寿,在用戶激活該區(qū)帳號,或者修改帳號密碼的時候焦蘑,通過這條通道來插入和更新用戶的帳號信息盯拱。
2- 這也是一條WebService管道,用來獲取和控制用戶該該組內(nèi)的角色信息例嘱,以及進行付費商城代幣之類的更新操作狡逢。
3- 這是一條本地的TCP/IP連接,這條連接主要用來進行服務(wù)器組在登陸服務(wù)器的注冊拼卵,以及登陸服務(wù)器驗證帳戶后奢浑,向用戶服務(wù)器注冊帳戶登陸信息,以及進行對已經(jīng)登陸的帳戶角色信息進行操作(比如踢掉當前登陸的角色)腋腮,還有服務(wù)器組的信息更新(當前在線玩家數(shù)量等)雀彼。
4- 這也是一條本地TCP/IP連接,這條連接用來對連接到GameServer的客戶端進行驗證即寡,以及獲取角色數(shù)據(jù)信息徊哑,還有傳回GameServer上角色的數(shù)據(jù)信息改變。
5- 這條連接也是一條本地的TCP/IP連接嘿悬,它用來進行公共信息服務(wù)器和數(shù)個游戲服務(wù)器間的交互实柠,用來交換一些游戲世界級的信息(比如公會信息,跨服組隊信息善涨,跨服聊天頻道等)窒盐。
6- 這里的兩條連接,想表達的意思是钢拧,UserServer和GameServer的Agent是可以互換使用的蟹漓,也就是玩家進入組內(nèi)之后,就不需要再切換Agent源内。如果不怕亂套葡粒,也可以把登陸服務(wù)器的Agent也算上,這樣用戶整個過程里就不需要再更換Agent膜钓,減少重復(fù)連接的次數(shù)嗽交,也提高了穩(wěn)定性。(畢竟連接次數(shù)少了颂斜,也降低了連不上服務(wù)器的出現(xiàn)幾率)
在這個架構(gòu)里面夫壁,GameServer實際上是一個游戲邏輯的綜合體,里面可以再去擴展成幾個不同的邏輯服務(wù)器沃疮,通過PublicServer進行公共數(shù)據(jù)交換盒让。
UserServer實際上扮演了一個ServerGroup的領(lǐng)頭羊的角色梅肤,它負責向LoginServer注冊和更新服務(wù)器組的信息(名字,當前人數(shù))邑茄,并且對Agent進行調(diào)度姨蝴,對選擇了該組的玩家提供一個用戶量最少的Agent。同時肺缕,它也兼了一個角色管理服務(wù)器的功能左医,發(fā)送給客戶端當前的角色列表,角色的創(chuàng)建搓谆,刪除炒辉,選擇等管理操作豪墅,都是在這里進行的泉手。而且,它還是一個用戶信息的驗證服務(wù)器偶器,GameServer需要通過它來進行客戶端的合法性驗證斩萌,以及獲取玩家選擇的角色數(shù)據(jù)信息。
采用這種架構(gòu)的游戲屏轰,通常有以下表現(xiàn)颊郎。
1- 用戶必須激活一個大區(qū),才能在大區(qū)內(nèi)登陸自己的帳號霎苗。
2- 用戶啟動客戶端的時候姆吭,彈出一個登陸器,選擇大區(qū)唁盏。
3- 用戶啟動真正的客戶端的時候内狸,一開始就是輸入帳號密碼。
4- 帳號驗證完成之后厘擂,進行區(qū)內(nèi)的服務(wù)器選擇昆淡。
5- 服務(wù)器選擇完成之后,進入角色管理刽严。同時昂灵,角色在不同的服務(wù)器里不能共享。