亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        網(wǎng)絡游戲服務器通信架構(gòu)與結(jié)構(gòu)設(shè)計

        2009-04-12 00:00:00樊建國
        中國新技術(shù)新產(chǎn)品 2009年21期

        摘要: 隨著網(wǎng)絡游戲玩家的日益增多,網(wǎng)絡游戲服務器端承受著嚴峻的性能考驗和負載壓力。為了提供良好的服務品質(zhì),網(wǎng)絡游戲服務器端的設(shè)計顯得尤其重要。進行游戲服務器端網(wǎng)絡通信架構(gòu)及關(guān)鍵技術(shù)分析,對于游戲產(chǎn)業(yè)的發(fā)展有重要的現(xiàn)實意義。

        關(guān)鍵詞: 網(wǎng)絡游戲;服務器端;通信架構(gòu)

        1網(wǎng)絡游戲服務器概述

        1.1 網(wǎng)絡游戲服務器的基本需求

        網(wǎng)絡游戲是一種比較典型的分布式實時互動的網(wǎng)絡應用。在過去幾年里面,有三種都屬于實時交互的網(wǎng)絡應用,它們之間截然不同,但互聯(lián)網(wǎng)上的地位卻非常突出:(1)軍事模擬類應用;(2)網(wǎng)絡虛擬環(huán)境;(3)大規(guī)模多人在線游戲(MMOG)。調(diào)查分析表明,現(xiàn)今的娛樂業(yè)在 MMOG 上,包括手機游戲和在線游戲上,都進行了大量的投資。

        從其聯(lián)網(wǎng)技術(shù)來看,MMOG和其他類的多媒體應用不同,有非常不同的特征。在MMOG當中,用戶需要與很多事物進行交互,因此就需要在網(wǎng)絡上傳遞產(chǎn)生相當數(shù)量的控制信息。玩家在MMOG游戲中娛樂的過程中必須保證流暢的游戲畫面和動作,這也就要求游戲的事件數(shù)據(jù)必須能夠在指定的間隔時間范圍內(nèi)到達。

        1.2網(wǎng)絡游戲服務器的設(shè)計要求

        快速響應用戶。整個系統(tǒng)應該設(shè)法隱藏固有網(wǎng)絡延時,快速響應用戶,保證用戶操作流暢。

        提高通信效率。系統(tǒng)應當設(shè)計適當?shù)耐ㄐ艆f(xié)議,以降低網(wǎng)絡通信量,使帶寬不至于成為某些客戶端的性能瓶頸。

        設(shè)計高效的并發(fā)系統(tǒng)。在C/S模型中,服務器節(jié)點維護整個世界狀態(tài),處理所有客戶端請求,成為系統(tǒng)的關(guān)節(jié)點。因此,客觀上要求服務器具有高并發(fā)性,應當可以同時接受大量用戶連接,同時能夠有效隔離錯誤,為所有用戶提供穩(wěn)定的后臺支持。

        服務的分布。單臺服務器處理能力有限,可以承受的用戶量有極限。隨著客戶端的大量增加,服務器節(jié)點將需要巨大的計算能力和存儲能力,因此需要把服務分布在一個基于某種策略的服務器集群上。

        2網(wǎng)絡游戲服務器系統(tǒng)層次框架

        網(wǎng)絡游戲服務器體系從功能上可以劃分成幾個較為獨立的子系統(tǒng)模塊,通信部分位于體系的最底層,它向上層提供具體的業(yè)務數(shù)據(jù)傳輸,連接服務器與客戶端的交互。一個良好的設(shè)計應該盡量減少模塊間的耦合度,結(jié)合系統(tǒng)特性運用設(shè)計模式力求封裝變化,以使整體架構(gòu)具有較好的可擴展性和可維護性。

        網(wǎng)絡游戲通常設(shè)計為C/S結(jié)構(gòu),客戶端只對非敏感數(shù)據(jù)進行簡單的邏輯處理,從游戲虛擬世界的角度來看,客戶端只是一個觀察世界的窗口,玩家通過觀察并與世界實體比如 NPC(Non-player character)、其他玩家進行交互。服務器從玩家那里接收到操作信息,進行處理后發(fā)回客戶端,經(jīng)客戶端通過圖形化處理,給玩家呈現(xiàn)出一個繽紛的游戲世界。

        就服務器端而言,位于最底層的是網(wǎng)絡層(Network Layer),用于在因特網(wǎng)上傳遞客戶和服務進程之間的消息數(shù)據(jù)包。游戲邏輯層(Logic Layer)則對接收到的數(shù)據(jù)進行處理,同時負責保持客戶與服務器游戲狀態(tài)空間的一致性。表現(xiàn)層(ExpressLayer)對這個狀態(tài)空間的場景對象進行物理表示(Physical Expression),便于服務器端的管理人員監(jiān)視和實時分析等,考慮服務器負擔和主要職責問題,一般表現(xiàn)層做得非常簡單,均可以根據(jù)配置信息決定是否加載該層的相關(guān)模塊。

        而客戶端中,網(wǎng)絡層負責與服務器進行通信,與服務器網(wǎng)絡層比較,其通信要求相對很低;游戲邏輯層則負責處理客戶端的行為邏輯以及非玩家角色的 AI 控制等;表示層的實現(xiàn)相對于服務器來說要復雜得多,采用專業(yè)的 2D 或者 3D 引擎技術(shù)展現(xiàn)絢爛的圖形畫面,伴以音頻等,以給玩家?guī)磔^好的游戲體驗。由于玩家需要與游戲虛擬世界進行交互,因而在表示層之上增加交互層以處理玩家的輸入控制等。

        (1)網(wǎng)絡層(Network Layer)

        網(wǎng)絡層負責游戲網(wǎng)絡消息的發(fā)送和接收,消息的加解密以及底層的網(wǎng)絡通信,包括 NetworkIO、Decrypt/Encrypt 和 Messenger。接收客戶請求的數(shù)據(jù)并進行解密處理,傳遞給上層協(xié)議解釋后轉(zhuǎn)換成業(yè)務消息發(fā)送給邏輯層,將經(jīng)邏輯層處理業(yè)務后的產(chǎn)生的響應回包加密,然后發(fā)送給客戶。

        邏輯層(Logic Layer)。邏輯層中 Governor 為中央控制模塊,對各個子模塊進行管理控制,負責服務器端不同模塊的消息傳送,控制游戲的主時鐘,由 Governor 控制的子模塊包括:Authentication,World, Rule controller, AI controller, Command Script 和 Configuration等。其中,Authentication 主要負責用戶身份的驗證,User Database 存儲用戶的基本資料,包括用戶 ID、密碼、用戶姓名和游戲中角色的數(shù)據(jù)等;World, Rule controller和 AI controller 共同維護游戲狀態(tài)空間,檢測玩家請求的有效性并模擬非玩家角色 NPC 的行為;Command Script 和 Configuration 則提供服務器參數(shù)的配置并根據(jù)需要通過命令改變服務器中的一些行為規(guī)則等。

        表示層(Express Layer)。表示層根據(jù)配置信息決定是否加載,其中 World Simulate 用于模擬游戲狀態(tài)空間,觀察玩家行為;Stat.Analyse則是抓取整個系統(tǒng)的快照,查看當前運行情況,分析服務質(zhì)量等。三個層次負責各自的功能,共同協(xié)作向客戶提供服務。

        3通信系統(tǒng)功能需求

        網(wǎng)絡游戲作為一種分布式系統(tǒng),絕大部分都采用 C/S 模式,通常具有幾千至幾十萬人同時在線的承載能力。游戲平臺為了保證游戲的性能,需要滿足以下的要求:

        響應時間及時性。從用戶的忍受程度以及游戲運行的流暢性角度考慮,服務器對用戶要求的響應時間以及服務器對數(shù)據(jù)庫的操作時間都應該限定在一個范圍之內(nèi)。不同的游戲其客戶端響應時間要求不同,這也跟客戶與服務端請求響應的處理機制相關(guān)。一般響應時間不應超過200ms。

        可伸縮性。可伸縮性在本文中指游戲世界中可同時在線的玩家數(shù)量。大規(guī)模網(wǎng)絡游戲和WEB 站點相似,使用情況可能是不可預料的、是動態(tài)增加的,如果系統(tǒng)不是可伸縮的將會崩潰。實踐證明,對于 3000 人以內(nèi)的游戲世界狀態(tài)維護,采用單機系統(tǒng)達到很好的效果,而在線的玩家數(shù)量達到萬人以上時,當前解決可伸縮性的主要方法是設(shè)置多服務器或者服務器集群。

        穩(wěn)定性、可靠性。網(wǎng)絡游戲運營是一種7×24小時不間斷的業(yè)務,由于網(wǎng)絡游戲應用具有不平穩(wěn)、變化幅度大的特點,例如在節(jié)假日網(wǎng)絡游戲訪問量就會快速增長,過后又會突然回落,因此服務器必須要能夠很好地解決這種突發(fā)性的不平穩(wěn)和間歇。如果由于服務器失敗而使游戲會話終止,那么就會影響玩家對服務器的信任度,因此可靠性對于網(wǎng)絡游戲的服務器來說很重要。

        可擴展性和可維護性。采用可擴充的框架結(jié)構(gòu)和統(tǒng)一的游戲開發(fā)接口,分離游戲平臺與游戲邏輯,使得開發(fā)者只須專注游戲邏輯的開發(fā),減少了公共功能(通訊、計費、社區(qū)、游戲大廳等)的重復開發(fā)。這樣有利于系統(tǒng)的業(yè)務功能升級,以及增加平臺中運行游戲的數(shù)量,還可以輕松實現(xiàn)對所有系統(tǒng)資源的管理和維護。

        4通信體系結(jié)構(gòu)設(shè)計

        4.1功能劃分

        網(wǎng)絡 I/O。網(wǎng)絡 I/O 負責完成端口的創(chuàng)建、關(guān)聯(lián)和銷毀操作,以及 I/O 工作線程的啟動等。

        Socket 監(jiān)聽。Socket 監(jiān)聽負責服務器端監(jiān)聽 Socket 的創(chuàng)建過程,根據(jù)預定義規(guī)則接受或者拒絕客戶的連接請求。

        會話管理。游戲會話記錄了游戲客戶實體的所有信息,包括網(wǎng)絡連接信息、角色活動狀態(tài)等,會話管理負責游戲會話的創(chuàng)建、更新以及銷毀,以及空閑會話的檢查。

        協(xié)議轉(zhuǎn)換。這里的協(xié)議指的是協(xié)議數(shù)據(jù),游戲中客戶端與服務器雙方通信的應用層業(yè)務數(shù)據(jù),作為游戲邏輯的中介,也稱為游戲數(shù)據(jù)包。協(xié)議轉(zhuǎn)換提供統(tǒng)一的協(xié)議解釋機制以及協(xié)議數(shù)據(jù)包的分拆與重組操作,以實現(xiàn)具體業(yè)務到協(xié)議數(shù)據(jù)包的相互轉(zhuǎn)換,同時對數(shù)據(jù)包進行加解密操作。

        線程池。線程池用在游戲邏輯處理部分,主要負責管理線程的生成,結(jié)束和分配任務等工作,線程池相當于一個容器,在容器中運行很多個線程,系統(tǒng)只需將工作交給線程池,由線程池負責協(xié)調(diào)和分配內(nèi)部工作。線程池對外界屏蔽了內(nèi)部線程的調(diào)度運行,其對外界相當于一個整體部分。

        輔助結(jié)構(gòu)。輔助結(jié)構(gòu)包括體系中用來緩沖的各種隊列,如接收隊列、發(fā)送隊列、請求隊列以及響應隊列,通過隊列緩沖同步操作與異步操作之間的數(shù)據(jù)傳遞。另一個輔助結(jié)構(gòu)則是內(nèi)存池,預先分配內(nèi)存以供通信系統(tǒng)使用,在一定程度上改善系統(tǒng)效率和降低系統(tǒng)資源的開銷。

        參考文獻

        [1]信息產(chǎn)業(yè)部軟件與集成電路促進中心. 網(wǎng)絡游戲服務器端編程.北京:電子工業(yè)出版社

        [2]ames Kurose, Keith Ross.計算機網(wǎng)絡:自頂向下方法. 北京: 機械工業(yè)出版社,2005

        [3]Thor Alexander.大型多人在線游戲開發(fā).北京: 人民郵電出版社, 2006

        亚洲成人小说| 乱码窝窝久久国产无人精品| 不卡av电影在线| 日本免费人成视频播放| 亚洲熟妇大图综合色区| 国内精品女同一区二区三区| 欧美成人家庭影院| 柠檬福利第一导航在线| 无码熟妇人妻AV影音先锋| 日本一区二区在线看看| 午夜一区二区三区观看| 亚洲七久久之综合七久久| 国产久热精品无码激情 | 国产美女高潮流白浆免费观看| 虎白m粉嫩小在线播放| 国产精品久久久久乳精品爆| 日韩AVAV天堂AV在线| 国产三级三级三级看三级日本| av免费在线播放视频| 无码人妻久久一区二区三区app| 天堂中文资源在线地址| 白白白色视频在线观看播放| 老女老肥熟女一区二区| 国产美女久久精品香蕉69| 99久久久无码国产精品动漫| 国产又黄又湿又爽的免费视频| 欧美老肥妇做爰bbww| 亚洲男同帅gay片在线观看| 巨臀精品无码AV在线播放| 亚洲av综合色一区二区| 久久天天躁狠狠躁夜夜2020一| 国产在线成人精品| 亚洲av午夜福利一区二区国产 | 五月婷婷开心六月激情| 久久精品国产精品青草| 18无码粉嫩小泬无套在线观看| 国产无套护士在线观看| 国产精品国三级国产av| 日本一区二区三级在线| 亚洲中文字幕无码中文字在线| 二区在线视频|