日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《游戏服务器的架构演进》阅读笔记

發(fā)布時(shí)間:2025/4/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《游戏服务器的架构演进》阅读笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

游戲服務(wù)器特征

游戲服務(wù)器端,是一個(gè)會(huì)長期運(yùn)行的程序,并且它還要服務(wù)于多個(gè)不定時(shí),不定點(diǎn)的網(wǎng)絡(luò)請(qǐng)求。所以這類軟件的特點(diǎn)是要非常關(guān)注穩(wěn)定性和性能。這類程序如果需要多個(gè)協(xié)作來提高承載能力,則還要關(guān)注部署和擴(kuò)容的便利性;同時(shí),還需要考慮如何實(shí)現(xiàn)某種程度容災(zāi)需求。由于多進(jìn)程協(xié)同工作,也帶來了開發(fā)的復(fù)雜度,這也是需要關(guān)注的問題。

功能約束,是架構(gòu)設(shè)計(jì)決定性因素?;谟螒蝾I(lǐng)域的功能特征,對(duì)服務(wù)器端系統(tǒng)來說,有以下幾個(gè)特殊的需求:

  • 對(duì)于游戲數(shù)據(jù)和玩家數(shù)據(jù)的存儲(chǔ)

  • 對(duì)玩家數(shù)據(jù)進(jìn)行數(shù)據(jù)廣播和同步

  • 把一部分游戲邏輯在服務(wù)器上運(yùn)算,做好驗(yàn)證,防止外掛。

  • 針對(duì)以上的需求特征,在服務(wù)器端,我們往往會(huì)關(guān)注對(duì)電腦內(nèi)存和CPU的使用,以求在特定業(yè)務(wù)代碼下,能盡量滿足承載量和響應(yīng)延遲的需求。最基本的做法就是“空間換時(shí)間”,用各種緩存的方式來以求得CPU和內(nèi)存空間上的平衡。

    在CPU和內(nèi)存之上,是另外一個(gè)約束因素:網(wǎng)卡。網(wǎng)絡(luò)帶寬直接限制了服務(wù)器的處理能力,所以游戲服務(wù)器架構(gòu)也必定要考慮這個(gè)因素。

    ?

    游戲服務(wù)器架構(gòu)要素

    對(duì)于游戲服務(wù)端架構(gòu),最重要的三個(gè)部分就是,如何使用CPU、內(nèi)存、網(wǎng)卡的設(shè)計(jì):

    內(nèi)存架構(gòu):主要決定服務(wù)器如何使用內(nèi)存,以最大化利用服務(wù)器端內(nèi)存來提高承載量,降低服務(wù)延遲。

    邏輯架構(gòu):設(shè)計(jì)如何使用進(jìn)程、線程、協(xié)程這些對(duì)于CPU調(diào)度的方案。選擇同步、異步等不同的編程模型,以提高服務(wù)器的穩(wěn)定性和承載量??梢苑謪^(qū)分服,也可以采用世界服的方式,將相同功能模塊劃分到不同的服務(wù)器來處理。

    通信模式:決定使用何種方式通訊?;谟螒蝾愋筒煌捎貌煌耐ㄐ拍J?#xff0c;比如http,tcp,udp等。

    ?

    服務(wù)器演化進(jìn)程

    之前的網(wǎng)游服務(wù)器都是分區(qū)分服,玩家都被劃分在不同的服務(wù)器上,每臺(tái)服務(wù)器運(yùn)行的邏輯相同,玩家不能在不同服務(wù)器之間交互。想要更多的玩家在同一世界,保持玩家的活躍度,于是就有了世界服模型了。世界服類型也有以下3種演化:

    一類型(三層架構(gòu))

      網(wǎng)關(guān)部分分離成單端的gate服務(wù)器,DB部分分離為DB服務(wù)器,把網(wǎng)絡(luò)功能單獨(dú)提取出來,讓用戶統(tǒng)一去連接一個(gè)網(wǎng)關(guān)服務(wù)器,再有網(wǎng)關(guān)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)到后端游戲服務(wù)器。而游戲服務(wù)器之間數(shù)據(jù)交換也統(tǒng)一連接到網(wǎng)管進(jìn)行交換。所有有DB交互的,都連接到DB服務(wù)器來代理處理。

    二類型(cluster)

      有了一類型的經(jīng)驗(yàn),后續(xù)肯定是拆分的越細(xì),性能越好,就類似現(xiàn)在微服務(wù),每個(gè)相同的模塊分布到一臺(tái)服務(wù)器處理,多組服務(wù)器集群共同組成一個(gè)游戲服務(wù)端。

    一般地,我們可以將一個(gè)組內(nèi)的服務(wù)器簡單地分成兩類:場景相關(guān)的(如:行走、戰(zhàn)斗等)以及場景不相關(guān)的(如:公會(huì)聊天、不受區(qū)域限制的貿(mào)易等)。經(jīng)??梢砸姷降囊环N方案是:gate服務(wù)器、場景服務(wù)器、非場景服務(wù)器、聊天管理器、AI服務(wù)器以及數(shù)據(jù)庫代理服務(wù)器。如下模型:

    以上中我們簡單的講下服務(wù)器的三種類型功能:

    場景服務(wù)器:它負(fù)責(zé)完成主要的游戲邏輯,這些邏輯包括:角色在游戲場景中的進(jìn)入與退出、角色的行走與跑動(dòng)、角色戰(zhàn)斗(包括打怪)、任務(wù)的認(rèn)領(lǐng)等。場景服務(wù)器設(shè)計(jì)的好壞是整個(gè)游戲世界服務(wù)器性能差異的主要體現(xiàn),它的設(shè)計(jì)難度不僅僅在于通信模型方面,更主要的是整個(gè)服務(wù)器的體系架構(gòu)和同步機(jī)制的設(shè)計(jì)。

    非場景服務(wù)器:它主要負(fù)責(zé)完成與游戲場景不相關(guān)的游戲邏輯,這些邏輯不依靠游戲的地圖系統(tǒng)也能正常進(jìn)行,比如公會(huì)聊天或世界聊天,之所以把它從場景服務(wù)器中獨(dú)立出來,是為了節(jié)省場景服務(wù)器的CPU和帶寬資源,讓場景服務(wù)器能夠盡可能快地處理那些對(duì)游戲流暢性影響較大的游戲邏輯。

    網(wǎng)關(guān)服務(wù)器: 在類型一種的架構(gòu)中,玩家在多個(gè)地圖跳轉(zhuǎn)或者場景切換的時(shí)候采用跳轉(zhuǎn)的模式,以此進(jìn)行跳轉(zhuǎn)不同的服務(wù)器。還有一種方式是把這些服務(wù)器的節(jié)點(diǎn)都通過網(wǎng)關(guān)服務(wù)器管理,玩家和網(wǎng)關(guān)服務(wù)器交互,每個(gè)場景或者服務(wù)器切換的時(shí)候,也有網(wǎng)關(guān)服務(wù)器統(tǒng)一來交換數(shù)據(jù),如此玩家操作會(huì)比較流暢。

    通過這種類型服務(wù)器架構(gòu),因?yàn)閴毫Ψ稚⒘?#xff0c;性能會(huì)有明顯提升,負(fù)載也更大了,包括目前一些大型的 MMORPG游戲就是采用此架構(gòu)。不過每增加一級(jí)服務(wù)器,狀態(tài)機(jī)復(fù)雜度可能會(huì)翻倍,導(dǎo)致研發(fā)和找bug的成本上升,這個(gè)對(duì)開發(fā)組挑戰(zhàn)比較大,沒有經(jīng)驗(yàn),很容出錯(cuò)。

    ?

    閱讀原文:

    https://mp.weixin.qq.com/s?__biz=MzI3MTQ1NzU2NA==&mid=2247483884&idx=1&sn=3547c769a300f1d82cc04e9b1852c6d5&chksm=eac0cd9fddb7448997e38a74e2d26bde259cd2127583e31bc488511bc1fdcd9f35caff27d4a3&scene=21#wechat_redirect

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/iCheny/p/11056463.html

    總結(jié)

    以上是生活随笔為你收集整理的《游戏服务器的架构演进》阅读笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。