基于Erlang/OTP的游戲服務(wù)器端通用模塊的設(shè)計(jì)與實(shí)現(xiàn)
發(fā)布時(shí)間:2021-01-05 18:45
隨著移動設(shè)備硬件的不斷普及以及互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,加上人們?nèi)找嬖鲩L的精神娛樂需求,基于移動設(shè)備的網(wǎng)絡(luò)游戲行業(yè)逐漸成為發(fā)展極其迅速的行業(yè)之一,而服務(wù)器端則是網(wǎng)絡(luò)游戲的重要組成部分,承載著服務(wù)諸多客戶端的任務(wù)。而基于Erlang/OTP的游戲服務(wù)器端,則憑借著擅長處理高并發(fā)、可靠的網(wǎng)絡(luò)服務(wù)、迭代迅速等特點(diǎn),受到很多游戲項(xiàng)目的歡迎。本文立足于實(shí)際應(yīng)用,結(jié)合了在實(shí)習(xí)工作內(nèi)容中面臨的問題以及積累的經(jīng)驗(yàn),論述了一種可行的基于Erlang/OTP的游戲服務(wù)器端的架構(gòu),在此基礎(chǔ)之上嘗試進(jìn)行大多數(shù)游戲的服務(wù)器端中不可避免的通用技術(shù)模塊的設(shè)計(jì)與實(shí)現(xiàn)。包括:使用本地緩存ETS內(nèi)存表的參數(shù)配置表的加載方式;一個便于擴(kuò)展數(shù)據(jù)庫集群,以代理服務(wù)器的方式訪問數(shù)據(jù)庫,基于emysql與ProtoBuf的便捷、易擴(kuò)展的數(shù)據(jù)存取方式;通用服務(wù)器行為模式genserver在緩寫機(jī)制以及id分配上的應(yīng)用;分布式緩存路由算法的改進(jìn),數(shù)據(jù)淘汰策略,以及緩存核心模塊的實(shí)現(xiàn)。在通用技術(shù)模塊實(shí)現(xiàn)的支持下,能夠基本實(shí)現(xiàn)大多數(shù)游戲服務(wù)器端對于常數(shù)參數(shù)讀取、永久層數(shù)據(jù)存取、緩存、功能便捷擴(kuò)展等方面的需要。在此基礎(chǔ)上,...
【文章來源】:山東大學(xué)山東省 211工程院校 985工程院校 教育部直屬院校
【文章頁數(shù)】:131 頁
【學(xué)位級別】:碩士
【部分圖文】:
圖1-1第一代服務(wù)器架構(gòu)??服務(wù)器
用圖形界面進(jìn)行人機(jī)交互。同時(shí),計(jì)算機(jī)的逐漸普及以及游戲內(nèi)容的逐步豐富,??使得原來的服務(wù)器模型變得不堪重負(fù),于是就出現(xiàn)了使用多臺game^vr的分區(qū)??分服模型。早起在玩家過多,服務(wù)器承載量接近上限的時(shí)候,就使用類似的方式,??增加更多的服務(wù)器,架設(shè)“平行世界”,不同服務(wù)器上的玩家處于不同空間,賬??號獨(dú)立,相互之間沒有往來。最開始時(shí),多臺服務(wù)器同時(shí)訪問訪問數(shù)據(jù)庫,大量??的重復(fù)訪問、數(shù)據(jù)交換,使得數(shù)據(jù)庫的訪問效率成為服務(wù)器的新瓶頸。于是就出??現(xiàn)了數(shù)據(jù)庫代理0)B?Proxy),如圖1-2所示,作為game服務(wù)器與db的中間件,??維護(hù)連接池,對應(yīng)用程序屏蔽后端數(shù)據(jù)庫細(xì)節(jié),降低訪問數(shù)據(jù)庫的負(fù)擔(dān)。??game?svr1?????O???<——〇?■無阻塞?tJ??中關(guān)?\?/?/?/??player?(client)?^?\??,???r^l?\??game?svr2????V??O?<JH>??■?I?線程無阻塞?Proxy?db??rh消息隊(duì)列?/??入?9?J?/??player?(client)??j??,丨?/??V????game_svr3????j??4-W線程無阻塞??H-j?圖1-2第二代服務(wù)器架構(gòu)??player?(client)????此外,在第二代游戲服務(wù)器發(fā)展的過程中,還產(chǎn)生了每個場景分配一個線程??的異步多線程模式,用場景數(shù)量來控制線程數(shù)量不會很多,在同一個場景中的玩??家處于同一線程,玩家跨場景時(shí)進(jìn)行通知。同時(shí),隨著游戲的運(yùn)行,單個服務(wù)器??的玩家數(shù)量必然會出現(xiàn)減少,于是就產(chǎn)生了后期服務(wù)器合并、遷移的一套較為成??熟的運(yùn)
?山東大學(xué)碩士學(xué)位論文???互的功能從game服務(wù)中分離放到代理服務(wù)器中。有了這樣的過程,就會考慮是??不是可以繼續(xù)拆分。對于迭代較快的游戲服務(wù)器而言,功能模塊大多是快速增長??的,拆分必然是越細(xì)化功能越好。比如如圖1-3所示的模型,把跟游戲房間相關(guān)??相關(guān)的邏輯提取到r〇〇m_SVr,公共的世界邏輯、場景、聊天等分別放到w〇rld_svr??集群,scene_svr,chat_svr等服務(wù)器。在這種類型的服務(wù)器架構(gòu)中,每個服務(wù)??器所負(fù)責(zé)的功能相對單一,壓力分散了,性能也會有較為明顯的提升。本文主要??研究的內(nèi)容也是類似于該種服務(wù)器架構(gòu)。??”?v??db?svr?cluster??game?svr?world?svr?rn??cluster?cluster?S?mysql??門?嚴(yán)—…?丨?f…、■■■.-」u??丫?—?iL?a??人—U?*「?i:??player?(client)?1?room?svr?scene?svr?貨"??I—???U??圖1-3第三代服務(wù)器架構(gòu)?k?chat?svr?^??1.2.2?Erlang/OTP技術(shù)發(fā)展現(xiàn)狀??Erlang問世于1987年,由瑞典電信設(shè)備制造商愛立信所轄的CS-Lab開發(fā),??開發(fā)目的是一種能夠應(yīng)對大規(guī)模并發(fā)活動的語言以及運(yùn)行環(huán)境,最初只是為了電??信行業(yè)的各種業(yè)務(wù)需求進(jìn)行定制開發(fā),被應(yīng)用在愛立信的交換機(jī)等電信設(shè)備上。??1991年愛立信發(fā)布了?Erlang虛擬機(jī)的最初版本,并逐漸將Erlang應(yīng)用到其他??項(xiàng)目中。1996年,愛立信又為Erlang提供了一個實(shí)用且穩(wěn)定的0TP軟件庫,并??在1998年開
【參考文獻(xiàn)】:
期刊論文
[1]游戲產(chǎn)品的策劃和運(yùn)營研究[J]. 鄔琦濤. 衛(wèi)星電視與寬帶多媒體. 2019(24)
[2]論游戲出海與中國文化軟實(shí)力建設(shè)[J]. 劉程悅,張宏樹. 今傳媒. 2019(11)
[3]具有Erlang分布供應(yīng)提前期的服務(wù)—庫存系統(tǒng)最優(yōu)控制策略[J]. 狄俊珂,龔紅仿,孫中宇. 長沙理工大學(xué)學(xué)報(bào)(自然科學(xué)版). 2019(03)
[4]基于數(shù)據(jù)庫代理實(shí)現(xiàn)數(shù)據(jù)庫分表、分庫訪問的方案研究[J]. 姬渭孟,于雪蓮. 數(shù)字通信世界. 2019(09)
[5]銀行核心系統(tǒng)分布式數(shù)據(jù)庫解決方案[J]. 俞義方,呂達(dá). 金融電子化. 2019(06)
[6]移動邊緣網(wǎng)絡(luò)中計(jì)算遷移與內(nèi)容緩存研究綜述[J]. 張開元,桂小林,任德旺,李敬,吳杰,任東勝. 軟件學(xué)報(bào). 2019(08)
[7]Memcached在Web緩存中的應(yīng)用[J]. 閻麗欣. 電子技術(shù)與軟件工程. 2019(08)
[8]Redis分布式緩存實(shí)現(xiàn)與解析[J]. 周智. 信息通信. 2018(06)
[9]一種分布式緩存系統(tǒng)的關(guān)鍵技術(shù)及應(yīng)用[J]. 屠要峰,劉輝,張國良,劉春. 計(jì)算機(jī)科學(xué). 2018(05)
[10]MMORPG游戲服務(wù)器端的設(shè)計(jì)與實(shí)現(xiàn)[J]. 劉子豪. 信息與電腦(理論版). 2018(01)
碩士論文
[1]Erlang/otp框架核心算法性能優(yōu)化及應(yīng)用研究[D]. 涂傳威.南昌大學(xué) 2019
[2]基于Erlang的幀同步游戲服務(wù)器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 褚蘊(yùn)威.華中科技大學(xué) 2017
本文編號:2959114
【文章來源】:山東大學(xué)山東省 211工程院校 985工程院校 教育部直屬院校
【文章頁數(shù)】:131 頁
【學(xué)位級別】:碩士
【部分圖文】:
圖1-1第一代服務(wù)器架構(gòu)??服務(wù)器
用圖形界面進(jìn)行人機(jī)交互。同時(shí),計(jì)算機(jī)的逐漸普及以及游戲內(nèi)容的逐步豐富,??使得原來的服務(wù)器模型變得不堪重負(fù),于是就出現(xiàn)了使用多臺game^vr的分區(qū)??分服模型。早起在玩家過多,服務(wù)器承載量接近上限的時(shí)候,就使用類似的方式,??增加更多的服務(wù)器,架設(shè)“平行世界”,不同服務(wù)器上的玩家處于不同空間,賬??號獨(dú)立,相互之間沒有往來。最開始時(shí),多臺服務(wù)器同時(shí)訪問訪問數(shù)據(jù)庫,大量??的重復(fù)訪問、數(shù)據(jù)交換,使得數(shù)據(jù)庫的訪問效率成為服務(wù)器的新瓶頸。于是就出??現(xiàn)了數(shù)據(jù)庫代理0)B?Proxy),如圖1-2所示,作為game服務(wù)器與db的中間件,??維護(hù)連接池,對應(yīng)用程序屏蔽后端數(shù)據(jù)庫細(xì)節(jié),降低訪問數(shù)據(jù)庫的負(fù)擔(dān)。??game?svr1?????O???<——〇?■無阻塞?tJ??中關(guān)?\?/?/?/??player?(client)?^?\??,???r^l?\??game?svr2????V??O?<JH>??■?I?線程無阻塞?Proxy?db??rh消息隊(duì)列?/??入?9?J?/??player?(client)??j??,丨?/??V????game_svr3????j??4-W線程無阻塞??H-j?圖1-2第二代服務(wù)器架構(gòu)??player?(client)????此外,在第二代游戲服務(wù)器發(fā)展的過程中,還產(chǎn)生了每個場景分配一個線程??的異步多線程模式,用場景數(shù)量來控制線程數(shù)量不會很多,在同一個場景中的玩??家處于同一線程,玩家跨場景時(shí)進(jìn)行通知。同時(shí),隨著游戲的運(yùn)行,單個服務(wù)器??的玩家數(shù)量必然會出現(xiàn)減少,于是就產(chǎn)生了后期服務(wù)器合并、遷移的一套較為成??熟的運(yùn)
?山東大學(xué)碩士學(xué)位論文???互的功能從game服務(wù)中分離放到代理服務(wù)器中。有了這樣的過程,就會考慮是??不是可以繼續(xù)拆分。對于迭代較快的游戲服務(wù)器而言,功能模塊大多是快速增長??的,拆分必然是越細(xì)化功能越好。比如如圖1-3所示的模型,把跟游戲房間相關(guān)??相關(guān)的邏輯提取到r〇〇m_SVr,公共的世界邏輯、場景、聊天等分別放到w〇rld_svr??集群,scene_svr,chat_svr等服務(wù)器。在這種類型的服務(wù)器架構(gòu)中,每個服務(wù)??器所負(fù)責(zé)的功能相對單一,壓力分散了,性能也會有較為明顯的提升。本文主要??研究的內(nèi)容也是類似于該種服務(wù)器架構(gòu)。??”?v??db?svr?cluster??game?svr?world?svr?rn??cluster?cluster?S?mysql??門?嚴(yán)—…?丨?f…、■■■.-」u??丫?—?iL?a??人—U?*「?i:??player?(client)?1?room?svr?scene?svr?貨"??I—???U??圖1-3第三代服務(wù)器架構(gòu)?k?chat?svr?^??1.2.2?Erlang/OTP技術(shù)發(fā)展現(xiàn)狀??Erlang問世于1987年,由瑞典電信設(shè)備制造商愛立信所轄的CS-Lab開發(fā),??開發(fā)目的是一種能夠應(yīng)對大規(guī)模并發(fā)活動的語言以及運(yùn)行環(huán)境,最初只是為了電??信行業(yè)的各種業(yè)務(wù)需求進(jìn)行定制開發(fā),被應(yīng)用在愛立信的交換機(jī)等電信設(shè)備上。??1991年愛立信發(fā)布了?Erlang虛擬機(jī)的最初版本,并逐漸將Erlang應(yīng)用到其他??項(xiàng)目中。1996年,愛立信又為Erlang提供了一個實(shí)用且穩(wěn)定的0TP軟件庫,并??在1998年開
【參考文獻(xiàn)】:
期刊論文
[1]游戲產(chǎn)品的策劃和運(yùn)營研究[J]. 鄔琦濤. 衛(wèi)星電視與寬帶多媒體. 2019(24)
[2]論游戲出海與中國文化軟實(shí)力建設(shè)[J]. 劉程悅,張宏樹. 今傳媒. 2019(11)
[3]具有Erlang分布供應(yīng)提前期的服務(wù)—庫存系統(tǒng)最優(yōu)控制策略[J]. 狄俊珂,龔紅仿,孫中宇. 長沙理工大學(xué)學(xué)報(bào)(自然科學(xué)版). 2019(03)
[4]基于數(shù)據(jù)庫代理實(shí)現(xiàn)數(shù)據(jù)庫分表、分庫訪問的方案研究[J]. 姬渭孟,于雪蓮. 數(shù)字通信世界. 2019(09)
[5]銀行核心系統(tǒng)分布式數(shù)據(jù)庫解決方案[J]. 俞義方,呂達(dá). 金融電子化. 2019(06)
[6]移動邊緣網(wǎng)絡(luò)中計(jì)算遷移與內(nèi)容緩存研究綜述[J]. 張開元,桂小林,任德旺,李敬,吳杰,任東勝. 軟件學(xué)報(bào). 2019(08)
[7]Memcached在Web緩存中的應(yīng)用[J]. 閻麗欣. 電子技術(shù)與軟件工程. 2019(08)
[8]Redis分布式緩存實(shí)現(xiàn)與解析[J]. 周智. 信息通信. 2018(06)
[9]一種分布式緩存系統(tǒng)的關(guān)鍵技術(shù)及應(yīng)用[J]. 屠要峰,劉輝,張國良,劉春. 計(jì)算機(jī)科學(xué). 2018(05)
[10]MMORPG游戲服務(wù)器端的設(shè)計(jì)與實(shí)現(xiàn)[J]. 劉子豪. 信息與電腦(理論版). 2018(01)
碩士論文
[1]Erlang/otp框架核心算法性能優(yōu)化及應(yīng)用研究[D]. 涂傳威.南昌大學(xué) 2019
[2]基于Erlang的幀同步游戲服務(wù)器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 褚蘊(yùn)威.華中科技大學(xué) 2017
本文編號:2959114
本文鏈接:http://sikaile.net/shoufeilunwen/xixikjs/2959114.html
最近更新
教材專著