在此示例中,游戲服務(wù)器池由Azure Service Fabric管理,負(fù)責(zé)創(chuàng)建和編排Azure虛擬機(jī)規(guī)模集。每個(gè)地區(qū)都將有自己的游戲服務(wù)器池。
體系結(jié)構(gòu)關(guān)系圖
相關(guān)服務(wù)
Azure流量管理器-可根據(jù)延遲情況將玩家連接到最合適的區(qū)域。
Azure Service Fabric-可輕松地在容器中打包、部署和管理可縮放且可靠的游戲服務(wù)器。
部署模板
請(qǐng)參閱此存儲(chǔ)庫,其中包含可在設(shè)置群集時(shí)使用的可自定義的Service Fabric群集示例模板。此存儲(chǔ)庫根據(jù)我們看到的其他開發(fā)者創(chuàng)建的輸入和群集類型構(gòu)建而成,旨在提供各種模板。這些模板適用于Windows和Linux群集。
最基礎(chǔ)的入門模板是此模板。它支持部署運(yùn)行Windows Server 2016數(shù)據(jù)中心的安全的5節(jié)點(diǎn)、單節(jié)點(diǎn)類型Service Fabric群集,其容器位于Standard_D2_v2大小的虛擬機(jī)規(guī)模集上,已開啟Azure診斷并啟用網(wǎng)絡(luò)安全組。
單擊下面的按鈕,將項(xiàng)目部署到您的Azure訂閱:
此操作將觸發(fā)模板部署,即系統(tǒng)會(huì)將azuredeploy.json ARM模板文件部署到您的Azure訂閱,從而創(chuàng)建必要的Azure資源。這可能會(huì)在您的Azure帳戶中產(chǎn)生相應(yīng)費(fèi)用。
請(qǐng)查看一般指南文檔,其中有一篇文章概述了Azure服務(wù)的命名規(guī)則和限制。
游戲服務(wù)器二進(jìn)制文件可存儲(chǔ)在Azure存儲(chǔ)中,也可存儲(chǔ)在Azure容器注冊(cè)表中,因?yàn)檫@兩者都能供Service Fabric使用。
分步操作
玩家的設(shè)備客戶端連接到Azure流量管理器,以傳送要查找游戲服務(wù)器的玩家請(qǐng)求。
Azure流量管理器連接到具有最低延遲的區(qū)域,并指向可獲取可用游戲服務(wù)器的Matchmaker。
Matchmaker包含選擇游戲服務(wù)器所需的所有信息,并且如果需要更多容量,它會(huì)主動(dòng)ping Azure Service Fabric服務(wù),以開始在特定的Service Fabric群集中橫向擴(kuò)展。
Azure Service Fabric服務(wù)收到該請(qǐng)求并開始橫向擴(kuò)展。如果設(shè)置了自動(dòng)縮放,它可能會(huì)根據(jù)已建立的規(guī)則主動(dòng)開始該流程。
游戲服務(wù)器會(huì)在游戲會(huì)話結(jié)束后且服務(wù)器再次可用時(shí),定期向Matchmaker發(fā)送狀態(tài)更新以及它的當(dāng)前IP地址和端口。
每臺(tái)玩家設(shè)備都使用Matchmaker提供的連接信息直接連接到游戲服務(wù)器。
(可選)在游戲會(huì)話結(jié)束后,相關(guān)信息可存儲(chǔ)在Azure存儲(chǔ)帳戶中。
縮放
主要有以下兩種方法:
Matchmaker不控制縮放。Azure Service Fabric擁有縮放要求,即使用Azure Service Fabric自動(dòng)縮放。在本例中,服務(wù)會(huì)根據(jù)游戲服務(wù)器所報(bào)告的負(fù)載或基于資源使用情況動(dòng)態(tài)縮放游戲服務(wù)器。自動(dòng)縮放提供出色的靈活性,支持按需預(yù)配游戲服務(wù)器的其他實(shí)例或分區(qū)。整個(gè)自動(dòng)縮放流程都是自動(dòng)化且透明的,只要您設(shè)置了策略,就無需在游戲服務(wù)器級(jí)別進(jìn)行手動(dòng)縮放操作。自動(dòng)縮放可在創(chuàng)建時(shí)打開,也可以隨時(shí)通過更新打開。
在負(fù)載會(huì)隨著時(shí)間的推移發(fā)生變化的情形中(例如在多人游戲中),通常會(huì)用到自動(dòng)縮放。
或者,如本例中所示,您可以向Matchmaker分配任務(wù)來主動(dòng)告知Azure Service Fabric何時(shí)橫向擴(kuò)展。最佳做法是使用池管理模式。
此模式為以下情形提供了解決方案:應(yīng)用程序要求能夠在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建Service Fabric服務(wù)實(shí)例,最主要是通過調(diào)用CreateServiceAsync進(jìn)行創(chuàng)建。它可讓您注冊(cè)應(yīng)該管理的服務(wù),并將確保已配置的可用服務(wù)實(shí)例數(shù)量在池中可用。
完成部署和初始化后,游戲只需調(diào)用管理器來“索要”一個(gè)服務(wù)實(shí)例,就會(huì)返回一個(gè)指向?qū)嵗闹羔?。可以使用該指針來返回游戲之前用過的由唯一ID確定的實(shí)例,或返回尚未分配的可用實(shí)例。如果有服務(wù)實(shí)例在一段時(shí)間內(nèi)處于空閑狀態(tài),管理器將停用它們,以在群集中打開更多容量。
使用此模式的主要優(yōu)勢(shì)是,在手動(dòng)實(shí)例化新實(shí)例時(shí)可大幅縮短游戲可能延遲的時(shí)間。
請(qǐng)參閱在Server Fabric中進(jìn)行縮放,了解如何構(gòu)建可縮放的游戲。
其他資源和示例
要成功管理Azure Service Fabric游戲和群集,建議執(zhí)行一些操作來優(yōu)化可靠性。請(qǐng)參閱本文檔,其中涵蓋安全性、網(wǎng)絡(luò)、基礎(chǔ)結(jié)構(gòu)即核心以及監(jiān)控等主題。
定價(jià)
如果您沒有Azure訂閱,可以創(chuàng)建免費(fèi)帳戶,開始使用12個(gè)月的免費(fèi)服務(wù)。除非您超出這些服務(wù)的使用限制,否則無需為Azure免費(fèi)帳戶中包含的這些免費(fèi)服務(wù)付費(fèi)。了解如何通過Azure門戶或使用情況文件查看服務(wù)使用情況。
您需要承擔(dān)運(yùn)行這些參考體系結(jié)構(gòu)時(shí)所使用的Azure服務(wù)的費(fèi)用??偨痤~將因使用情況而異。請(qǐng)參閱參考體系結(jié)構(gòu)中使用的每項(xiàng)服務(wù)的定價(jià)網(wǎng)頁:
Azure Service Fabric
Azure流量管理器
您還可以使用Azure定價(jià)計(jì)算器,以配置和估算您計(jì)劃使用的Azure服務(wù)的成本。