游戲服務(wù)器架構(gòu)系列 - 網(wǎng)關(guān)服務(wù)

繼上一篇介紹了的分布式游戲服務(wù)器架構(gòu)筐眷,后面的課程我們將對(duì)于架構(gòu)中的每一種服務(wù)和具體技術(shù)細(xì)節(jié)進(jìn)行詳細(xì)介紹恢准。

首先回顧下游戲服務(wù)器架構(gòu)中的列出的服務(wù),包括:

網(wǎng)關(guān)服務(wù)器

中心服務(wù)器

單區(qū)服務(wù)器

跨區(qū)服務(wù)器

鏡像服務(wù)器


今天我們來(lái)介紹游戲服務(wù)器架構(gòu)中至關(guān)重要的服務(wù):網(wǎng)關(guān)服務(wù)器售担。

服務(wù)描述:即用于維持玩家客戶端的連接勇吊,將玩家發(fā)的游戲請(qǐng)求轉(zhuǎn)發(fā)到具體后端服務(wù)的服務(wù)器。

功能特性:

1. 對(duì)外開(kāi)放:即客戶端需要知道網(wǎng)關(guān)的IP和端口顽决,才能連接上來(lái)短条;

2. 統(tǒng)一入口:架構(gòu)中可能存在很多后端服務(wù),如果沒(méi)有一個(gè)統(tǒng)一入口才菠,則客戶端需要知道每個(gè)后端服務(wù)的IP和端口茸时。

3. 請(qǐng)求轉(zhuǎn)發(fā):由于統(tǒng)一了入口,所以網(wǎng)關(guān)必須能將客戶端的請(qǐng)求轉(zhuǎn)發(fā)到準(zhǔn)確的服務(wù)上鸠儿。

4. 無(wú)感更新:由于玩家連接的是網(wǎng)關(guān)服務(wù)器屹蚊,只要連接不斷;更新后端服務(wù)器對(duì)玩家來(lái)說(shuō)是無(wú)感知的进每,或者感知很少(根據(jù)實(shí)現(xiàn)方式不同)汹粤。


一般情況下,有了以上4個(gè)特性田晚,這個(gè)網(wǎng)關(guān)就可以用了嘱兼。

但是如果只有上面4個(gè)特性,我們用Nginx做為網(wǎng)關(guān)也是可以的贤徒,為什么還需要自己做網(wǎng)關(guān)芹壕?

因?yàn)槲覀兊挠螒蚓W(wǎng)關(guān)還需要具備以下特殊功能:

特殊功能:

1. Session認(rèn)證:即能維護(hù)客戶端是否登錄成功的狀態(tài),對(duì)于未登錄的請(qǐng)求接奈,不予以轉(zhuǎn)發(fā)踢涌,從而預(yù)防惡意攻擊。

2. 流量限流:游戲經(jīng)常會(huì)遇到DDOS攻擊序宦,一個(gè)客戶端可以通過(guò)一個(gè)for循環(huán)一直給你發(fā)請(qǐng)求睁壁,所以必須進(jìn)行限制。

3. 踢下線:游戲維護(hù)時(shí)互捌,為了讓玩家能更新補(bǔ)丁潘明,會(huì)將玩家踢下線,重新走一遍登錄流程秕噪,避免客戶端與服務(wù)端的數(shù)據(jù)不一致钳降,造成顯示上的BUG。此外客服也需要經(jīng)常對(duì)一些違規(guī)的玩家進(jìn)行踢下線處理腌巾。

4. 在線統(tǒng)計(jì):為什么網(wǎng)關(guān)來(lái)做在線統(tǒng)計(jì)呢遂填?因?yàn)橹挥兴兴械耐婕疫B接信息铲觉,所以可以輕松統(tǒng)計(jì)當(dāng)前有多少玩家在線。

5. 協(xié)議加密:為了避免客戶端的惡意攻擊城菊,我們需要將請(qǐng)求進(jìn)行加密备燃,由于統(tǒng)一了入口,所以網(wǎng)關(guān)來(lái)做非常容易凌唬。

6. 心跳檢測(cè):用于檢測(cè)客戶端是否已經(jīng)掉線并齐,一般超過(guò)幾分鐘沒(méi)有收到心跳請(qǐng)求,則認(rèn)為客戶端已經(jīng)掉線客税,直接請(qǐng)求登錄數(shù)據(jù)况褪,讓玩家重新走登錄流程。

集成以上的功能后更耻,便形成了以下網(wǎng)關(guān)服務(wù)架構(gòu)圖:

網(wǎng)關(guān)服務(wù)架構(gòu)圖

這張圖中的路由控制测垛,會(huì)根據(jù)不同游戲類型會(huì)有所變動(dòng),其中:

1. 后端服務(wù)路由表:維護(hù)了后端當(dāng)前有哪些服務(wù)注冊(cè)到網(wǎng)關(guān)了秧均,以及服務(wù)對(duì)應(yīng)哪些區(qū)服的配置信息食侮。

2. 區(qū)服注冊(cè)表:維護(hù)了當(dāng)前開(kāi)了哪些區(qū)服及區(qū)服信息。

3. 終端管理:所有連接上網(wǎng)關(guān)的設(shè)備或進(jìn)程都被認(rèn)為是一個(gè)終端目胡,終端會(huì)有一個(gè)編號(hào)锯七,這個(gè)編號(hào)對(duì)應(yīng)后端服務(wù)編號(hào)或者玩家編號(hào)。當(dāng)需要轉(zhuǎn)發(fā)消息給后端服務(wù)或客戶端時(shí)誉己,就需要從終端管理里找到具體的連接進(jìn)行消息發(fā)送眉尸。


接下來(lái)用圖示介紹一下,客戶端巨双、網(wǎng)關(guān)服務(wù)器噪猾、后端服務(wù)器的交互流程:


客戶端與網(wǎng)關(guān)、后端服務(wù)的交互流程

Step1:客戶端連接網(wǎng)關(guān)服務(wù)器筑累,然后發(fā)送登錄請(qǐng)求給網(wǎng)關(guān)袱蜡;

Step2:網(wǎng)關(guān)直接將登錄請(qǐng)求轉(zhuǎn)發(fā)給對(duì)應(yīng)區(qū)服的后端服務(wù)器進(jìn)行登錄驗(yàn)證;

Step3:后端服務(wù)器驗(yàn)證成功后慢宗,會(huì)返回登錄信息給網(wǎng)關(guān)坪蚁;

Step4:網(wǎng)關(guān)會(huì)根據(jù)登錄信息維持一個(gè)Session映射,用于安全驗(yàn)證和重登判斷婆廊,然后轉(zhuǎn)發(fā)登錄信息給客戶端迅细;

Step5:客戶端收到登錄成功消息后巫橄,就可以發(fā)送業(yè)務(wù)請(qǐng)求給網(wǎng)關(guān)了淘邻;

Step6;網(wǎng)關(guān)收到業(yè)務(wù)請(qǐng)求后湘换,會(huì)先判斷玩家是否登錄過(guò)宾舅,登錄過(guò)的才轉(zhuǎn)發(fā)給后端服務(wù)器统阿,并且在協(xié)議頭增加玩家標(biāo)記;

Step7:后端服務(wù)器收到業(yè)務(wù)請(qǐng)求后筹我,根據(jù)協(xié)議頭的玩家標(biāo)記扶平,找到玩家的數(shù)據(jù)進(jìn)行業(yè)務(wù)處理,然后返回給網(wǎng)關(guān)蔬蕊;

Step8:網(wǎng)關(guān)收到業(yè)務(wù)回復(fù)后结澄,直接返回給客戶端;

PS:上面涉及到的一些關(guān)鍵技術(shù)細(xì)節(jié)岸夯,如:流量限流麻献、協(xié)議加密,將會(huì)在后續(xù)的文章中詳細(xì)介紹算法猜扮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勉吻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旅赢,更是在濱河造成了極大的恐慌齿桃,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煮盼,死亡現(xiàn)場(chǎng)離奇詭異短纵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)孕似,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門踩娘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喉祭,你說(shuō)我怎么就攤上這事养渴。” “怎么了泛烙?”我有些...
    開(kāi)封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵理卑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蔽氨,道長(zhǎng)藐唠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任鹉究,我火速辦了婚禮宇立,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘自赔。我一直安慰自己妈嘹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布绍妨。 她就那樣靜靜地躺著润脸,像睡著了一般柬脸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毙驯,一...
    開(kāi)封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天倒堕,我揣著相機(jī)與錄音,去河邊找鬼爆价。 笑死垦巴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铭段。 我是一名探鬼主播魂那,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稠项!你這毒婦竟也來(lái)了涯雅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤展运,失蹤者是張志新(化名)和其女友劉穎活逆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拗胜,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔗候,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埂软。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锈遥。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖勘畔,靈堂內(nèi)的尸體忽然破棺而出所灸,到底是詐尸還是另有隱情,我是刑警寧澤炫七,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布爬立,位于F島的核電站,受9級(jí)特大地震影響万哪,放射性物質(zhì)發(fā)生泄漏侠驯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一奕巍、第九天 我趴在偏房一處隱蔽的房頂上張望吟策。 院中可真熱鬧,春花似錦的止、人聲如沸檩坚。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)效床。三九已至,卻和暖如春权谁,著一層夾襖步出監(jiān)牢的瞬間剩檀,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工旺芽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沪猴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓采章,卻偏偏與公主長(zhǎng)得像运嗜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悯舟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理担租,服務(wù)發(fā)現(xiàn),斷路器抵怎,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 網(wǎng)絡(luò)游戲的結(jié)構(gòu)分為客戶端與服務(wù)器端奋救,客戶端采用2D繪制引擎或者3D繪制引擎繪制游戲世界的實(shí)時(shí)畫面,服務(wù)器端則負(fù)責(zé)響...
    java成功之路閱讀 2,354評(píng)論 1 11
  • 生日那天,買了蛋糕給喜歡熱鬧的自己姿染,孤單的仿佛全世界就我一個(gè)背亥,可誰(shuí)不是人生路上獨(dú)自負(fù)重前行。 換季的時(shí)候悬赏,...
    April初心閱讀 432評(píng)論 1 0
  • 小明的感冒剛好闽颇,只是嗓子依然有痰轴猎,不時(shí)咳嗽,晚上尤其重进萄,又一次還咳得吐起來(lái)捻脖。 美美中午又沒(méi)睡覺(jué),傍晚時(shí)困得趴在地板...
    于洛閱讀 359評(píng)論 0 1
  • 好久沒(méi)寫日記了中鼠,每天總覺(jué)的睡不夠可婶,吃了飯就想睡覺(jué)!兒子每天從托付回來(lái)總能自己看書援雇,不用我嘮叨矛渴,就是作業(yè)寫的馬虎,不...
    凱峰媽媽閱讀 131評(píng)論 0 0