<button id="hu96j"><acronym id="hu96j"></acronym></button><dd id="hu96j"><pre id="hu96j"></pre></dd>
        <video id="hu96j"><font id="hu96j"><th id="hu96j"></th></font></video>
          <nav id="hu96j"></nav>
        <tbody id="hu96j"><center id="hu96j"><video id="hu96j"></video></center></tbody>

      1. <dd id="hu96j"><track id="hu96j"></track></dd>

        <dd id="hu96j"></dd>
        <rp id="hu96j"><acronym id="hu96j"></acronym></rp>
      2. <button id="hu96j"></button>

        • 保存到桌面加入收藏設為首頁
        IDC話題

        MMORPG負載均衡機制以及動態負載機制實現方式

        時間:2015-08-31 11:53:22   作者:tanym   來源:服務器托管   閱讀:45921   評論:0
        內容摘要:游戲服務器 - MMORPG負載均衡機制和MMORPG動態負載機制實現;如果您在租用游戲服務器或者游戲服務器托管的時候遇到負載均衡的問題可以咨詢IDCsped小編;我們將竭盡全力協助您解決游戲服務器負載均衡的問題;

        MMORPG負載均衡機制以及動態負載機制實現方式

        MMORPG負載均衡機制


        1.靜態分布玩家到服務器


            平均分配玩家給每個Server,使每個Server有相同數量的玩家。這種方法的優點是算法簡單,但玩家在地圖上移動,因此過一段時間,最差的情況下,Server之間可能有大量的網絡流量,因為當玩家在完成一個動作后,所有的Server必須獲得另一個Server的玩家數據,而其附近的玩家皆在不同的Server上,如此依賴,每個玩家的一個動作需要傳送消息到不同的Server上,將造成communication的極大負擔。

        2.靜態分配地圖畝蔚椒務器


            利用空間切割的方式將虛擬世界切割成和Server同等數量的地圖片段,再將這些地圖片段分配給每一個Server負責,然后再有一個Dispacher Server負責將每一個玩家分配到所對應的Server上去,但由于玩家會在地圖上移動,因此時間一久,在最差情況下,玩家可能都到同一個Server的地圖片段上,這樣當初的負載平衡就完全被破壞了。

        3.動態分配地圖片段到服務器


            靜態分配地圖片段至每個Server雖然可霞跎賁erver間網絡的頻寬和負載,但必須使玩家在正確的分布地圖上,玩家的位置是由玩家所操作的,因此會發生不可預料的問題,為了克服這類問題,將地圖分切成更小的片段,然后動態的分配地圖片段至Server上是需要的。然而這種方法要有效率,其關鍵在于如何切割地圖片段,要切蝦沃旨負渦巫吹模該切成多少片段?傳統的方法大都是切成正方形方塊,切割數根據實際情況或模擬后作適當的處理。

        MMORPG動態負載機制實現


            在上一片段中我們討論了目前MMORPG所采用的負載平衡機制的架構,這里我們將提出我們的負載平衡方法,并且討論如何動態以動態負載機制來調整線上游戲Server負載不平衡的現象。

        1、負載定義
        多人在線游戲中Server端必須完成一下三個工作:
        A.接受Client端玩家的狀態、移動及交談的訊息
        B.處理玩家和NPC(Server控制的角色,如怪物,任務角色等)間的互動。
        C.更新虛擬世界狀態
        D.將虛擬世界更新后的信息傳送回Client端
            以上工作當玩家越來越多的時候將話費更多的時間處理,因此Server上玩家暴增時,可能無法將信息及時的傳送給每一個玩家,在這里我們把這四個工作所需要的時間定義成一個Server的負載;很明顯的,在一個Multi-Server的MMORPG系統中,每一個Server的負載和它所負責的玩家個數成正比,因此,我們將每一個Server所負責的玩家的個數當成其負載的重要指標。

        2、負載平衡機制
            在虛擬世界中,在非常多玩家的情況下,單i的Server必定會導致負載過重的現象,因此Multi-Server的架構無疑是必須采用的解決方式,但是前面我們已經討論了Multi-Server負載平衡機制的優缺點,其中較為有效的是動態的分配地圖至服務器,下面我們討論如何實現這種機制。
            首先我們必須解決如何切割游戲地圖的問題,以及切成多少等分,因為這些將影響到在此機制下實現整個系統的效率。
        我們考慮的原則有一下幾點:
        1.盡量分散玩家到各個Server上。
        2.盡量較少玩家間的跨Server的信息傳送。
        3.盡量避免玩家因為在地圖蔚奈恢靡貧而必須更換Server。
            其中第一點是為了平均分攤Server的負載,第二點是為了減少Client間通訊的時間成本,第三點是為了減少Server間玩家資料的轉移次數。

            首先我們必須將地圖切成跟Server個數相等的分數,使得每個Server至少有一份地圖,然而因為玩家會在地圖上移動,因此若每個Server負責一份地圖,那么時間一久,必會導致負載開始不平衡。另一種方式是將地圖切成若干個小等分,然后透過合理的方式將每個小等分分散到各個Server上。當然,和上述情況一樣,時間r久仍會產生負載不平衡,然而這時候我們可以將負載太重的Server上的一部分地圖片段再轉移給其他負載較輕的Server上去,以達到負載平衡的目的。轉移的時機是以Server的負載是否超過某一臨界值,而轉移的對象是可采用random polling的方式,也就是詢問相鄰的Server負載情況如何r是否可以接受額外的負載。

            其次目前Multi-Server MMORPG大多采用將地圖切割成正方形,然而應為正方形區域共有東、西、南、北、東南、東北、西北、西南等八個相鄰的區域,如此會正佳玩家因為移動而轉換區域的機會,因此另有系統采用正六角形切割,然而這種切割雖然相鄰的區域減少到六個,但是其切割方式較為復雜,并且判斷玩家位于哪個區域也較為耗時。另一可行方式是采用正三角形的切割,此方式的優點是切割方法和判斷位置區域的演算法均較正六角形簡單。

            但是以上切割方式都有一共同的缺點,就是他們都為考慮到游戲地圖的內容,也就是說不論地圖的任何角落皆采用同樣的切割方式,因此會很容易造成某個區域內沒有任何的NPC,而另外一個區域內卻包含數個NPC,而擁有NPC的區域通常是玩家駐足停留的地方,因此包含數個NPC的區域意味這其高負載的可能性較高,未包含任何NPC的區域意味著玩家不會長時間停留,大多屬于路過性質,因此玩家轉換Server的可能性便會較高。

            為了解決上述切割的缺點,我們試圖使用與地圖內容相關的切割方式,我們以每個NPC為心來切割地圖區域,是的每個區域僅含有一個NPC,并且為避免玩家因暫時移動而跨出區域,我們希望每個區域中的NPC和其他的NPC要有適當的距離。

            這里提供參考的分割方式如下:首先定出所有NPC的所在位置,然后對于每一個NPC和其各個NPC間各畫出一條垂直平分線,最后整理這些分割線而成的一個包圍一個NPC的區域。該區域所形成的多邊形中的一個邊,即是該NPC和他的臨近NPC間的等距離分割線。事實上,這些多邊形區域的所有形成的圖形是計算幾何中的所有的Voronoi diagram,而各個區域稱為Voronoi polygon鳹oronoi diagram的正式定義如下:

            我們給定一個N個點的集合S ,對所有屬于S中的任意連個點Pi和Pj,PiPj線段的中央垂直分割線將平面分割成連個半平面,包含Pi的半平面我們以H(Pi,Pj)表示之,則所有在平面上靠經Pi的所有點所形成的區域V(i) = ∩i≠jH(pi,pj),我們稱V(i)為關于Pi的Voronoi 

        MMORPG負載均衡機制以及動態負載機制實現方式Voronoi diagram of  NPCs


            利用Voronoi diagram來分割游戲地圖可以使得定義一個NPC區域的邊界與其相鄰的NPC間為相等距離,因而令玩家與該NPC互動時不會不經意的離開邊界而到了另一個地圖區域中,因此答復的降低了玩家在Server間轉換的可能次數。

            Voronoi diagram的建立并不如想象中的那么復雜費時,利用以上提供的演算法可以建立出Voronoi diagram,利用該演算法我們可以在給定N個借點的圖形中以O(NlogN)的時間復雜度求的包含該節點的Voronoi diagram。在下一段中我們將模擬我們的負載分配方法,并且規劃如何與其他傳統的方法作效能的分析比較,最后將其實現在open source的Arriane server game server上。


        IDCsped 提供最新的IT互聯網資訊,本著分享、傳播的宗旨,我們希望能幫助更多人了解需要的信息!

        部分文章轉載自互聯網、部分是IDCsped原創文章,如果轉載,請注明出處:www.idcsped.com !
        微信號:13430280788  歡迎加微信交流!

        標簽:MMORPG動態負載機制實現  IDC話題  游戲負載均衡解決方案  游戲服務器負載均衡方式  MMORPG負載均衡機制  游戲服務器租用  
        相關評論

        銷售電話:13430280788

        Copyright © 2012-2017 | www.idcsped.com 版權所有

          粵公網安備 44010502001126號  粵ICP備12006439號-1
        Powered by OTCMS V3.61
        日韩欧美永久中文字幕视频
          <button id="hu96j"><acronym id="hu96j"></acronym></button><dd id="hu96j"><pre id="hu96j"></pre></dd>
            <video id="hu96j"><font id="hu96j"><th id="hu96j"></th></font></video>
              <nav id="hu96j"></nav>
            <tbody id="hu96j"><center id="hu96j"><video id="hu96j"></video></center></tbody>

          1. <dd id="hu96j"><track id="hu96j"></track></dd>

            <dd id="hu96j"></dd>
            <rp id="hu96j"><acronym id="hu96j"></acronym></rp>
          2. <button id="hu96j"></button>