摘要:首先分析了多人在線角色扮演網絡游戲(Massively Multiple Online Role Play Game,以下簡稱MMORPG)兩大架構P2P(Peer to Peer)和C/S(Client/Server)的利弊,指出C/S被廣泛采納的理由。接著分析了MMORPG的特點,據此提出基于C/S結構的網絡游戲服務端所滿足的技術指標。最后在介紹了基于cell和基于服務的服務器端架構后給出MMORPG服務端的總體設計方案。
關鍵詞:MMORPG;網絡游戲;架構
中圖分類號:TP309.05文獻標識碼:A文章編號:1009-3044(2008)12-20ppp-0c
Architecture Analysis of Massively Multiple Online Role Play Game
LU Song-chao
(College of Software Engineering Southeast University,Nanjing Jiangsu,210096)
Abstract:Firstly analysis the pros and cons of the two architectures for MMORPG, P2P based and C/S based, indicates why C/S based architecture has been widely adopted. After analysis the characteristic of MMORPG, the drawn conclution is that the server side architecture should meet some standards in order to satisfy the quality demands of MMORPG. At last, the cell-based and server-based server side architecture are introduced, and a proposed solution is given for the server side architecture of MMORPG.
Key words:MMORPG;Online Game;Architecture
1 引言
近幾年來,網絡游戲(以下簡稱網游)在互聯網應用中可謂異軍突起,成為一個炙手可熱的新星產業。網游出現至今,角色扮演游戲(MMORPG)一直是個主流游戲類型。主要原因還是因為擁有豐富的交互體驗,特別是玩家之間的互動、角色扮演的特性在MMORPG這種游戲類型中最能得到豐富的表現。隨著越來越多的專業游戲開發商和發行商介入網游,一個規模龐大、分工明確的網游產業生態環境已經形成。
網游作為一種產業,在其發展的過程中也給互聯網技術帶來了新的挑戰。在網游所構筑的虛擬世界里,大量并發的在線玩家一起時刻改變著整個虛擬世界的狀態。所以如何從技術上保證網游的實時性和QoS(Quality of Service)是一個很重要的研究課題。
本文針對MMORPG網游的特點,分析當前流行架構的利弊,給出了一個綜合利用負載平衡,服務器集群,軟件模塊
分割等技術實現的網游架構。
2 MMORPG網游的架構比較
從總體上來講,目前網游流行的架構還是經典的C/S結構,一個網游是由服務器端和若干個客戶端所組成的。C/S架構的缺點在于客戶端和服務端的高度非對稱性,這導致服務端的負載過大。
所以目前的研究趨勢是利用P2P技術[1]來解決C/S結構的弊端,因為P2P技術擁有對等計算、協同工作和規模可伸縮的優點。但是基于P2P結構只是停留在實驗室,并沒有被工業界所采納,其原因是:首先從商業的角度上來說,P2P架構不能使網游的運營商對游戲進行集中控制,且盈利模式受到限制,在沒有經濟利益的驅動下網游的大規模發展必然受到限制。此外P2P架構較C/S存在更大的安全隱患,加上P2P缺少C/S結構中很容易實現的IP多播技術,使得P2P的架構消耗過多的網絡帶寬。
也有人研究綜合利用C/S和P2P技術的解決方案[2],但是從現實的角度來說,還是采用C/S結構比較利于網游這個產業的運營和發展。
網游系統結構中的另一個重要考慮因素就是如何存儲或者說持久化游戲的狀態,目前主要采用的方法有鏡像存儲和單一數據存儲陣列。鏡像存儲方案如圖1所示,每個數據庫服務器存儲著游戲狀態的一個備份,服務器端可以
采用就近原則來選擇一個數據服務器來進行數據的持久化。這種方案的弊端在于在維護多個數據備份的復雜性。對于網游這種實時性要求比較高的計算環境,采用鏡像存儲方案是不大可行的,所以一般采用單一的數據存儲陣列,如圖2所示。


綜上所述,從商業和技術的角度來講網游的總體架構一般采用C/S結構,數據持久化采用單一的數據存儲陣列。而在C/S結構中,主要待解決的問題就是如何降低大量客戶端對服務器端的負載問題,以保證游戲運營的質量。
3 MMORPG網游的特點和服務端的技術指標
3.1 MMORPG網游的特點
在C/S結構的網游中,服務端保存了整個虛擬游戲世界的各種數據,客戶端則保存了個人在虛擬世界里的一個視圖,客戶端和服務端頻繁交互改變著這個虛擬世界的各種狀態。C/S結構的MMORPG網游具有如下的特點:
(1)非對稱性
文獻[3]對著名的網游LINEAGE 2的流量進行了分析,最后得出如下結論:網游的通信流量中上行報文和下行報文是高度非對稱的,下行報文的平均包大小是上行報文的15倍多,下行報文中數據部分占整個通信流量的97.6%,而上行報文中的數據部分只占了22.9%,下行報文的帶寬利用率是上行的10倍。所以說這種結構的網游是非對稱的。
(2)高度的實時性
網游中每個客戶端的操作都會改變整個虛擬世界的狀態,服務端收到客戶端的請求后必須及時的通過廣播或多播的方式將虛擬世界某個狀態的改變發送到其他客戶端,以保持整個游戲狀態的一致性,所以說網游所構筑的虛擬世界是高度實時的。
(3)狀態的不確定性
股市是不可預知,一個學富五車的經濟學家和一個只有小學學力的人去炒股的結果很有可能是經濟學家虧本而那個只上過小學的人則會賺錢。同樣,網游中虛擬世界的狀態也是無法確定的,這是因為每個玩家都有各自不同的習慣和行為方式。這使得很難預期這些玩家會對這個虛擬世界做些什么操作。
在C/S的結構里面,要能夠應對上述MMORPG的特點,必須能夠設計出滿足一定指標的服務端架構,下面就這個服務端的指標做具體討論。
3.2 MMORPG網游服務端設計的技術指標
(1)可伸縮性
網游客戶端的數目是不確定的。一個網游在開始運營階段,玩家數目可能很少,但是一旦該游戲流行起來,玩家的數目就會爆炸,有可能呈指數上升。作為服務端,必須能夠提供一種能夠很好的應付這種情況的機制,也就是要具有可伸縮性,當玩家數目增多時通過措施(比如增加服務器數量)來保持游戲的運營質量。
(2)高可用性
和互聯網的電子商務平臺一樣,MMORPG網游的盈利必須通過不間斷的運營游戲平臺來獲得利潤。服務端長時間的宕機會給運營商帶來不可估量的經濟損失。所以在設計網游服務端的時候必須保持一定的冗余來滿足高可用性。
(3)負載均衡
目前服務端多采用集群技術。所謂集群,是指一組具有相同功能的計算機,它們作為一個整體向用戶提供一組網絡資源。當集群中的一個系統出現故障后,別的系統可以代替它來繼續服務。集群系統的關鍵技術就是負載平衡。這方面技術現在已經比較成熟,本文采用LVS[4]。下面對服務端的架構作詳細分析。
4. MMORPG網游服務端架構的解決方案
4.1 服務端的架構分析
服務器端通常都是采用集群技術,服務端的集群一般有兩種方案:
(1)基于cell的架構。
在這個架構中,每個cell都在不同的物理服務器上運行完全一樣的游戲,但是每個cell都是負責承載不同的游戲場景區域的游戲邏輯,如圖3所示。這種劃分的要解決的重要問題就是如何保持玩家跨越游戲不同場景區域時的無縫連接。有關這方面的課題已經有不少的方案,可以參考文獻[4]。

(2)基于服務的架構。
這種方案將整個游戲作為一個單一的場景來處理,但可以根據處理數據、邏輯的相關性來劃分集群組內各個服務器的工作任務。例如:戰斗服務器專門處理客戶端的戰斗請求、物品服務器處理所有物品相關的邏輯、工會服務器負責游戲中所有工會的操作,等等。這樣劃分的好處是使得邏輯處理的并發有了可能。游戲服務端可以同時處理兩個不同玩家的戰斗和工會活動。如圖4所示。

4.2 結合基于cell和基于服務的設計方案
針對上文提到的基于C/S結構的MMORPG網游的特點,服務器端滿足的指標以及上述兩種方案的討論。本文的設計方案是:首先采用游戲場景分割的方法,將整個虛擬世界分割成不同的場景,每個場景有專門的服務集群來處理該場景中客戶端的請求。接著綜合運用集群服務器和LVS負載平衡技術來實現每個單獨場景內服務器的架構。如圖5所示:總體上采用基于cell的架構將游戲虛擬世界分成N個場景,在游戲的每個場景內采用基于服務的架構。

下面簡要分析下該架構如何滿足上文提到的可伸縮、高可用和負載平衡:
(1)可伸縮
可伸縮性在一定程度上可以理解為:增加服務器硬件是否可以相應的提高系統的負載能力或者是否能提高用戶體驗。當每個游戲場景區域內的服務端負載過大時,可以分析其原因,例如:如果是由于該場景內的交易量過大所造成的,那么就可以在交易服務器集群中增加更多的提供游戲交易功能的服務器來滿足系統性能的要求。
(2)高可用性
正如圖5所示,每個負載平衡服務器和具有相同功能的服務器組成了一個提供同一功能的集群系統,這種冗余的架構保證當集群系統中有服務器宕機的時候不會導致整個系統的崩潰,所以是高可用的。
(3)負載平衡
提供負載平衡功能的產品有很多,例如F5的BIG SIZE,Linux的開源項目LVS等。這方面在技術上已經很成熟,且一般都是基于IP的負載平衡技術。LVS的負載技術有:通過NAT實現虛擬服務器(VS/NAT);通過IP隧道實現虛擬服務器(VS/TUN);通過直接路由實現虛擬服務器(VS/DR),可以充分滿足一般網游服務集群的需要。
5 小結
綜上所述,從商業角度來講MMORPG網游都采用C/S結構而不是P2P。C/S結構的缺點在于其非對稱性,再加上MMORPG網游本身具有實時性和狀態不確定的特點,造成服務器端過多的負載。為了解決這個問題,本文采用了結合基于cell和基于服務的服務端架構,起到了很好的效果。
參考文獻:
[1]T. Iimura, H. Hazeyama, and Y. Kadobayashi. Zoned federation of game servers: a peer- to-peer approach to scalable multi-player online games[J]. In NetGames ’04: Proceedings of 3rd ACM SIGCOMM workshop on Network and system support for games, ACM Press, 2004, Pages 116–120.
[2]Abdennour el Rhalibi And Madjid Merabit. Agents-Based Modeling for a Peer-to-Peer MMOG Architecture[J]. ACM Computers in Entertainment, Apr.2005, Vol.3, NO.2.
[3]Jaecheol Kim, Jaeyoung Choi, Dukhyun Chang, Taekyoung Kwon, Yanghee Choi, Eungsu Yuk. Traffic characteristics of a massively multi-player online role playing game[J]. ACM Press, Oct 2005,P1-8.
[4]http://www.linuxvirtualserver.org/
[5]Marios Assiotis and Velin Tzanov. A Distributed Architecture for MMORPG[J]. ACM Press,2006,P4.
收稿日期:2008-03-27
作者簡介:陸松超,男,江蘇南通人,碩士研究生,研究方向為軟件工程。