游戲服務器動態(tài)伸縮設計

一臺服務器的承載量是有限的樱衷,對于一個區(qū)來說,平時可能只需要支持500到1500人左右晶框,這樣一臺服務器可能就可以搞定,但是如果有運營搞活動两踏,打廣告拉流量,可能一個區(qū)的承載量需要支持300到6000的量兜喻,甚至更多梦染。為了適應這樣的不同情況,在游戲服務器設計的時候朴皆,最好能做到服務器可以動態(tài)擴展和收縮帕识,可以根據情況,運行不同的服務器配置遂铡。

玩家進入游戲之前就要確定進入哪個區(qū)肮疗,這個區(qū)在哪個服務器上面是由服務器端分配的。所以需要以下幾張表扒接,來存儲游戲的區(qū)信息和服務器信息

1伪货,游戲區(qū)信息表

分區(qū)ID,分區(qū)名字钾怔,分區(qū)狀態(tài)(主要是:新區(qū)超歌,熱門,活躍蒂教,維護等)

2,游戲區(qū)對應的服務器表

分區(qū)ID脆荷,服務器Id凝垛,服務器ip,服務器端口蜓谋,服務器狀態(tài)(正常梦皮,不可用等),當前在線人數(在分配服務器做為參考值)桃焕,權重值

第二張表是一個一對多的關系剑肯,一個區(qū)對應多個服務器地址,當用戶選擇某一個區(qū)之后观堂,向服務器請求獲取這個區(qū)所在的服務器地址让网。這時,服務器可能根據當前區(qū)所對應的服務器的在線人數或者其它條件师痕,按照一定的算法溃睹,給當前玩家分配一個可以連接的服務器地址,返回它的ip和端口胰坟。這樣就可以實現服務器的動態(tài)擴展了因篇,當一個區(qū)需要增加承載量時,只需要給這個區(qū)增加服務器數量即可。當流量減少竞滓,穩(wěn)定之后咐吼,可以減少服務器數量。


分配服務器地址的算法一般有以下幾種:

1商佑,用戶id求余法

假如當前一區(qū)對應著6臺服務器锯茄,當用戶選擇一區(qū)時,可以根據用戶的id和服務器數量求余莉御,比如serverIdIndex = userId % 6撇吞,serverIndex的值是0到5之間的某個值。這個算法可以讓同一臺用戶使用分配到同一臺服務器上面礁叔。

2牍颈,加權隨機法

假如當前有一區(qū)對應3臺服務器A,B,C,它們有一個權重的屬性琅关,A(1)煮岁,B(3),C(4)涣易,可以這樣計算:

代碼請到此查看画机,簡書的編輯器對代碼支持太差了:http://www.coc88.com/h-nd-166.html?_np=2_323?

3,輪詢法

這個是按照請求順序新症,比如一個區(qū)對應3臺服務器A步氏,B,C徒爹,第一個用戶請求時分配A,第二個用戶分配B荚醒,第三個用戶給C,每四個用戶再給A隆嗅,如果循環(huán)下去界阁。

4,最小在線人數

這個應該是最精確的胖喳,不過需要統(tǒng)計每個服務器的在線人數泡躯,每次用戶請求分配服務器時,遍歷服務器列表丽焊,把最小在線人數的服務器地址分配給這個用戶较剃。

如果游戲服務器沒有網關,以上方案可以直接使用技健,如果游戲服務器有一層網關重付,需要添加網關的信息,分配給用戶的連接地址就是網關的地址凫乖,一個區(qū)可能對應著一個網關确垫,一個網關對應多個服務器弓颈,確定網關之后,再確定網關之后哪個服務器處理業(yè)務消息删掀,需要給客戶端再分配一個服務器ID翔冀,網關根據服務器的ID轉發(fā)客戶端的請求。

在實際應用可披泪,可能會有更多的條件加入進來纤子,以確定用戶連接到哪個服務器,比如服務器是否在維護狀態(tài)款票,人數是否過多等等控硼,所以要根據實際情況選擇和設計。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末艾少,一起剝皮案震驚了整個濱河市卡乾,隨后出現的幾起案子,更是在濱河造成了極大的恐慌缚够,老刑警劉巖幔妨,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異谍椅,居然都是意外死亡误堡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門雏吭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锁施,“玉大人,你說我怎么就攤上這事杖们≌疵眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵胀莹,是天一觀的道長。 經常有香客問我婚温,道長描焰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任栅螟,我火速辦了婚禮荆秦,結果婚禮上,老公的妹妹穿的比我還像新娘力图。我一直安慰自己步绸,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布吃媒。 她就那樣靜靜地躺著瓤介,像睡著了一般吕喘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刑桑,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天氯质,我揣著相機與錄音,去河邊找鬼祠斧。 笑死闻察,一個胖子當著我的面吹牛,可吹牛的內容都是我干的琢锋。 我是一名探鬼主播辕漂,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吴超!你這毒婦竟也來了钉嘹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤烛芬,失蹤者是張志新(化名)和其女友劉穎隧期,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體赘娄,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡仆潮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了遣臼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片性置。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揍堰,靈堂內的尸體忽然破棺而出鹏浅,到底是詐尸還是另有隱情,我是刑警寧澤屏歹,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布隐砸,位于F島的核電站,受9級特大地震影響蝙眶,放射性物質發(fā)生泄漏季希。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一幽纷、第九天 我趴在偏房一處隱蔽的房頂上張望式塌。 院中可真熱鬧,春花似錦友浸、人聲如沸峰尝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽武学。三九已至祭往,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劳淆,已是汗流浹背链沼。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沛鸵,地道東北人括勺。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像曲掰,于是被迫代替她去往敵國和親疾捍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容