使用 Azure Service Fabric 實現(xiàn)同步多人游戲

來源: Microsoft Azure
作者:Microsoft Azure
時間:2021-01-05
17818
在此示例中,游戲服務(wù)器池由Azure Service Fabric管理,負(fù)責(zé)創(chuàng)建和編排Azure虛擬機(jī)規(guī)模集。每個地區(qū)都將有自己的游戲服務(wù)器池。

在此示例中,游戲服務(wù)器池由Azure Service Fabric管理,負(fù)責(zé)創(chuàng)建和編排Azure虛擬機(jī)規(guī)模集。每個地區(qū)都將有自己的游戲服務(wù)器池。

體系結(jié)構(gòu)關(guān)系圖

multiplayer-sf-hosting.png

相關(guān)服務(wù)

Azure流量管理器-可根據(jù)延遲情況將玩家連接到最合適的區(qū)域。

Azure Service Fabric-可輕松地在容器中打包、部署和管理可縮放且可靠的游戲服務(wù)器。

部署模板

請參閱此存儲庫,其中包含可在設(shè)置群集時使用的可自定義的Service Fabric群集示例模板。此存儲庫根據(jù)我們看到的其他開發(fā)者創(chuàng)建的輸入和群集類型構(gòu)建而成,旨在提供各種模板。這些模板適用于Windows和Linux群集。

最基礎(chǔ)的入門模板是此模板。它支持部署運行Windows Server 2016數(shù)據(jù)中心的安全的5節(jié)點、單節(jié)點類型Service Fabric群集,其容器位于Standard_D2_v2大小的虛擬機(jī)規(guī)模集上,已開啟Azure診斷并啟用網(wǎng)絡(luò)安全組。

單擊下面的按鈕,將項目部署到您的Azure訂閱:

azure-resource-manager-deploy-button.png

此操作將觸發(fā)模板部署,即系統(tǒng)會將azuredeploy.json ARM模板文件部署到您的Azure訂閱,從而創(chuàng)建必要的Azure資源。這可能會在您的Azure帳戶中產(chǎn)生相應(yīng)費用。

請查看一般指南文檔,其中有一篇文章概述了Azure服務(wù)的命名規(guī)則和限制。

游戲服務(wù)器二進(jìn)制文件可存儲在Azure存儲中,也可存儲在Azure容器注冊表中,因為這兩者都能供Service Fabric使用。

分步操作

玩家的設(shè)備客戶端連接到Azure流量管理器,以傳送要查找游戲服務(wù)器的玩家請求。

Azure流量管理器連接到具有最低延遲的區(qū)域,并指向可獲取可用游戲服務(wù)器的Matchmaker。

Matchmaker包含選擇游戲服務(wù)器所需的所有信息,并且如果需要更多容量,它會主動ping Azure Service Fabric服務(wù),以開始在特定的Service Fabric群集中橫向擴(kuò)展。

Azure Service Fabric服務(wù)收到該請求并開始橫向擴(kuò)展。如果設(shè)置了自動縮放,它可能會根據(jù)已建立的規(guī)則主動開始該流程。

游戲服務(wù)器會在游戲會話結(jié)束后且服務(wù)器再次可用時,定期向Matchmaker發(fā)送狀態(tài)更新以及它的當(dāng)前IP地址和端口。

每臺玩家設(shè)備都使用Matchmaker提供的連接信息直接連接到游戲服務(wù)器。

(可選)在游戲會話結(jié)束后,相關(guān)信息可存儲在Azure存儲帳戶中。

縮放

主要有以下兩種方法:

Matchmaker不控制縮放。Azure Service Fabric擁有縮放要求,即使用Azure Service Fabric自動縮放。在本例中,服務(wù)會根據(jù)游戲服務(wù)器所報告的負(fù)載或基于資源使用情況動態(tài)縮放游戲服務(wù)器。自動縮放提供出色的靈活性,支持按需預(yù)配游戲服務(wù)器的其他實例或分區(qū)。整個自動縮放流程都是自動化且透明的,只要您設(shè)置了策略,就無需在游戲服務(wù)器級別進(jìn)行手動縮放操作。自動縮放可在創(chuàng)建時打開,也可以隨時通過更新打開。

在負(fù)載會隨著時間的推移發(fā)生變化的情形中(例如在多人游戲中),通常會用到自動縮放。

或者,如本例中所示,您可以向Matchmaker分配任務(wù)來主動告知Azure Service Fabric何時橫向擴(kuò)展。最佳做法是使用池管理模式。

此模式為以下情形提供了解決方案:應(yīng)用程序要求能夠在運行時動態(tài)創(chuàng)建Service Fabric服務(wù)實例,最主要是通過調(diào)用CreateServiceAsync進(jìn)行創(chuàng)建。它可讓您注冊應(yīng)該管理的服務(wù),并將確保已配置的可用服務(wù)實例數(shù)量在池中可用。

完成部署和初始化后,游戲只需調(diào)用管理器來“索要”一個服務(wù)實例,就會返回一個指向?qū)嵗闹羔?。可以使用該指針來返回游戲之前用過的由唯一ID確定的實例,或返回尚未分配的可用實例。如果有服務(wù)實例在一段時間內(nèi)處于空閑狀態(tài),管理器將停用它們,以在群集中打開更多容量。

使用此模式的主要優(yōu)勢是,在手動實例化新實例時可大幅縮短游戲可能延遲的時間。

請參閱在Server Fabric中進(jìn)行縮放,了解如何構(gòu)建可縮放的游戲。

其他資源和示例

要成功管理Azure Service Fabric游戲和群集,建議執(zhí)行一些操作來優(yōu)化可靠性。請參閱本文檔,其中涵蓋安全性、網(wǎng)絡(luò)、基礎(chǔ)結(jié)構(gòu)即核心以及監(jiān)控等主題。

定價

如果您沒有Azure訂閱,可以創(chuàng)建免費帳戶,開始使用12個月的免費服務(wù)。除非您超出這些服務(wù)的使用限制,否則無需為Azure免費帳戶中包含的這些免費服務(wù)付費。了解如何通過Azure門戶或使用情況文件查看服務(wù)使用情況。

您需要承擔(dān)運行這些參考體系結(jié)構(gòu)時所使用的Azure服務(wù)的費用??偨痤~將因使用情況而異。請參閱參考體系結(jié)構(gòu)中使用的每項服務(wù)的定價網(wǎng)頁:

Azure Service Fabric

Azure流量管理器

您還可以使用Azure定價計算器,以配置和估算您計劃使用的Azure服務(wù)的成本。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft Azure,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多