• <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>
            隨筆-380  評論-37  文章-0  trackbacks-0

            無縫世界網游服務器架構的設計思路

            原文:http://canremember.com/?p=8

            過去一年中,花了很多時間在考慮服務器架構設計方面的問題。看了大量文章、也研究了不少開源項目,眼界倒是開闊了不少,不過回過頭來看,對網游架構設計方面的幫助卻是不多。老外還是玩兒console game的多,MMO Games方面涉及的還是不如國內廣泛。看看 Massively Multiplayer Games Development 1 & 2 這兩本書吧,質量說實話很一般,幫助自然也很有限。當然這也是好事,對國內的研發公司/團隊來說,在網游服務器技術方面當然就存在超越老外的可能性,而且在這方面技術超越的機會更大,當然前提是要有積累、要舍得投入,研發人員更要耐得住寂寞、經得起誘惑,在平均每天收到超過3個獵頭電話的時候——依然不動心。

            上面有點兒扯遠了,下面聊聊無縫世界架構(Seamless world server architecture)設計方面的一點兒看法。

            先說架構設計的目標——我的看法,服務器組架構設計的目標就是確定各服務器拓補關系和主要的業務邏輯處理方法。主要要解決的問題就是在滿足游戲內容設計需要的前提下,如何提高帶負載能力的問題。

            最簡單的架構就是基本的C/S架構,一臺Server直接構成一個Cluster,所有Client直接連接這個Server,這個Server完成所有邏輯和數據處理。這架構其實很好,最大的好處就是它架構上的 Simplicity ,Cluster內部的跨進程交互完全被排除,復雜度立刻就降下來了,而且——完全可以實現一個無縫(Seamless world)的游戲世界。但是即使我不說,大家也知道這種單Server架構會有什么問題。不過我們不妨以另外一個角度來看這個Server——一個黑盒子。從系統外部的角度來看,什么樣的系統都可以看成一個整體、一個黑盒,而不管系統內部的拓補關系和實現復雜度方面的問題。在不考慮這個系統的實現的前提下,理論上Cluster的處理能力就是由硬件的數量和能力決定的,也就是說一個Server Cluster內包含越多的服務器、服務器越‘快’,那么這個Cluster的處理能力越好、帶負載能力越好。那么我們要面對的帶負載能力的問題,就是如何高效的利用這些Server的問題,基本上也可以理解為如何提高玩家請求的并發處理能力的問題。

            CPU廠商在很久以前就在考慮這方面的問題了,CPU其實也可以看成個黑盒。看看他們用過的技術——流水線(pipeline)技術、多CPU/多核(multicore)技術,以及這些技術的衍生技術。我想了很久讓 Server Cluster 內部處理并行的方法、并且有了比較清晰的思路之后,才發現其實早就可以參照CPU廠商的方法。流水線的方法就是把一個指令處理拆分成很多個步驟,這樣指令的處理被分解之后就可以部分重疊(相當于變成并發的了)執行。我們的Server Cluster一樣可以用這種方法來拆分,我想了個名字——

            Services-based Architecture——基于服務的架構。在這種架構內部,我們根據處理數據、邏輯的相關性來劃分組內各個服務器的工作任務。例如:位置服務提供物體可見性信息、物品服務處理所有物品相關的邏輯、社會關系服務提供行會家族等等方面的邏輯、戰斗服務器只處理戰斗相關的邏輯,等等。這樣劃分的話、邏輯處理的并發就有了可能性。舉例來說:A砍B一刀這件事情與C從奸商手里買到一件武器這個事情是完全不相干的,而且這2個請求本來就在不同的服務器上被處理,他們是被不同的Service Server并發處理的。這就是 Services-based Architecture 的并發方法。

            基本上,把游戲邏輯的處理拆分成一個個的service,就和設計cpu的時候把機器指令的具體處理拆分,然后設計出一個個流水線單元是一個道理。

            Cells-based Architecture——基于cell的架構。每個cell都在不同的物理server上面運行著完全一樣的應用程序服務器,但是他們負責承載不同的游戲場景區域的游戲邏輯。和 services-based arch. 明顯不同的就是,每個cell都是個‘在邏輯上完整的’服務器。它得處理物品操作、人物移動、戰斗計算等等幾乎所有的游戲邏輯。盡管這么做會帶來一些(可能是很復雜)的問題,但是它完全是可行的。舉例來說:在吳國A砍B一刀顯然地和千里之外在越國的C砍D一刀不搭界,他們完全可以被不同的Cell并發地處理。

            基本上,這就相當于一個主板上面插多個CPU或者一個CPU但是有多個內核,每個CPU能做的事情都是一樣的,而且能一起做。

            關于這兩種 seamless world 架構的基本分析和需要解決的一些主要問題,下次再寫。

            Related posts

            posted on 2009-11-18 08:20 小王 閱讀(1318) 評論(0)  編輯 收藏 引用 所屬分類: 游戲服務器端開發
            国内精品伊人久久久久777| 99久久精品午夜一区二区| 国产精品对白刺激久久久| 国产成人久久AV免费| 国产亚州精品女人久久久久久 | 婷婷综合久久中文字幕蜜桃三电影| AV无码久久久久不卡蜜桃| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久精品国产精品亚洲精品| 国产成人香蕉久久久久| 伊人久久大香线蕉综合热线| 久久亚洲AV成人出白浆无码国产| 欧美久久综合性欧美| 亚洲国产精品高清久久久| 丰满少妇人妻久久久久久4| 综合网日日天干夜夜久久 | 久久亚洲AV无码精品色午夜| 久久99精品国产自在现线小黄鸭| 久久婷婷五月综合97色直播| 久久综合久久久| 中文字幕久久精品无码| 久久久久久一区国产精品| 久久777国产线看观看精品| 97精品依人久久久大香线蕉97| 国内精品久久久久国产盗摄| 久久久无码一区二区三区| 女人高潮久久久叫人喷水| 久久精品无码专区免费| 7国产欧美日韩综合天堂中文久久久久| 亚洲精品无码久久久影院相关影片| 理论片午午伦夜理片久久| 久久99精品久久久久久野外 | 久久久久女教师免费一区| 国产精品免费久久久久影院| 国产精品内射久久久久欢欢| 中文字幕一区二区三区久久网站| 久久99精品久久久久久久不卡| 国产婷婷成人久久Av免费高清| 久久久久久久97| 久久精品国产亚洲av麻豆小说 | 久久99精品国产|