• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            X-Matrix

            MMORPG無縫服務器設計

            無縫服務器概述

            所謂的無縫服務器是指一個游戲只有一個游戲世界,游戲中所有的角色都互相可見,可交互的。
            傳統的游戲服務器是分區的。進入游戲之前,先要選擇游戲服務器組,再選擇一個服務進入。進入游戲后如何要從一個地圖到另一個地圖,則要切換服務器(客戶端或者接入服務器內部切換),對玩家來說,則是畫面切換,像大話西游,傳奇都是這樣。魔獸世界在進入服務器后,如果不前往另一個大陸,則無換面切換,但 這不是真正的無縫。
            無縫服務器復雜的根本是服務大量(甚至海量)玩家的要求。玩家多意味著交互多,數據流量大,必然要將請求發往多個服務器處理,于是問題就來了,那就是服務器交互。傳統分區服務器設計也是多服務器的,但服務器相數量較小,交互的復雜性不大。但,考慮無縫服務器要服務的是海量的玩家請求,服務器數量比傳統服務器大的多。
            考慮下面的情況:
            A玩家連接svr1,B玩家連接svr2,C玩家連接服務器svr3。現在A要砍B一下,svr1接到了A砍B的請求,但在svr1上沒有B玩家,它如何才能找到B呢?也許加一個全局的玩家位置服務器可以解決這個問題,這個服務器上記錄了每個玩家位于哪個服務器。但,考慮下,這個全局服務器只有一臺嗎?它可以處理所有的玩家嗎?如果人數太多,在增加一臺這樣的服務器會怎么樣?它們之間如何交互?很快就會發現,這個方法行不同。其實,這種全局服務器 的存在是分區服務器時代的產物,在無縫的前提下,不會在有全局服務器這樣的東西。全局意味著唯一,而無縫則要求無限動態擴展。
            無縫服務器的關鍵是維護一個服務的網狀結構,只有這樣,才可能動態擴展。

            posted on 2008-07-30 14:56 x-matrix 閱讀(1919) 評論(11)  編輯 收藏 引用

            評論

            # re: 無縫服務器概述 2008-07-30 15:21 Niino

            關注  回復  更多評論   

            # re: 無縫服務器概述 2008-07-30 16:21 lwan

            p-2-p ??? 分布式??? 我瞎猜想的,沒做過服務器。  回復  更多評論   

            # re: 無縫服務器概述 2008-07-30 16:28 unnamed

            在沒有全局服務器的情況下,如果要查找B玩家,會有遍歷多個服務器的可能性吧?  回復  更多評論   

            # re: 無縫服務器概述 2008-07-30 17:30 Jeff Chen

            我覺得可以參考GSM移動通訊網絡的設計。

            每個區域(一般是一個城市)都會有一個有一個HLR(歸屬服務寄存器)記錄該區域所有用戶的信息,包括當前所在位置。

            當移動用戶漫游到其它區域時,該區域所在的HLR根據用戶的電話號碼,向用戶所屬的HLR發信息獲取用戶信息和登記其所在區域。當然,用戶移動電話的狀態改變,同樣會通知其HLR。

            當有電話撥打漫游用戶電話時,其所在的網絡會先向漫游用戶所屬的HLR詢問位置,再撥打電話。

            那么,類似的,在分區服務器增加一個類似HLR的服務,并在分區間的保持游戲用戶位置。

            當第一次向B消息時,先詢問其所屬分區的HLR服務,獲取其所在位游戲服務器(需要考慮位置緩存及策略),再直接向所在的游戲服務器發送消息。

            這樣既可以實現游戲用戶在分區間‘漫游’,又不需要一個全局的服務器,易于維護和擴展。  回復  更多評論   

            # re: 無縫服務器概述 2008-07-30 23:19 x-matrix

            @Jeff Chen
            "當移動用戶漫游到其它區域時,該區域所在的HLR根據用戶的電話號碼,向用戶所屬的HLR發信息獲取用戶信息和登記其所在區域。"
            當前的HLR如何找到用戶原來所在的HLR來獲取信息呢?似乎存在某種服務查找或者消息自動路由機制,所得請求被恰當的服務器處理。  回復  更多評論   

            # re: 無縫服務器概述 2008-07-31 08:10 Jeff Chen

            @x-matrix
            根據用戶電話號碼的號碼段,如1391234,是北京的。

            當然,這個號碼段和HLR的對應表是在各個HLR間同步的。當一個HLR增加一個號碼段時,會通知其它HLR。

            游戲用戶的用戶號碼也可以通過類似的做法。  回復  更多評論   

            # re: 無縫服務器概述 2008-07-31 10:29 bobcy

            云風的blog上好像看到過類似如何設計無縫服務器的文章。  回復  更多評論   

            # re: 無縫服務器概述 2008-07-31 10:32 x-matrix

            @bobcy
            他是大世界,不是完全無縫。
              回復  更多評論   

            # re: 無縫服務器概述 2008-08-05 20:18 天涯明月刀

            你這種所謂無縫,純粹是找茬,不存在這樣的設計結構,玩家視野內的其他玩家涉及到復雜的狀態同步,是不可能做在兩個服務器上的  回復  更多評論   

            # re: 無縫服務器概述 2008-08-11 09:51 x-matrix

            @天涯明月刀
            在地圖的交疊區域,玩家是位于兩個服務器上的,bigworld既是此種。
              回復  更多評論   

            # re: 無縫服務器概述[未登錄] 2008-08-22 18:48 flyswift

            你這種所謂無縫,純粹是找茬,不存在這樣的設計結構,玩家視野內的其他玩家涉及到復雜的狀態同步,是不可能做在兩個服務器上的
            ========
            說得對,這種無縫會導致服務器邏輯異常復雜與低效。  回復  更多評論   

            公告

            MMORPG無縫服務器論壇
            Google Groups
            xmatrix
            Visit this group

            導航

            統計

            留言簿(2)

            隨筆檔案

            最新評論

            閱讀排行榜

            观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久se这里只有精品| 丰满少妇人妻久久久久久4| 曰曰摸天天摸人人看久久久| 久久久久久久久久免免费精品| 亚洲欧美精品一区久久中文字幕| 无码人妻精品一区二区三区久久| 久久精品99久久香蕉国产色戒| 9191精品国产免费久久| 国产精品一区二区久久精品涩爱| 国产成人久久精品一区二区三区| 理论片午午伦夜理片久久| 久久久无码一区二区三区| 久久99久久成人免费播放| 久久青青色综合| 88久久精品无码一区二区毛片 | 亚洲日本久久久午夜精品| 色综合久久综合中文综合网| 精品视频久久久久| 国产成年无码久久久久毛片| 久久精品国产亚洲AV忘忧草18| 欧美亚洲国产精品久久蜜芽| 亚洲精品国产字幕久久不卡| 一本久道久久综合狠狠躁AV| 嫩草影院久久99| 狠狠干狠狠久久| 久久综合给合久久国产免费| 久久久国产视频| 日韩中文久久| 久久一区二区三区免费| 精品多毛少妇人妻AV免费久久| 色诱久久久久综合网ywww| 国产成人久久精品一区二区三区| 久久久久亚洲AV成人网人人软件| 久久久久久久尹人综合网亚洲| 国产亚洲综合久久系列| 久久婷婷五月综合色高清 | 狠狠色伊人久久精品综合网 | 久久99热这里只频精品6| 久久精品成人一区二区三区| 久久久久99精品成人片|