一般網路遊戲為了避免在開服初期大量玩家湧入都會考慮到分流及擴容,針對這部分內容我做乙個簡單的歸納分析。
以之前所從事的一款mmog為例,它的設計方式是新手村以副本的形式存在,在伺服器啟動時先建立固定數量的副本,使用者在進入時優先使用這些建立好的副本;如果不夠,根據使用者數和伺服器承受能力不斷的建立副本例項,總體遵循以下分配原則:
1、副本例項如果達到人數上限,則跳過。
每個副本例項都會有人數限制,如果達到人數限制,則將排隊進入的使用者放入下個副本中;如果下個副本滿了,再到下乙個,依次類推。
2、副本例項如果達到分配限制,則跳過。
只根據第一條,會導致所有人數都直接先往第乙個副本中塞,塞滿了再到下乙個副本。這種設計其實不能做到負載平衡,實際上沒有發揮出副本分流的優勢。因此,引入分配限制數量。
分配限制的概念是,一次只往乙個副本例項中加入固定資料的使用者。假如同一時間有60個使用者登入,那麼每個副本例項的分配限制為20,則這60個會分成三批,分別給3個副本例項。這樣基本保證每個副本例項中的使用者數是差不多一樣的多的。
3、滿足上面2個限制的伺服器,選擇人數最少的伺服器
如果上面兩個條件同時滿足,則選擇人數最少的伺服器。
因為每次分流人數都不會是絕對一樣的整數。如果上例中,假如人數不是60,是55,那麼第三個副本中就進入了50-(20*2)=15個人。
這樣再來新使用者時,優先放入第三個副本例項中。
4、優先選擇上次選中的伺服器,只要不滿足2個限制,就不會重新選擇伺服器
這條就容易懂了。兩個限制未滿足時,就不再選擇新的,往上次選中的副本例項中塞。滿足限制條件以後再找新的例項。
通過這種方式能夠比較好的以副本的方式進行使用者分流,減少大量使用者集中在新手村,能有效的減少訊息廣播,減輕網路通訊伺服器與訊息廣播伺服器的壓力。但也有缺點:
1.對於結伴的玩家,可能兩個人在建立使用者後都在遊戲裡,卻無法見面,需要手動切換副本。
2.大號帶小號的時候,很可能無法方便找到小號。
因此,對於以上兩種及類似情形,我們可能還要考慮一些細節設定,比如,在組隊狀態的玩家,優先放入同一副本例項;組隊後,自動切換到隊長所在副本例項等。看具體情況而定了。
網路遊戲伺服器構架設計(一) 前言
鏈結自 這篇blog題目涉及的範圍真大!以至於在這裡需要先寫一篇前言把範圍縮小。選擇寫這樣乙個系列的文章,主要是想給工作了兩年的自己乙個交代,或者說是乙個階段性的總結。兩年時間裡,房價依然再漲,工資依然跑不贏cpi,某人依然在仰望星空。期間很多夢碎了,很多還在堅持著,生活過得波瀾不驚。而我也從剛畢業...
網路遊戲伺服器構架設計(一) 前言
這篇blog題目涉及的範圍真大!以至於在這裡需要先寫一篇前言把範圍縮小。選擇寫這樣乙個系列的文章,主要是想給工作了兩年的自己乙個交代,或者說是乙個階段性的總結。兩年時間裡,房價依然再漲,工資依然跑不贏cpi,某人依然在仰望星空。期間很多夢碎了,很多還在堅持著,生活過得波瀾不驚。而我也從剛畢業是的青澀...
網路遊戲伺服器構架設計(一) 前言
這篇blog題目涉及的範圍真大!以至於在這裡需要先寫一篇前言把範圍縮小。選擇寫這樣乙個系列的文章,主要是想給工作了兩年的自己乙個交代,或者說是乙個階段性的總結。兩年時間裡,房價依然再漲,工資依然跑不贏cpi,某人依然在仰望星空。期間很多夢碎了,很多還在堅持著,生活過得波瀾不驚。而我也從剛畢業是的青澀...