支持Unity引擎、Unreal引擎和自定義游戲框架的部署和運(yùn)行,應(yīng)用于 FPS、MOBA、回合制、MMORPG、棋牌游戲中戰(zhàn)斗服、消息 PUSH 等需要保持狀態(tài)的場(chǎng)景。
1. 彈性伸縮
每天有高峰、波谷,每年有節(jié)假日,周末等。玩家曲線(xiàn)動(dòng)態(tài)變化。
游戲每日波動(dòng)曲線(xiàn)
游戲每年波動(dòng)曲線(xiàn)
(1)GSE能將服務(wù)器實(shí)時(shí)伸縮
GSE 可設(shè)置服務(wù)器實(shí)例類(lèi)型和伸縮范圍,實(shí)例將在這個(gè)范圍內(nèi)進(jìn)行伸縮。游戲的訪(fǎng)問(wèn)每天都有高峰和低谷,通常在中午和晚上時(shí),服務(wù)器實(shí)例的數(shù)量將有一個(gè)高峰,在午夜后,服務(wù)器實(shí)例的數(shù)量會(huì)降到最低。GSE 將根據(jù)每天每個(gè)時(shí)刻服務(wù)器的訪(fǎng)問(wèn)量進(jìn)行自動(dòng)伸縮。
(2)GSE能實(shí)現(xiàn)有狀態(tài)的縮容
GSE 不會(huì)縮減有進(jìn)程運(yùn)行的實(shí)例,低負(fù)載觸發(fā)縮容時(shí)通知游戲進(jìn)程正在縮容該臺(tái)服務(wù)器,并屏蔽新的游戲服務(wù)器會(huì)話(huà)分配到該臺(tái)服務(wù)器上,但不強(qiáng)制縮減實(shí)例導(dǎo)致游戲無(wú)法進(jìn)行,等待游戲進(jìn)程上沒(méi)有玩家在對(duì)局時(shí),發(fā)起結(jié)束指令后,才真正觸發(fā)停止進(jìn)程和服務(wù)器的回收。
彈性伸縮的好處是:
· 提高靈活性
-就近調(diào)度,需要時(shí)去拿服務(wù)器,不需要時(shí)退回服務(wù)器。
-容災(zāi)也是一樣,需要時(shí)去拿服務(wù)器,不需要時(shí)退回服務(wù)器。
· 節(jié)省成本
-減少每天、每周、每年空閑資源成本,經(jīng)計(jì)算可節(jié)省20%-30%的成本
-減少就近調(diào)度的成本
-減少容災(zāi)的成本
2. 就近調(diào)度
彈性伸縮是一個(gè)基本前提,強(qiáng)大的調(diào)度資源能力在此基礎(chǔ)上延伸,可以隨時(shí)調(diào)度騰訊云各個(gè)區(qū)域的資源,從而不需要在各個(gè)區(qū)域提前預(yù)留服務(wù)器資源,這讓就近調(diào)度變得簡(jiǎn)單。
GSE提供客戶(hù)端到服務(wù)端的測(cè)速,獲得客戶(hù)端到所有服務(wù)部署區(qū)域的延時(shí),GSE通過(guò)這個(gè)延時(shí)情況進(jìn)行就近調(diào)度。
下面可以看到一組匹配好的玩家,會(huì)被分配到最近的服務(wù)器進(jìn)行對(duì)戰(zhàn)。北京、上海、廣州、成都剛開(kāi)始都可以部署1臺(tái)服務(wù)器,和配置好伸縮策略,這樣在需要時(shí)就能自動(dòng)伸縮。
3. 多地部署,跨區(qū)域容災(zāi)
彈性伸縮是一個(gè)基本前提,GSE可以隨時(shí)調(diào)度騰訊云任何區(qū)域、任何機(jī)型的資源,從而輕松做到容災(zāi)。游戲服務(wù)器隊(duì)列下面包含了各個(gè)區(qū)域的游戲服務(wù)器艦隊(duì)(一組服務(wù)器),業(yè)務(wù)只需要請(qǐng)求游戲服務(wù)器隊(duì)列,游戲服務(wù)器隊(duì)列會(huì)根據(jù)每組游戲服務(wù)器艦隊(duì)的健康狀態(tài)和客戶(hù)端到服務(wù)器的網(wǎng)絡(luò)延時(shí)情況,會(huì)自動(dòng)剔除到有問(wèn)題的區(qū)域,選擇正常的服務(wù)器來(lái)提供服務(wù),正常區(qū)域如果需求旺盛,則會(huì)自動(dòng)擴(kuò)容。不需要提前在多個(gè)區(qū)域部署相同數(shù)量的服務(wù)器,從而達(dá)到0成本容災(zāi)的效果。
4. GSE和普通彈性伸縮的區(qū)別——GSE專(zhuān)注于有狀態(tài)擴(kuò)縮容場(chǎng)景
游戲中有兩個(gè)特殊需求:斷線(xiàn)重連、游戲中不能退出。一般游戲服務(wù)器都是有狀態(tài)的,如何進(jìn)行縮容呢?
GSE的設(shè)計(jì)對(duì)游戲服務(wù)器有三種保護(hù)策略:
1)全保護(hù) :果有進(jìn)程在運(yùn)行的話(huà),不會(huì)縮容
2)不保護(hù):需要縮容時(shí),立即縮容
3)時(shí)限保護(hù):保護(hù)一定期限,比如1個(gè)小時(shí)
5. GSE更新不停服設(shè)計(jì)
GSE擁有極致的資源調(diào)度能力,能夠輕松做到更新不停服。
客戶(hù)端通過(guò)別名alias請(qǐng)求服務(wù)器艦隊(duì)fleetA下的服務(wù)器,版本更新的時(shí)候,新建服務(wù)器艦隊(duì)fleetB,把版本發(fā)布到fleetB上,并把別名alias指向新建的服務(wù)器艦隊(duì)fleetB,客戶(hù)端仍然調(diào)用同一個(gè)別名alias,但訪(fǎng)問(wèn)到fleetB的版本了。FleetB逐漸擴(kuò)容,fleetA逐漸縮容。
以上內(nèi)容就是游戲服務(wù)器引擎Game Server Engine的設(shè)計(jì)了。您可以單獨(dú)使用彈性伸縮、彈性伸縮+就近調(diào)度、彈性伸縮+容災(zāi)。該產(chǎn)品不侵入游戲框架、邏輯代碼,支持unity引擎、unreal引擎,自定義服務(wù)器框架、開(kāi)源框架運(yùn)行,支持C++、C#語(yǔ)言,支持JAVA、PHP、python、lua、Nodejs等支持grpc的語(yǔ)言。