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