最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

騰訊內(nèi)部技術(shù):《軒轅傳奇》服務(wù)器架構(gòu)演變

2021-07-31 13:31 作者:博毅創(chuàng)為  | 我要投稿

今天給大家分享一下騰訊游戲《軒轅傳奇》的服務(wù)器架構(gòu),講服務(wù)器架構(gòu)如果只是得一個結(jié)果,把架構(gòu)示意圖展示一下,這種沒有什么意義,今天我想從一個每個人都會寫的最簡單的架構(gòu)模型,如何一步一步的演變成《軒轅傳奇》分區(qū)分世界的架構(gòu)。

功能擴(kuò)展性切分與運(yùn)維擴(kuò)展性切分

最簡單的游戲服務(wù)器,一個進(jìn)程搞定所有的功能,比如支持500人同時在線,開一個服A對應(yīng)的玩家稱ClientA, Server一個進(jìn)程,架構(gòu)如下: ClientA------>Server。如果再開第二個服B,如何處理?

方案1: Server 一個進(jìn)程同時支持兩個服的玩家同時游戲,ClientA/B---->ServerA/B,這樣的好處就是跨服通訊非常的方便,在一個進(jìn)程里面,缺點(diǎn)就是ClientA服的玩家引起的宕機(jī)會影響B(tài)服的玩家。同一個進(jìn)程來跑A區(qū),B區(qū),無法發(fā)揮服務(wù)器的多核優(yōu)勢。那么就會演變成方案2。

方案2:A服玩家由ServerA進(jìn)程來提供服務(wù),B服玩家由ServerB進(jìn)程來提供服務(wù),他們部署到一臺機(jī)器上。這樣的相比方案1的優(yōu)點(diǎn)就是一臺機(jī)器上實(shí)現(xiàn)了擴(kuò)容,缺點(diǎn)仍然很明顯就是如果物理機(jī)器壞了,兩個服的玩家都不能正常的游戲。

ClientA------>ServerA

ClientB------>ServerB (ServerA,ServerB部署到一臺機(jī)器上)

再接著演變和拆分,得到方案3。

方案3: 我們把不同的服放到不同的物理機(jī)器上,這樣不同的服就真正的獨(dú)立起來。

ClientA------>ServerA

ClientB------>ServerB (ServerA,ServerB部署到不同機(jī)器上)

總結(jié)一下,方案1到方案2叫做功能可擴(kuò)展性切分,方案2到方案3叫做運(yùn)維擴(kuò)展性切分。

分離公共服

不同的服部署到不同的物理機(jī)器上,不同服之間有一些公共的服務(wù),不用每個服的實(shí)現(xiàn)一個,每個服都架設(shè)一個,所以把這些公共的服務(wù)里單獨(dú)分離出來,于是架構(gòu)演變成如下:

這個時候公共服就是全局唯一的,多個服共用,它就變成了一個單點(diǎn),公共服的單點(diǎn)故障怎么辦?單點(diǎn)故障常用的解決方案就是主-備-從。

按功能分離每個服

上面軒轅里面所說的每個服都按照固定的功能來來分三層: 連接層(tconnd),邏輯層(logic srv), 存儲層(torm svr)如下圖

那么隨之而來的問題又來了,邏輯處理與數(shù)據(jù)持久化在一臺物理機(jī)器上,會到導(dǎo)致DB的文件IO拖慢整個系統(tǒng)(每個服百萬級玩家,幾百個G的數(shù)據(jù))。進(jìn)程運(yùn)行中每日輸出大量的日志,像軒轅每天日志量可達(dá)幾個G的數(shù)據(jù)。更致命的是如果物理機(jī)器崩潰,數(shù)據(jù)庫中的商業(yè)數(shù)據(jù)隨時會丟失,商業(yè)數(shù)據(jù)丟失在長期運(yùn)營的過程中已經(jīng)可以算一個很嚴(yán)重的運(yùn)營事故。所以每個服的架構(gòu)又會做后面的演變。

按重要性分離:分離邏輯計(jì)算與持久化存儲部署

游戲運(yùn)行中的重要數(shù)據(jù)包括了日志與數(shù)據(jù)庫數(shù)據(jù),我們講這些重要性的數(shù)據(jù)需要持久化存儲部署的與邏輯計(jì)算分離開來,重要的數(shù)據(jù)采用主-備-從的方式,確保商業(yè)數(shù)據(jù)的穩(wěn)定性。那么我們的服務(wù)器每個服務(wù)的架構(gòu)演變?nèi)缦?

分區(qū)多世界原型演變

總結(jié)上面的演變,我們把整個軒轅的架構(gòu)圖放出來給大家,存儲與邏輯分離,每個服按功能分成3部分。Cluster級服,全局只有唯一的一個,World級服,每個世界一組,每個服,包含接入,邏輯,存儲。存儲做好分離,做好DB, DR。

公共服進(jìn)一步分離

大體的架構(gòu)定下來了,接下來就是分離一些軒轅里面功能部分,先來分離公共服。如下圖

我們把公共服的一些固定功能,單獨(dú)的拆分出來不同的服務(wù)進(jìn)程,來提供對應(yīng)的服務(wù),比如目錄服,

版本升級,賬號服務(wù)等。這樣把公共服拆分成了一套進(jìn)程。運(yùn)維的時候根據(jù)運(yùn)維需求來把公共服部署一套機(jī)器。

切分軒轅邏輯進(jìn)程

當(dāng)前服的所有玩家都在一個進(jìn)程上,好處就是可以方便的操作到所有玩家,風(fēng)險(xiǎn)也是有的,一個特性的bug會影響到當(dāng)前進(jìn)程上所有其它特性的玩家。接下來我們把邏輯進(jìn)程來進(jìn)行拆分,MMORPG里面拆分邏輯進(jìn)程常用的方法是按照場景來拆,那么我們的架構(gòu)演變?nèi)缦?,把邏輯拆分成世?多個Scene,如下:

讓多個Scene分別服務(wù)一些用戶,World負(fù)責(zé)拉取數(shù)據(jù),協(xié)調(diào)控制所有的Scene。游戲開發(fā)和其它應(yīng)用用開發(fā)最大的不一樣就是,一個產(chǎn)品上線了,結(jié)合玩家玩家運(yùn)營,要經(jīng)常改,上線了才剛剛開始,所有的功能和特性在一個進(jìn)程里面,不斷的更新特性會使得穩(wěn)定性降低,所以我們把那些相對更新少的功能拆分獨(dú)立出來,提升更新對系統(tǒng)穩(wěn)定性造成的風(fēng)險(xiǎn)。

總結(jié)

最后總結(jié)一下,游戲框架如何切分,在軒轅中得到的一些總結(jié)經(jīng)驗(yàn),分享出來,供大家參考:

為可擴(kuò)展性: 一組服,一套進(jìn)程;

為可運(yùn)維性: 一組服,一套機(jī)器;

為可靠性: 弱相關(guān)的功能分離;

提高更新的便利性: 將平凡更新的部分分離;

按服務(wù)的重要性切分: 支付系統(tǒng)獨(dú)立;

按服務(wù)特點(diǎn)切分: 接入,存儲, 邏輯分離;

切分穩(wěn)定 (基礎(chǔ)功能)的與不穩(wěn)定(業(yè)務(wù)邏輯)的

好了,今天的《軒轅傳奇》架構(gòu)演變就分享到這里了,我詳細(xì)的講解了一節(jié)課程,除了分析演變以外,還分享了長線運(yùn)營中的一些經(jīng)驗(yàn),分享給沒有開發(fā)過大型玩家在線游戲的開發(fā)者。

附視頻教程 點(diǎn)擊可直接學(xué)習(xí)

游戲服務(wù)器精品課 / MMORPG游戲服務(wù)器

騰訊內(nèi)部分享:《軒轅傳奇》MMO服務(wù)器技術(shù)架構(gòu)分享

?https://bycwedu.vipwan.cn/promotion_channels/2084891754

騰訊內(nèi)部技術(shù):《軒轅傳奇》服務(wù)器架構(gòu)演變的評論 (共 條)

分享到微博請遵守國家法律
富裕县| 上犹县| 河北省| 呈贡县| 汕头市| 喀什市| 苍溪县| 嘉善县| 桑日县| 峡江县| 德庆县| 邯郸县| 德昌县| 田林县| 莱芜市| 永泰县| 南汇区| 南安市| 四平市| 延安市| 普格县| 庄河市| 西乡县| 鄱阳县| 南丹县| 乐东| 大英县| 翁牛特旗| 延吉市| 吉木萨尔县| 龙游县| 舟曲县| 湟源县| 星座| 鸡泽县| 岳西县| 耿马| 龙口市| 襄汾县| 赞皇县| 喀喇|