• <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>

            記錄自己的程序人生和感悟,記錄自己成長的點點滴滴

            目前興趣,游戲開發。

             

            大規模多人在線系統的思考

            目前的互聯網應用,一個突出的焦點就是用戶量非常大,給服務器開發和設計帶來了許多挑戰,這里想談本人對這些問題的思考和體會.
            大規模的多人在線系統,我接觸的比較多的,有一下幾種:
            1. p2p 系統,p2p直播軟件,在播放比較熱點的節目時,會遇到數十萬甚至上百萬人同時觀看的問題,由于p2p的特殊性質,一般不會去統一保持用戶信息,
            服務器需要的只是給p2p客戶提供節目源, 以及為p2p 客戶查找其他p2p節點提供tracker服務。所以p2p在對付大規模的人數在線時,只要簡單的添加tracker
            和界目源即可。這種多人在線是在軟件設計時需要考慮的最少的一種。
            2. 網游服務器系統。 網游服務器對付這種問題的方法是, 把整個用戶空間隔離為n個世界, 譬如mmo中的某區某服, 或者休閑游戲中的房間。
            當用戶量不斷增加時,只需不斷的增加服務器組和房間服務器即可。 唯一麻煩的地方,就是在于一個用戶的統一認證和經濟系統這塊。由于這兩塊負載不大,
            邏輯也相對簡單,實現起來難度不太大。
            3. IM 系統, im系統的問題就在于,他的整個用戶空間,是完全統一在一起的,沒法采用區服,房間的方式來隔離。 當im服務器的在線人數突破10,20萬之后,
            設計一套集群系統就是勢在必行的了。這個時候單臺邏輯服務器,單臺數據庫已經無法滿足系統的性能要求了。 必須采用把數據,服務,分散在各個物理服務器內,
            采用集群的方式來進行管理。
            當并發人數在100萬以下時,我設計的一種做法是, 后臺的db部分,采用一臺或者幾臺類似mysql proxy的服務器來統一進行訪問。
            db 內的數據采用按照數字賬號分段,或者按照某種hash 算法進行 分塊的存儲。 前臺的邏輯服務器,不直接和db 打交道。而是通過DB Proxy來訪問數據庫,
            這樣可以保證數據庫的存儲策略不透明,可以于前臺的邏輯部分進行獨立的變化,前臺邏輯服務器,連數據庫的表結構都不需要知道,只需要發送請求,去DB Proxy請求指定條件的查詢和結果集就可以了。 而邏輯服務器之間,當100萬人以下同時在線時,邏輯服務器的數目并不會太多。這些邏輯服務器之間可以直接互聯。每個邏輯服務器負責一段數字賬號的邏輯處理,每個邏輯服務器向其他服務器通報自己負責的數字段范圍。當遇到不是本服務器能處理的請求時,譬如給其他邏輯服務器上的用戶發送文本消息時, 直接轉發給其他邏輯服務器即可。
            DB Proxy 在db server前端,單臺DB Proxy的處理能力畢竟有限,這里可能還要考慮每幾臺DB服務器就配置一臺DB Proxy。每幾臺前臺邏輯服務器共享一臺DB Proxy.  im 系統的數據庫訪問非常頻繁,在im系統中實現數據庫cache,對于性能的提高是非常有幫助的。前臺邏輯服務器,也應該盡量的cache數據,減少訪問DB
            Proxy的次數,以提高系統的整體性能。
             
            這里為了把客戶端指引到連接指定的邏輯服務器,前臺需要有Dispatch 服務器,提供邏輯服務器的地址,端口。im 客戶端連接邏輯服務器前必須查詢Dispatch Server,來獲知邏輯服務器地址。 為了增強靈活性,可以設置一臺中心服務器,。來動態的提供邏輯服務器,DB Proxy等的配置信息。以及方便進行服務器組的后臺管理。
            這里的設計是針對udp 的im 系統來的。tcp 的im系統,成本偏高,研究的較少。
            實際的應用中,還需要一些性能測試數據的配合和運營數據,才能得出比較優化了的架構。 
             

            posted on 2008-06-14 10:07 Hellfire 閱讀(2994) 評論(6)  編輯 收藏 引用

            評論

            # re: 大規模多人在線系統的思考 2008-06-14 10:29

            QQ游戲的服務器好像也是采用幾層設計的,如登錄服務器,游戲服務器。
            他們所有的服務都是用同一套數據庫,不知道數據庫的服務器是如何架構的。  回復  更多評論   

            # re: 大規模多人在線系統的思考 2008-06-14 10:43 Hellfire

            @水
            這個我也想知道,有一個辦法,可以采用一個統一的數據庫訪問平臺。
            對所有的系統開放接口,然后每個系統保存自己相關的數據,平臺保存公共數據。

            這個只是我的猜測,不知道騰訊是不是有更好的辦法、  回復  更多評論   

            # re: 大規模多人在線系統的思考 2008-06-14 11:03 true

            系統的架構按支撐的業務來劃分,還是比較穩定的,大同小異,關鍵是怎么實現,而且是高校的實現。我覺得  回復  更多評論   

            # re: 大規模多人在線系統的思考 2008-06-14 11:10 Hellfire

            @true
            高效的實現,是后期的細節工作,前期的努力,不應該在高效,而在于把功能實現,優化是需要時間的。  回復  更多評論   

            # re: 大規模多人在線系統的思考 2008-06-14 18:22 Kven

            看了大大的2篇文章,小弟覺得大大對Server的研究很深。
            其實我有想在家用幾臺二手舊電腦(就是那些網吧不要的那些),
            組合一個MMO游戲服務器(朋友和朋友之間的)。
            大大你覺得我的想法行嗎?(我怕買了回來什么都弄不到,心痛)  回復  更多評論   

            # re: 大規模多人在線系統的思考 2008-06-18 14:07 阿福

            謝謝!
            看起來好像是大家都懂得的道理,第一次有人清晰的說出來,還是覺得受益匪淺。  回復  更多評論   

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品无码一区二区三区日韩| 亚洲女久久久噜噜噜熟女| 婷婷久久综合九色综合98| 97精品伊人久久久大香线蕉| 久久免费视频6| 国产99久久精品一区二区| 久久精品无码一区二区三区免费 | 伊人色综合久久天天网| 精品久久久久久久国产潘金莲| 久久精品人人做人人爽电影蜜月| 国产精品VIDEOSSEX久久发布| 少妇熟女久久综合网色欲| 亚洲国产精品一区二区久久| 中文字幕无码久久精品青草| 久久久精品人妻一区二区三区蜜桃| 国产精品激情综合久久| 精品久久久久久亚洲精品 | 蜜桃麻豆WWW久久囤产精品| 国产精品美女久久久| 亚洲国产香蕉人人爽成AV片久久| 久久久久四虎国产精品| 久久久无码精品亚洲日韩蜜臀浪潮 | 91久久九九无码成人网站| 亚洲伊人久久大香线蕉综合图片| 久久人妻少妇嫩草AV蜜桃| 99久久伊人精品综合观看| 久久人爽人人爽人人片AV| 久久精品一区二区三区AV| 性高湖久久久久久久久AAAAA| 久久强奷乱码老熟女网站| 久久综合九色综合欧美就去吻 | 久久久久国产精品嫩草影院| 香蕉久久夜色精品国产尤物| 合区精品久久久中文字幕一区| 九九久久精品国产| 久久久久久av无码免费看大片| 九九久久精品国产| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久国产成人精品国产成人亚洲| 91精品观看91久久久久久| 一本大道加勒比久久综合|