- Java游戲服務(wù)器架構(gòu)實(shí)戰(zhàn)
- 王廣帥編著
- 784字
- 2025-03-19 16:19:10
1.2.1 單體游戲服務(wù)器架構(gòu)
單體游戲服務(wù)器架構(gòu),即運(yùn)行一個(gè)游戲服務(wù)實(shí)例為游戲提供服務(wù),游戲所有的功能實(shí)現(xiàn)都集中在同一個(gè)服務(wù)之中,游戲客戶端通過網(wǎng)絡(luò)直接連接游戲服務(wù)器,與服務(wù)器直接進(jìn)行數(shù)據(jù)交互。很明顯的是,這種架構(gòu)同一個(gè)服務(wù)器支持的同時(shí)在線用戶數(shù)量有限。如果用戶數(shù)量接近或超過單體游戲服務(wù)器的承載量,就需要部署新的服務(wù)器,也叫作分區(qū)分服,即一個(gè)區(qū)一個(gè)服務(wù)器。每個(gè)區(qū)的同時(shí)在線人數(shù)設(shè)置一定上限,而且各個(gè)區(qū)中的游戲用戶是隔離的且不會產(chǎn)生任何交互,單體游戲服務(wù)器架構(gòu)如圖1.1所示。

圖1.1 單體游戲服務(wù)器架構(gòu)
這種架構(gòu)的優(yōu)點(diǎn)如下。
●易于開發(fā):開發(fā)人員不需要進(jìn)行太多的設(shè)計(jì),就可以快速開發(fā)業(yè)務(wù)功能,而且不會有過多的異步調(diào)用。
●易于測試:由于所有的功能都在一起,不需要依賴其他的接口,測試起來非常容易。
●易于部署:由于所有的功能都在一起,部署時(shí)只需要啟動(dòng)一個(gè)進(jìn)程即可,更新服務(wù)時(shí)只需要簡單更新一個(gè)運(yùn)行包即可。
●易于維護(hù):由于代碼層次明確,所有模塊在同一個(gè)項(xiàng)目中,修改時(shí)容易發(fā)現(xiàn)錯(cuò)誤,可以快速改正。
但是缺點(diǎn)也是顯而易見的。
●安全性差:由于客戶端與游戲服務(wù)器直接連接,暴露了服務(wù)器的地址和端口,如果遇到攻擊就無回還余地。
●靈活性差:由于所有的功能堆積在一起,團(tuán)隊(duì)在開發(fā)中可能會產(chǎn)生沖突,導(dǎo)致代碼提交延遲,需要花費(fèi)時(shí)間解決沖突。
●沒有伸縮性:所有服務(wù)都在一個(gè)進(jìn)程,承載量有限,毫無伸縮性,不能擴(kuò)展。
●體驗(yàn)性差:修改一個(gè)功能的bug,必須重啟服務(wù),使所有用戶下線。
由此可見,單體游戲服務(wù)器架構(gòu)適合一些功能不多的小游戲或同時(shí)在線用戶數(shù)量有限的游戲,這類游戲一般在運(yùn)營的時(shí)候是分區(qū)分服的。注冊人數(shù)或同時(shí)在線人數(shù)達(dá)到一定限度時(shí),就開新的區(qū)服(游戲區(qū)服務(wù)器),這樣會導(dǎo)致一些舊的區(qū)服的用戶會越來越少,為了節(jié)約資源,后期會進(jìn)行合服操作,即把不同區(qū)服的用戶數(shù)據(jù)合并到一個(gè)數(shù)據(jù)庫里面,不同區(qū)服的用戶客戶端連接到同一個(gè)服務(wù)器。
- 深入淺出WPF
- Mastering Concurrency in Go
- Mastering Kotlin
- Ray分布式機(jī)器學(xué)習(xí):利用Ray進(jìn)行大模型的數(shù)據(jù)處理、訓(xùn)練、推理和部署
- Xamarin.Forms Projects
- 編譯系統(tǒng)透視:圖解編譯原理
- HTML5+CSS3網(wǎng)站設(shè)計(jì)基礎(chǔ)教程
- Swift 4 Protocol-Oriented Programming(Third Edition)
- Web前端應(yīng)用開發(fā)技術(shù)
- Processing創(chuàng)意編程指南
- Spring 5 Design Patterns
- Mastering Embedded Linux Programming
- Java EE架構(gòu)設(shè)計(jì)與開發(fā)實(shí)踐
- Three.js權(quán)威指南:在網(wǎng)頁上創(chuàng)建3D圖形和動(dòng)畫的方法與實(shí)踐(原書第4版)
- Cinder:Begin Creative Coding