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