999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種高性能網絡游戲服務器架構設計

2010-08-07 08:20:46楊玲
網絡安全技術與應用 2010年4期
關鍵詞:游戲

楊玲

中僑職業技術學院應用技術系 上海 201319

0 前言

網絡游戲的結構分為客戶端與服務器端,客戶端采用2D繪制引擎或者3D繪制引擎繪制游戲世界的實時畫面,服務器端則負責響應所有客戶端的連接請求和游戲邏輯處理,并控制所有客戶端的游戲畫面繪制。客戶端與服務器通過網絡數據包交互完成每一步游戲邏輯,由于游戲邏輯是由服務器負責處理的,要保證面對海量用戶登錄時,游戲具有良好的流暢性和用戶體驗,優秀的服務器架構起到了關鍵的作用。器種類和數量是不盡相同的。本文設計出的帶網關服務器的服務器組架構如圖1所示。

圖1 帶網關服務器的服務器架構設計方案

1 服務器架構設計

1.1 服務器架構分類

服務器組的架構一般分為兩種:第一種是帶網關服務器的服務器架構;第二種是不帶網關服務器的服務器架構,這兩種方案各有利弊。在給出服務器架構設計之前,先對這兩種設計方案進行詳細的探討。

所謂網關服務器,其實是Gate服務器,比如LoginGate、GameGate等。網關服務器的主要職責是將客戶端和游戲服務器隔離,客戶端程序直接與這些網關服務器通信,并不需要知道具體的游戲服務器內部架構,包括它們的IP、端口、網絡通信模型(完成端口或Epoll)等。客戶端只與網關服務器相連,通過網關服務器轉發數據包間接地與游戲服務器交互。同樣地,游戲服務器也不直接和客戶端通信,發給客戶端的協議都通過網關服務器進行轉發。

1.2 服務器架構設計

根據網絡游戲的規模和設計的不同,每組服務器中服務

本文將服務器設計成帶網關服務器的架構,雖然加大了服務器的設計復雜度,但卻帶來了以下幾點好處:

(2)網關服務器負責解析數據包、加解密、超時處理和一定邏輯處理,這樣可以提前過濾掉錯誤包和非法數據包。

(3)客戶端程序只需建立與網關服務器的連接即可進入游戲,無需與其它游戲服務器同時建立多條連接,節省了客戶端和服務器程序的網絡資源開銷。

(4)在玩家跳服務器時,不需要斷開與網關服務器的連接,玩家數據在不同游戲服務器間的切換是內網切換,切換工作瞬間完成,玩家幾乎察覺不到,這保證了游戲的流暢性和良好的用戶體驗。

在享受網關服務器帶來上述好處的同時,還需注意以下可能導致負面效果的兩個情況:如何避免網關服務器成為高負載情況下的通訊瓶頸問題以及由于網關的單節點故障導致整組服務器無法對外提供服務的問題。上述兩個問題可以采用“多網關” 技術加以解決。顧名思義,“多網關” 就是同時存在多個網關服務器,比如一組服務器可以配置三臺GameGate。當負載較大時,可以通過增加網關服務器來增加網關的總體通訊流量,當一臺網關服務器宕機時,它只會影響連接到本服務器的客戶端,其它客戶端不會受到任何影響。

從圖 1的服務器架構圖可以看出,一組服務器包括LoginGate、LoginServer、GameGate、GameServer、DBServer和MServer等多種服務器。LoginGate和GameGate就是網關服務器,一般一組服務器會配置 3臺 GameGate,因為穩定性對于網絡游戲運營來說是至關重要的,而服務器宕機等突發事件是游戲運營中所面臨的潛在風險,配置多臺服務器可以有效地降低單個服務器宕機帶來的風險。另外,配置多臺網關服務器也是進行負載均衡的有效手段之一。下面將對各種服務器的主要功能和彼此之間的數據交互做詳細解釋。

(1)LoginGate

LoginGate主要負責在玩家登錄時維護客戶端與LoginServer之間的網絡連接與通訊,對LoginServer和客戶端的通信數據進行加解密、校驗。

人日 達斡爾人認為,農歷正月初一為雞日;初二為狗日;初三為豬日;初四為羊日;初五為馬日;初六為牛日;初七為人日(Ku-Wdur)。到初七這一天,人們不出遠門,一家人其樂容容的歡聚一堂,回想往日的時光,暢想美好的明天。這就是人們俗稱的“七不出,八不進”。

(2)LoginServer

LoginServer主要功能是驗證玩家的賬號是否合法,只有通過驗證的賬號才能登錄游戲。從架構圖可以看出,DBServer和GameServer會連接LoginServer。玩家登錄基本流程是,客戶端發送賬號和密碼到 LoginServer驗證,如果驗證通過,LoginServer會給玩家分配一個 SessionKey,LoginServer會把這個 SessionKey發送給客戶端、DBServer和 GameServer,在后續的選擇角色以后進入游戲過程中,DBServer和GameServer將驗證SessionKey合法性,如果和客戶端攜帶的SessionKey不一致,將無法成功獲取到角色或者進入游戲。

(3)GameGate

GameGate(GG)主要負責在用戶游戲過程中負責維持GS與客戶端之間的網絡連接和通訊,對GS和客戶端的通信數據進行加解密和校驗,對客戶端發往GS的用戶數據進行解析,過濾錯誤包,對客戶端發來的一些協議作簡單的邏輯處理,其中包括游戲邏輯中的一些超時判斷。在用戶選擇角色過程中負責維持DBServer與客戶端之間的網絡連接和通訊,對 DBServer和客戶端的通信數據進行加解密和校驗,對客戶端發往 DBServer的用戶數據做簡單的分析。維持客戶端與MServer之間的網絡連接與通訊、加解密、數據轉發和簡單的邏輯處理等。

(4)GameServer

GameServer(GS)主要負責游戲邏輯處理。網絡游戲有龐大世界觀背景,絢麗激烈的陣營對抗以及完備的裝備和技能體系。目前,網絡游戲主要包括任務系統、聲望系統、玩家PK、寵物系統、擺攤系統、行會系統、排名系統、副本系統、生產系統和寶石系統等。從軟件架構角度來看,這些系統可以看著GS的子系統或模塊,它們共同處理整個游戲世界邏輯的運算。游戲邏輯包括角色進入與退出游戲、跳GS以及各種邏輯動作(比如行走、跑動、說話和攻擊等)。

由于整個游戲世界有許多游戲場景,在該架構中一組服務器有3臺GS共同負責游戲邏輯處理,每臺游戲服務器負責一部分地圖的處理,這樣不僅降低了單臺服務器的負載,而且降低了GS宕機帶來的風險。玩家角色信息里會保持玩家上次退出游戲時的地圖編號和所在GS編號,這樣玩家再次登錄時,會進入到上次退出時的GS。

上面提到過,在驗證賬號之后,LoginServer會把這個SessionKey 發給 GS,當玩家選擇角色登錄 GS時,會把SessionKey一起發給GS,這時GS會驗證SessionKey是否與其保存的相一致,不一致的話GS會拒絕玩家進入游戲。MServer的主要負責 GS之間的數據轉發以及數據廣播,另外,一些系統也可以放到 MServer上,這樣也可以減輕 GS的運算壓力。

(5)DBServer

DBServer主要的功能是緩存玩家角色數據,保證角色數據能快速的讀取和保存。由于角色數據量是比較大的,包括玩家的等級、經驗、生命值、魔法值、裝備、技能、好友、公會等。如果每次GS獲取角色數據都去讀數據庫,效率必然非常低下,用 DBServer緩存角色數據之后,極大地提高了數據請求的響應速度。

LoginServer會在玩家選組時把 SessionKey發給DBServer,當玩家發送獲取角色信息協議時會帶上這個SessionKey,如果跟DBServer保存的SessionKey不一致,則DBServer會認為玩家不是合法用戶,獲取角色協議將會失敗。另外,玩家選取角色正式進入游戲時,GS會給DBServer發送攜帶 SessionKey的獲取角色信息協議,這時 DBServer同樣會驗證 SessionKey的合法性。總之,只有客戶端、DBServer和GS所保存的SessionKey一致,才能保證協議收到成功反饋。

與DBServer通訊的服務器主要有GG,GS和LoginServer,DBServer與GG交互的協議主要包括列角色、創建角色、刪除角色、恢復角色等,DBServer與GS交互的協議包括讀取角色數據、保存角色數據和跳服務器等,DBServer與LoginServer交互的協議主要是用戶登錄協議,這時候會給DBServer發送SessionKey。

(6)MServer

每一個組有一臺MServer,主要負責維持3臺GS之間數據的轉發和數據廣播。另外一些游戲系統也可能會放到MServer上處理,比如行會系統。

1.3 服務器交互的主要流程

下面給出服務器之間數據通訊的主要流程從這些流程能看出各種服務器之間是如何數據交互和協同工作的。

圖2 選擇角色信息流程

圖2的流程說明了,在選角色過程中,客戶端會把攜帶游戲賬號和SessionKey的選角色協議發給GG,GG做一些簡單處理之后轉發給DBServer,DBServer要驗證SessionKey的合法性,驗證通過之后,DBServer會從角色信息緩沖區里取出該賬戶的所有角色信息發給客戶端。這個過程在客戶端的表現是,當選擇好服務器組之后,客戶端會直接顯示該賬號下的所有角色,之后就可以選擇角色進入游戲了。

圖3 玩家進入游戲流程

圖3的流程說明了,在玩家選角色正式進入游戲時,客戶端會把攜帶游戲賬號、角色ID和SessionKey的登錄協議發給GG,GG做一些簡單處理之后轉發給 GS。GS會驗證SessionKey的合法性,驗證通過之后,GS會把驗證通過的結果發給客戶端,同時GS給DBServer發獲取角色數據的協議,這些角色數據是一個玩家所有的游戲數據,包括裝備、技能等等。

圖4 游戲邏輯數據轉發流程

圖4的流程說明了,在玩家游戲過程,客戶端把邏輯協議(包括走、說話、跑、使用技能等)發給GG,GG完成加解密和簡單邏輯處理之后轉發給GS,GS負責這些協議的主要邏輯處理。

2 總結

網絡游戲服務器的架構設計已經成為當前網絡游戲研究領域的熱點,因為高性能服務器架構設計是一款網絡游戲成功的關鍵。本文從實際應用出發,提出了一種高性能的服務器架構設計解決方案,并且詳細探討了各種服務器的功能,本文的最后給出了幾個服務器之間數據通訊的關鍵流程,以圖文并茂的方式解釋各個服務器是如何協同工作的。

[1] 網絡游戲.百度百科:http://baike.baidu.com/view/3543.htm.

[2] netprg.網游服務器通信架構的設計.程序員:游戲創造.2005.

[3] 尚海忠.一個支持RunGate的服務器框架實例.程序員.2005.

[4] 蔣臻甄.網絡游戲服務器集群的設計和實現.碩士論文:華東師范大學.2006.

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
游戲五計算
主站蜘蛛池模板: 国产精品视频久| 久久精品66| 黄色不卡视频| 精品无码一区二区三区电影| 亚洲国产精品久久久久秋霞影院| 丁香婷婷激情网| 人妻无码一区二区视频| 日本成人福利视频| 日韩欧美色综合| 国产毛片一区| 欧美色视频网站| 午夜影院a级片| 久久夜色撩人精品国产| 日韩在线播放中文字幕| 亚洲欧美在线综合一区二区三区 | 国产精品欧美激情| 国产青榴视频| 91精品啪在线观看国产60岁| 精品国产香蕉在线播出| 青草视频免费在线观看| 91小视频在线播放| 乱系列中文字幕在线视频| 一级毛片免费观看不卡视频| 伊人久久久久久久| 婷婷五月在线视频| 免费人成又黄又爽的视频网站| 亚洲综合亚洲国产尤物| 亚洲狠狠婷婷综合久久久久| 人人91人人澡人人妻人人爽| 无码福利日韩神码福利片| 免费激情网址| 亚洲成人一区在线| 亚洲黄色成人| 国产激情国语对白普通话| 男女精品视频| 婷婷久久综合九色综合88| 一区二区在线视频免费观看| 91精品国产自产在线老师啪l| 好吊妞欧美视频免费| 99视频国产精品| 秋霞国产在线| 97国产在线播放| 天堂va亚洲va欧美va国产| 亚洲欧美成aⅴ人在线观看| 亚洲无码高清免费视频亚洲 | 亚洲另类第一页| 欧美一区二区啪啪| 色婷婷亚洲综合五月| 波多野结衣亚洲一区| 一级一级一片免费| 爆操波多野结衣| 少妇精品网站| 亚洲日韩精品欧美中文字幕| 91色国产在线| 婷婷丁香在线观看| 福利在线不卡一区| 精品伊人久久久香线蕉 | 3344在线观看无码| 精品国产污污免费网站| 精品伊人久久久大香线蕉欧美| 最新国产精品第1页| 男女猛烈无遮挡午夜视频| 91无码国产视频| 狼友视频一区二区三区| 在线不卡免费视频| 美女啪啪无遮挡| 国产在线自乱拍播放| 久久亚洲国产一区二区| 久久先锋资源| 欧美精品H在线播放| 日本午夜网站| 国产在线自在拍91精品黑人| 蜜桃视频一区二区| 红杏AV在线无码| 青草午夜精品视频在线观看| 在线观看国产黄色| 91国内在线观看| 九色视频线上播放| 在线观看国产黄色| 2022国产91精品久久久久久| 精品福利视频导航| 欧美激情二区三区|