• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種高性能網(wǎng)絡(luò)游戲服務(wù)器架構(gòu)設(shè)計(jì)

      2010-08-07 08:20:46楊玲
      關(guān)鍵詞:架構(gòu)設(shè)計(jì)網(wǎng)關(guān)客戶端

      楊玲

      中僑職業(yè)技術(shù)學(xué)院應(yīng)用技術(shù)系 上海 201319

      0 前言

      網(wǎng)絡(luò)游戲的結(jié)構(gòu)分為客戶端與服務(wù)器端,客戶端采用2D繪制引擎或者3D繪制引擎繪制游戲世界的實(shí)時(shí)畫面,服務(wù)器端則負(fù)責(zé)響應(yīng)所有客戶端的連接請(qǐng)求和游戲邏輯處理,并控制所有客戶端的游戲畫面繪制??蛻舳伺c服務(wù)器通過網(wǎng)絡(luò)數(shù)據(jù)包交互完成每一步游戲邏輯,由于游戲邏輯是由服務(wù)器負(fù)責(zé)處理的,要保證面對(duì)海量用戶登錄時(shí),游戲具有良好的流暢性和用戶體驗(yàn),優(yōu)秀的服務(wù)器架構(gòu)起到了關(guān)鍵的作用。器種類和數(shù)量是不盡相同的。本文設(shè)計(jì)出的帶網(wǎng)關(guān)服務(wù)器的服務(wù)器組架構(gòu)如圖1所示。

      圖1 帶網(wǎng)關(guān)服務(wù)器的服務(wù)器架構(gòu)設(shè)計(jì)方案

      1 服務(wù)器架構(gòu)設(shè)計(jì)

      1.1 服務(wù)器架構(gòu)分類

      服務(wù)器組的架構(gòu)一般分為兩種:第一種是帶網(wǎng)關(guān)服務(wù)器的服務(wù)器架構(gòu);第二種是不帶網(wǎng)關(guān)服務(wù)器的服務(wù)器架構(gòu),這兩種方案各有利弊。在給出服務(wù)器架構(gòu)設(shè)計(jì)之前,先對(duì)這兩種設(shè)計(jì)方案進(jìn)行詳細(xì)的探討。

      所謂網(wǎng)關(guān)服務(wù)器,其實(shí)是Gate服務(wù)器,比如LoginGate、GameGate等。網(wǎng)關(guān)服務(wù)器的主要職責(zé)是將客戶端和游戲服務(wù)器隔離,客戶端程序直接與這些網(wǎng)關(guān)服務(wù)器通信,并不需要知道具體的游戲服務(wù)器內(nèi)部架構(gòu),包括它們的IP、端口、網(wǎng)絡(luò)通信模型(完成端口或Epoll)等??蛻舳酥慌c網(wǎng)關(guān)服務(wù)器相連,通過網(wǎng)關(guān)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)包間接地與游戲服務(wù)器交互。同樣地,游戲服務(wù)器也不直接和客戶端通信,發(fā)給客戶端的協(xié)議都通過網(wǎng)關(guān)服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。

      1.2 服務(wù)器架構(gòu)設(shè)計(jì)

      根據(jù)網(wǎng)絡(luò)游戲的規(guī)模和設(shè)計(jì)的不同,每組服務(wù)器中服務(wù)

      本文將服務(wù)器設(shè)計(jì)成帶網(wǎng)關(guān)服務(wù)器的架構(gòu),雖然加大了服務(wù)器的設(shè)計(jì)復(fù)雜度,但卻帶來了以下幾點(diǎn)好處:

      (2)網(wǎng)關(guān)服務(wù)器負(fù)責(zé)解析數(shù)據(jù)包、加解密、超時(shí)處理和一定邏輯處理,這樣可以提前過濾掉錯(cuò)誤包和非法數(shù)據(jù)包。

      (3)客戶端程序只需建立與網(wǎng)關(guān)服務(wù)器的連接即可進(jìn)入游戲,無需與其它游戲服務(wù)器同時(shí)建立多條連接,節(jié)省了客戶端和服務(wù)器程序的網(wǎng)絡(luò)資源開銷。

      (4)在玩家跳服務(wù)器時(shí),不需要斷開與網(wǎng)關(guān)服務(wù)器的連接,玩家數(shù)據(jù)在不同游戲服務(wù)器間的切換是內(nèi)網(wǎng)切換,切換工作瞬間完成,玩家?guī)缀醪煊X不到,這保證了游戲的流暢性和良好的用戶體驗(yàn)。

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

      從圖 1的服務(wù)器架構(gòu)圖可以看出,一組服務(wù)器包括LoginGate、LoginServer、GameGate、GameServer、DBServer和MServer等多種服務(wù)器。LoginGate和GameGate就是網(wǎng)關(guān)服務(wù)器,一般一組服務(wù)器會(huì)配置 3臺(tái) GameGate,因?yàn)榉€(wěn)定性對(duì)于網(wǎng)絡(luò)游戲運(yùn)營(yíng)來說是至關(guān)重要的,而服務(wù)器宕機(jī)等突發(fā)事件是游戲運(yùn)營(yíng)中所面臨的潛在風(fēng)險(xiǎn),配置多臺(tái)服務(wù)器可以有效地降低單個(gè)服務(wù)器宕機(jī)帶來的風(fēng)險(xiǎn)。另外,配置多臺(tái)網(wǎng)關(guān)服務(wù)器也是進(jìn)行負(fù)載均衡的有效手段之一。下面將對(duì)各種服務(wù)器的主要功能和彼此之間的數(shù)據(jù)交互做詳細(xì)解釋。

      (1)LoginGate

      LoginGate主要負(fù)責(zé)在玩家登錄時(shí)維護(hù)客戶端與LoginServer之間的網(wǎng)絡(luò)連接與通訊,對(duì)LoginServer和客戶端的通信數(shù)據(jù)進(jìn)行加解密、校驗(yàn)。

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

      (2)LoginServer

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

      (3)GameGate

      GameGate(GG)主要負(fù)責(zé)在用戶游戲過程中負(fù)責(zé)維持GS與客戶端之間的網(wǎng)絡(luò)連接和通訊,對(duì)GS和客戶端的通信數(shù)據(jù)進(jìn)行加解密和校驗(yàn),對(duì)客戶端發(fā)往GS的用戶數(shù)據(jù)進(jìn)行解析,過濾錯(cuò)誤包,對(duì)客戶端發(fā)來的一些協(xié)議作簡(jiǎn)單的邏輯處理,其中包括游戲邏輯中的一些超時(shí)判斷。在用戶選擇角色過程中負(fù)責(zé)維持DBServer與客戶端之間的網(wǎng)絡(luò)連接和通訊,對(duì) DBServer和客戶端的通信數(shù)據(jù)進(jìn)行加解密和校驗(yàn),對(duì)客戶端發(fā)往 DBServer的用戶數(shù)據(jù)做簡(jiǎn)單的分析。維持客戶端與MServer之間的網(wǎng)絡(luò)連接與通訊、加解密、數(shù)據(jù)轉(zhuǎn)發(fā)和簡(jiǎn)單的邏輯處理等。

      (4)GameServer

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

      由于整個(gè)游戲世界有許多游戲場(chǎng)景,在該架構(gòu)中一組服務(wù)器有3臺(tái)GS共同負(fù)責(zé)游戲邏輯處理,每臺(tái)游戲服務(wù)器負(fù)責(zé)一部分地圖的處理,這樣不僅降低了單臺(tái)服務(wù)器的負(fù)載,而且降低了GS宕機(jī)帶來的風(fēng)險(xiǎn)。玩家角色信息里會(huì)保持玩家上次退出游戲時(shí)的地圖編號(hào)和所在GS編號(hào),這樣玩家再次登錄時(shí),會(huì)進(jìn)入到上次退出時(shí)的GS。

      上面提到過,在驗(yàn)證賬號(hào)之后,LoginServer會(huì)把這個(gè)SessionKey 發(fā)給 GS,當(dāng)玩家選擇角色登錄 GS時(shí),會(huì)把SessionKey一起發(fā)給GS,這時(shí)GS會(huì)驗(yàn)證SessionKey是否與其保存的相一致,不一致的話GS會(huì)拒絕玩家進(jìn)入游戲。MServer的主要負(fù)責(zé) GS之間的數(shù)據(jù)轉(zhuǎn)發(fā)以及數(shù)據(jù)廣播,另外,一些系統(tǒng)也可以放到 MServer上,這樣也可以減輕 GS的運(yùn)算壓力。

      (5)DBServer

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

      LoginServer會(huì)在玩家選組時(shí)把 SessionKey發(fā)給DBServer,當(dāng)玩家發(fā)送獲取角色信息協(xié)議時(shí)會(huì)帶上這個(gè)SessionKey,如果跟DBServer保存的SessionKey不一致,則DBServer會(huì)認(rèn)為玩家不是合法用戶,獲取角色協(xié)議將會(huì)失敗。另外,玩家選取角色正式進(jìn)入游戲時(shí),GS會(huì)給DBServer發(fā)送攜帶 SessionKey的獲取角色信息協(xié)議,這時(shí) DBServer同樣會(huì)驗(yàn)證 SessionKey的合法性??傊?,只有客戶端、DBServer和GS所保存的SessionKey一致,才能保證協(xié)議收到成功反饋。

      與DBServer通訊的服務(wù)器主要有GG,GS和LoginServer,DBServer與GG交互的協(xié)議主要包括列角色、創(chuàng)建角色、刪除角色、恢復(fù)角色等,DBServer與GS交互的協(xié)議包括讀取角色數(shù)據(jù)、保存角色數(shù)據(jù)和跳服務(wù)器等,DBServer與LoginServer交互的協(xié)議主要是用戶登錄協(xié)議,這時(shí)候會(huì)給DBServer發(fā)送SessionKey。

      (6)MServer

      每一個(gè)組有一臺(tái)MServer,主要負(fù)責(zé)維持3臺(tái)GS之間數(shù)據(jù)的轉(zhuǎn)發(fā)和數(shù)據(jù)廣播。另外一些游戲系統(tǒng)也可能會(huì)放到MServer上處理,比如行會(huì)系統(tǒng)。

      1.3 服務(wù)器交互的主要流程

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

      圖2 選擇角色信息流程

      圖2的流程說明了,在選角色過程中,客戶端會(huì)把攜帶游戲賬號(hào)和SessionKey的選角色協(xié)議發(fā)給GG,GG做一些簡(jiǎn)單處理之后轉(zhuǎn)發(fā)給DBServer,DBServer要驗(yàn)證SessionKey的合法性,驗(yàn)證通過之后,DBServer會(huì)從角色信息緩沖區(qū)里取出該賬戶的所有角色信息發(fā)給客戶端。這個(gè)過程在客戶端的表現(xiàn)是,當(dāng)選擇好服務(wù)器組之后,客戶端會(huì)直接顯示該賬號(hào)下的所有角色,之后就可以選擇角色進(jìn)入游戲了。

      圖3 玩家進(jìn)入游戲流程

      圖3的流程說明了,在玩家選角色正式進(jìn)入游戲時(shí),客戶端會(huì)把攜帶游戲賬號(hào)、角色I(xiàn)D和SessionKey的登錄協(xié)議發(fā)給GG,GG做一些簡(jiǎn)單處理之后轉(zhuǎn)發(fā)給 GS。GS會(huì)驗(yàn)證SessionKey的合法性,驗(yàn)證通過之后,GS會(huì)把驗(yàn)證通過的結(jié)果發(fā)給客戶端,同時(shí)GS給DBServer發(fā)獲取角色數(shù)據(jù)的協(xié)議,這些角色數(shù)據(jù)是一個(gè)玩家所有的游戲數(shù)據(jù),包括裝備、技能等等。

      圖4 游戲邏輯數(shù)據(jù)轉(zhuǎn)發(fā)流程

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

      2 總結(jié)

      網(wǎng)絡(luò)游戲服務(wù)器的架構(gòu)設(shè)計(jì)已經(jīng)成為當(dāng)前網(wǎng)絡(luò)游戲研究領(lǐng)域的熱點(diǎn),因?yàn)楦咝阅芊?wù)器架構(gòu)設(shè)計(jì)是一款網(wǎng)絡(luò)游戲成功的關(guān)鍵。本文從實(shí)際應(yīng)用出發(fā),提出了一種高性能的服務(wù)器架構(gòu)設(shè)計(jì)解決方案,并且詳細(xì)探討了各種服務(wù)器的功能,本文的最后給出了幾個(gè)服務(wù)器之間數(shù)據(jù)通訊的關(guān)鍵流程,以圖文并茂的方式解釋各個(gè)服務(wù)器是如何協(xié)同工作的。

      [1] 網(wǎng)絡(luò)游戲.百度百科:http://baike.baidu.com/view/3543.htm.

      [2] netprg.網(wǎng)游服務(wù)器通信架構(gòu)的設(shè)計(jì).程序員:游戲創(chuàng)造.2005.

      [3] 尚海忠.一個(gè)支持RunGate的服務(wù)器框架實(shí)例.程序員.2005.

      [4] 蔣臻甄.網(wǎng)絡(luò)游戲服務(wù)器集群的設(shè)計(jì)和實(shí)現(xiàn).碩士論文:華東師范大學(xué).2006.

      猜你喜歡
      架構(gòu)設(shè)計(jì)網(wǎng)關(guān)客戶端
      基于安全性需求的高升力控制系統(tǒng)架構(gòu)設(shè)計(jì)
      基于改進(jìn)RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計(jì)
      縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      孵化垂直頻道:新聞客戶端新策略
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
      應(yīng)對(duì)氣候變化需要打通“網(wǎng)關(guān)”
      太陽能(2015年7期)2015-04-12 06:49:50
      一種實(shí)時(shí)高效的伺服控制網(wǎng)關(guān)設(shè)計(jì)
      對(duì)稱加密算法RC5的架構(gòu)設(shè)計(jì)與電路實(shí)現(xiàn)
      應(yīng)用于SAN的自動(dòng)精簡(jiǎn)配置架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
      淄博市| 宜川县| 塔河县| 深圳市| 开封市| 东源县| 渭南市| 西吉县| 卓尼县| 报价| 临武县| 合江县| 南漳县| 太湖县| 开平市| 高州市| 航空| 九龙坡区| 虞城县| 阜康市| 监利县| 香港 | 隆化县| 奎屯市| 达日县| 翁源县| 潜山县| 平山县| 浪卡子县| 修文县| 来宾市| 东阿县| 翁源县| 太谷县| 五家渠市| 灵武市| 镇巴县| 梅河口市| 曲沃县| 长葛市| 葵青区|