一、 MMORPG特點(diǎn)
下面的所講述的三個(gè)特點(diǎn),給我們帶來(lái)了性能問(wèn)題,帶來(lái)了挑戰。我們最終形成的征途服務(wù)器分布式技術(shù)構架,是解決他們帶來(lái)的問(wèn)題,而不是繞過(guò)他們。
1. 實(shí)時(shí)的交互
電子游戲的交互的實(shí)時(shí)性不言而喻,MMORPG則帶來(lái)了更復雜的交互。無(wú)論是玩家與NPC還是玩家與玩家之間,當一個(gè)玩家發(fā)出指令,周?chē)耐婕叶紤⒓纯吹剿龀龅母淖?。玩家的忍受度基本都?00ms內。
2. 區域群集效應
一般來(lái)講MMORG都會(huì )有一個(gè)或者多個(gè)讓玩家聚集的功能區,從軟件開(kāi)發(fā)角度講這是業(yè)務(wù)的需求。
對服務(wù)器帶來(lái)的壓力我們做一個(gè)簡(jiǎn)單的測算:
每人做出1個(gè)事件的平均時(shí)間是T,并將結果發(fā)給可見(jiàn)范圍內的玩家,在單位時(shí)間T內,服務(wù)器的復雜度是O(n+n2),n是可見(jiàn)范圍內的玩家數量。換一個(gè)不嚴格的說(shuō)法,就是當你有n個(gè)人群聚在一起,你的服務(wù)器將會(huì )少上n2-n的不群聚的人。
所以區域群集效應對服務(wù)器性能帶來(lái)的降低是巨大的。
3. 更多的人在一起做更多內容的交互
跟MO游戲比較,MMO的游戲在一起交互的玩家大大增加。
跟其他類(lèi)型游戲比較,RPG的內容相對來(lái)說(shuō)要很多。
MMO和RPG元素放在一起,服務(wù)器要做的事情就是MMO的人數 x RPG的內容。
二、相對應帶來(lái)的關(guān)鍵問(wèn)題
1. 更多要處理的數據,更多要同步給用戶(hù)的數據復雜度是O(n )。
2. 當用戶(hù)聚集在一起,性能的下降是迅速的復雜度是O(n2)。這里的n不是總人數,而是聚集的人數。
三、要讓多人在一起互動(dòng),服務(wù)器需要解決上述2大問(wèn)題
即游戲數據的處理及同步
單臺服務(wù)器處理能力有限,所以分布式服務(wù)器技術(shù)是很自然的解決方案。圍繞上述兩個(gè)核心問(wèn)題,我們提出一些分布式服務(wù)器技術(shù)構架的具體解決方案。這些方案都是實(shí)際應用于征途服務(wù)器中。
a) 針對游戲數據處理
1. 將游戲世界按區域拆分到多個(gè)游戲服務(wù)器中,這些游戲服務(wù)器共同組建了一個(gè)整體的游戲世界,這些在一起的玩家可以很方便的互動(dòng)。
2. 當然數據同步也被游戲服務(wù)器分散承擔。
3. 帶來(lái)的問(wèn)題
3.1. 用戶(hù)基本狀態(tài)信息,比如是否登錄,目前在那個(gè)服務(wù)器。
3.2. 解決辦法是架設一個(gè)session 服務(wù)器。
b) 針對游戲數據同步
1. 為什么數據同步已經(jīng)有負載了,還要針對數據同步進(jìn)行負載均衡。
1.1. 我們要容納更多的玩家。
1.2. 隨著(zhù)人數增加,人數高峰的到來(lái),區域群集效應對性能影響突出。在實(shí)際情況中,總是某一個(gè)或幾個(gè)區域聚集的人特別多。因此帶來(lái)的性能問(wèn)題,無(wú)法通過(guò)劃分更細小的區域,增加游戲服務(wù)器來(lái)解決。
2. 另外從實(shí)際角度,我們也不能一味通過(guò)將游戲世界拆分成更多游戲服務(wù)器來(lái)解決。
2.1. 那會(huì )到導致服務(wù)器的浪費。
2.2. 從用戶(hù)體驗上講也不好,畢竟經(jīng)常從一個(gè)服務(wù)器跳轉到另一個(gè)服務(wù)器讓玩家感到麻煩。
2.3. 客戶(hù)端經(jīng)常重新連接也在一定程度上帶來(lái)了不穩定因素和性能下降。
3. 所以增加了gateway服務(wù)器,放置在游戲服務(wù)器的前端,將同步數據的工作交給他。
4. 大致工作原理及效果
4.1. 玩家平均的鏈接到gateway服務(wù)器。
4.2. 游戲服務(wù)器將用戶(hù)的位置同步到gateway服務(wù)器。
4.3. 理論上每臺gateway的同步負載為原來(lái)游戲服務(wù)器負載的S2分之一(S是gateway服務(wù)器的數量)。
c) 當形成如此的構架后,諸多功能可以合理的分配到各個(gè)服務(wù)器
1. 比如gateway服務(wù)器增加
1.1. 數據包的整合,加密,壓縮。
1.2. 數據包合法性,反外掛的檢測。
1.3. 其他與游戲相關(guān)性不大,但是很必要的功能。
2. 比如session服務(wù)器增加
2.1. 工會(huì )功能。
2.2. 聊天轉發(fā)。
2.3. 好友。
2.4. 其他非游戲區域性功能。
四、此種服務(wù)器分布式帶來(lái)的問(wèn)題和局限
諸多問(wèn)題和局限,導致運營(yíng)成本和開(kāi)發(fā)成本的增加,但是我們可以通過(guò)一些適當的手段規避或者減小這方面的風(fēng)險。
1. 不太適合服務(wù)器人數少的區,靈活性不夠,會(huì )造成浪費。虛擬化能解決此問(wèn)題。
2. 服務(wù)器之間的數據同步增加,內耗較多。程序開(kāi)發(fā)要做大量的優(yōu)化工作。
3. 游戲服務(wù)器的復雜度增加,開(kāi)發(fā)難度增大。做好封裝,開(kāi)發(fā)管理及對團隊的培訓。
五、游戲服務(wù)器分布式技術(shù)的發(fā)展趨勢
1. 給玩家帶來(lái)更好的用戶(hù)體驗,比如無(wú)縫體驗,更大的世界。
2. 游戲業(yè)務(wù)的分布,將業(yè)務(wù)剝離做負載均衡,比如,聊天,NPC。
3. 云計算。
六、只有分布式是不夠的
1. 良好的均衡技術(shù)構架是實(shí)現大容量游戲的前提,在實(shí)際開(kāi)發(fā)中的設計和優(yōu)化同樣非常重要。
2. 游戲設計的優(yōu)化,將游戲業(yè)務(wù)適當分散在不同的服務(wù)器。
3. 循環(huán)算法的優(yōu)化,一切性能問(wèn)題都在循環(huán)里。
4. 數據流量的優(yōu)化,不管是服務(wù)器之間的流量,還是服務(wù)器和客戶(hù)端的流量。
聯(lián)系客服