淺談Go語言自研的分布式游戲服務(wù)器架構(gòu)

引言:使用Go語言開發(fā)游戲已經(jīng)有5年了允睹,做了三款上線手游棉圈,一直采用的都是我們自研的分布式游戲服務(wù)器架構(gòu)榕酒。最近我們想把它分享一下胚膊,總結(jié)一下這幾年的經(jīng)驗。


一想鹰、 架構(gòu)圖

分布式游戲服務(wù)器架構(gòu)圖

1. CDN:負(fù)責(zé)游戲客戶端的代碼熱更新紊婉、游戲內(nèi)的廣告圖

2. 版控服務(wù)器:負(fù)責(zé)版本更新控制、區(qū)服狀態(tài)辑舷、登錄歷史

3. 中心服務(wù)器:用于控制所有服務(wù)器喻犁,提供服務(wù)注冊與發(fā)現(xiàn),服務(wù)配置與控制

4. 網(wǎng)關(guān)服務(wù)器:用于客戶端連接與通信何缓,所有消息都會通過網(wǎng)關(guān)進行轉(zhuǎn)發(fā)

5. 單區(qū)服務(wù)器:用于處理單區(qū)的相關(guān)業(yè)務(wù)

6. 跨區(qū)服務(wù)器:用于處理跨區(qū)的相關(guān)業(yè)務(wù)

7. 鏡像服務(wù)器:用于處理無狀態(tài)的業(yè)務(wù)株汉,如:戰(zhàn)斗、匹配

二歌殃、 通信協(xié)議

1. 客戶端與版控服務(wù)器采用的是HTTP + Json通信協(xié)議

2. 客戶都與網(wǎng)關(guān)服務(wù)器采用的是Socket + Protobuf通信協(xié)議

3. 中心服務(wù)器乔妈、網(wǎng)關(guān)服務(wù)器、單區(qū)服務(wù)器等內(nèi)部都是采用Socket + Protobuf通信協(xié)議

三氓皱、 數(shù)據(jù)存儲

1. 游戲數(shù)據(jù)存儲:單區(qū)服務(wù)器路召、跨區(qū)服務(wù)器都是采用MySQL進行游戲數(shù)據(jù)存儲

2. 緩存數(shù)據(jù)存儲:單區(qū)服務(wù)器為了提高效率,會采用Memcache進行數(shù)據(jù)緩存

3. 文件數(shù)據(jù)存儲:單區(qū)服務(wù)器波材、跨服服務(wù)器都會用文件存儲來備份一些臨時數(shù)據(jù)股淡;戰(zhàn)斗服務(wù)器會將戰(zhàn)報存儲到文件中。

四廷区、 中心服務(wù)器

中心服務(wù)器是個單點唯灵,維護著區(qū)服信息、節(jié)點信息隙轻、配置信息埠帕,用于其他服務(wù)器來進行讀取。

1. 只有當(dāng)中心服務(wù)器啟動后玖绿,其他服務(wù)器才能啟動并注冊上去敛瓷;

2. 中心服務(wù)器在運行過程中,會與其他服務(wù)器進行PING斑匪,來保持連接呐籽,并且收集運行狀態(tài);

3. 中心服務(wù)器掛了后,其他服務(wù)器不會掛狡蝶,只是不能支持新服務(wù)器啟動與配置庶橱;

4. 中心服務(wù)器配套一個可視化的控制臺,用于架構(gòu)全面監(jiān)控與控制贪惹。

五苏章、 網(wǎng)關(guān)服務(wù)器

1. 每個網(wǎng)關(guān)服務(wù)器可以支持多個區(qū)的連接,但一個區(qū)只能在一個網(wǎng)關(guān)服務(wù)器上馍乙;

2. 網(wǎng)關(guān)服務(wù)器不做業(yè)務(wù)處理,只做鑒權(quán)處理與消息轉(zhuǎn)發(fā)垫释;

3. 網(wǎng)關(guān)服務(wù)器進行了簡單的限流處理丝格。

六、 單區(qū)服務(wù)

1. 單區(qū)服務(wù)包括多個單區(qū)業(yè)務(wù)服務(wù)器棵譬,用于分散業(yè)務(wù)處理壓力显蝌,降低單點風(fēng)險;

2. 單區(qū)服務(wù)會將玩家狀態(tài)保持在內(nèi)存中订咸,以加速業(yè)務(wù)處理曼尊;

3. 單區(qū)服務(wù)會定時保存玩家的狀態(tài)到單區(qū)數(shù)據(jù)庫中;

4. 單區(qū)服務(wù)會將部分玩家下線后的狀態(tài)緩存在Memcache中脏嚷,用于加速玩家登錄骆撇。

七、 跨區(qū)服務(wù)

1. 跨區(qū)服務(wù)也包括多個跨區(qū)業(yè)務(wù)服務(wù)器父叙,用于分散業(yè)務(wù)處理壓力神郊,降低單點風(fēng)險;

2. 跨區(qū)服務(wù)也會將玩法狀態(tài)保持在內(nèi)存中趾唱,以加速業(yè)務(wù)處理涌乳,同樣會定時存儲到跨區(qū)數(shù)據(jù)庫中;

3. 跨區(qū)服務(wù)的跨區(qū)規(guī)則甜癞,是通過中心服務(wù)器采用設(shè)定規(guī)則自動分配夕晓;

八、 鏡像服務(wù)

1. 鏡像服務(wù)包括多個鏡像業(yè)務(wù)服務(wù)器悠咱,例如:戰(zhàn)斗服務(wù)器蒸辆、匹配服務(wù)器、聊天服務(wù)器等析既;

2. 鏡像服務(wù)器的特點是無狀態(tài)吁朦,可以部署多個,玩家請求哪一個都能得到結(jié)果渡贾,避免單點出問題逗宜;

總結(jié):以上便是我們的分布式游戲服務(wù)器架構(gòu),簡單的介紹了一下。后期纺讲,我們會針對架構(gòu)中的不同服務(wù)器角色的框架代碼進行單獨介紹擂仍,包括其中用到的技術(shù)與實現(xiàn)方式,并且和其他的框架進行比較學(xué)習(xí)熬甚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逢渔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乡括,更是在濱河造成了極大的恐慌肃廓,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诲泌,死亡現(xiàn)場離奇詭異盲赊,居然都是意外死亡,警方通過查閱死者的電腦和手機敷扫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門哀蘑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葵第,你說我怎么就攤上這事绘迁。” “怎么了卒密?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵缀台,是天一觀的道長。 經(jīng)常有香客問我哮奇,道長将硝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任屏镊,我火速辦了婚禮依疼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘而芥。我一直安慰自己律罢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布棍丐。 她就那樣靜靜地躺著误辑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歌逢。 梳的紋絲不亂的頭發(fā)上巾钉,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音秘案,去河邊找鬼砰苍。 笑死潦匈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赚导。 我是一名探鬼主播茬缩,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吼旧!你這毒婦竟也來了凰锡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤圈暗,失蹤者是張志新(化名)和其女友劉穎掂为,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體员串,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡勇哗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昵济。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片智绸。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡野揪,死狀恐怖访忿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斯稳,我是刑警寧澤海铆,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站挣惰,受9級特大地震影響卧斟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜憎茂,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一珍语、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竖幔,春花似錦板乙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至馋评,卻和暖如春放接,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背留特。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工纠脾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玛瘸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓乳乌,卻偏偏與公主長得像捧韵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子汉操,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容