使用 Azure Kubernetes 服務(wù) (AKS) 實(shí)現(xiàn)同步多人游戲

來(lái)源: Microsoft Azure
作者:Microsoft Azure
時(shí)間:2021-01-05
17159
本文將描述GitHub上的此示例中使用的體系結(jié)構(gòu)。請(qǐng)注意,此參考體系結(jié)構(gòu)中的代碼只是一個(gè)指南示例,在用于生產(chǎn)環(huán)境之前,可能還有需要優(yōu)化的地方。

您可以選擇使用托管Azure Kubernetes服務(wù)(AKS),在Azure上使用Kubernetes協(xié)調(diào)程序管理容器化專(zhuān)用游戲服務(wù)器。

本文將描述GitHub上的此示例中使用的體系結(jié)構(gòu)。請(qǐng)注意,此參考體系結(jié)構(gòu)中的代碼只是一個(gè)指南示例,在用于生產(chǎn)環(huán)境之前,可能還有需要優(yōu)化的地方。

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

multiplayer-aks-hosting.png

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

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

Azure Kubernetes服務(wù)-可簡(jiǎn)化Kubernetes的部署和操作。

Azure容器注冊(cè)表-允許為所有類(lèi)型的容器部署存儲(chǔ)映像。

體系結(jié)構(gòu)注意事項(xiàng)

自定義資源定義(CRD)

在此參考體系結(jié)構(gòu)中,通過(guò)使用自定義資源定義(CRD)對(duì)象擴(kuò)展了Kubernetes。這些對(duì)象將用于表示專(zhuān)用游戲服務(wù)器實(shí)體。

具體來(lái)說(shuō),有2個(gè)核心實(shí)體,分別由2個(gè)不同的CRD表示:

DedicatedGameServer:表示多人游戲服務(wù)器本身。每個(gè)DedicatedGameServer都有一個(gè)單獨(dú)對(duì)應(yīng)的子Pod,它將使用游戲服務(wù)器可執(zhí)行文件運(yùn)行容器映像。

DedicatedGameServerCollection:表示將運(yùn)行相同Pod模板的相關(guān)DedicatedGameServers集合,并且可以在集合內(nèi)進(jìn)行縮放(即添加或刪除更多服務(wù)器實(shí)例)。

屬于同一DedicatedGameServerCollection成員的DedicatedGameServer在執(zhí)行環(huán)境方面有很多相似之處,例如,都可以啟動(dòng)相同的多人游戲地圖或相同類(lèi)型的游戲。因此,您可以在游戲中針對(duì)“奪旗”模式創(chuàng)建一個(gè)集合,針對(duì)“征服”模式創(chuàng)建另一個(gè)集合?;蛘?,針對(duì)地圖“X”上的玩家創(chuàng)建一個(gè)集合,針對(duì)地圖“Y”上的玩家創(chuàng)建另一個(gè)集合。

組件

此參考體系結(jié)構(gòu)包含兩個(gè)主要組件,它們都是作為單實(shí)例Kubernetes部署創(chuàng)建的:

API服務(wù)器組件

這是我們項(xiàng)目的API服務(wù)器(與Kubernetes API服務(wù)器無(wú)關(guān))。它包含兩個(gè)子組件:

API服務(wù)器子組件

它提供可由游戲服務(wù)器或外部安排系統(tǒng)(如大廳服務(wù)或Matchmaker)調(diào)用的REST API。

Webhook子組件

一個(gè)Kubernetes準(zhǔn)入Webhook,可驗(yàn)證和修改關(guān)于我們對(duì)Kubernetes API服務(wù)器的CRD的請(qǐng)求。

控制器

Kubernetes控制器是表現(xiàn)為主動(dòng)協(xié)調(diào)進(jìn)程的對(duì)象。簡(jiǎn)而言之,這意味著控制器會(huì)監(jiān)控某個(gè)(或某組)對(duì)象,查看對(duì)象是否達(dá)到理想狀態(tài)以及其實(shí)際狀態(tài)。它會(huì)主動(dòng)比較這兩種狀態(tài),并盡全力使實(shí)際狀態(tài)接近理想狀態(tài)。

此項(xiàng)目包含一組控制器,每個(gè)控制器都會(huì)執(zhí)行協(xié)調(diào)特定對(duì)象集的任務(wù)。所有控制器都基于官方Kubernetes示例控制器和此處的相應(yīng)文檔構(gòu)建而成。此項(xiàng)目中的控制器是為了協(xié)調(diào)我們的自定義資源定義(CRD)對(duì)象,即DedicatedGameServerCollections和DedicatedGameServers。

DedicatedGameServerCollectionController

它負(fù)責(zé)處理DedicatedGameServerCollection的DedicatedGameServer對(duì)象。

DedicatedGameServerController

它負(fù)責(zé)處理DedicatedGameServer對(duì)象的Pod。

DGSActivePlayersAutoScalerController

您可以選擇是否啟動(dòng)它(通過(guò)控制器上的命令行參數(shù)),它負(fù)責(zé)每個(gè)選擇加入Pod自動(dòng)縮放機(jī)制的DedicatedGameServerCollection上的Pod自動(dòng)縮放。

這些組件是它們自己的命名空間的一部分(示例中名為dgs-system),與DedicatedGameServers的命名空間分離。在大型群集場(chǎng)景中,每個(gè)DedicatedGameServerCollections列表可以有一個(gè)命名空間。

公共IP

游戲客戶(hù)端應(yīng)該能夠直接連接到專(zhuān)用游戲服務(wù)器,因此所有節(jié)點(diǎn)都應(yīng)該有一個(gè)公共IP。Azure Kubernetes服務(wù)默認(rèn)不提供公共IP,但您可以使用此GitHub項(xiàng)目來(lái)啟用它。

部署模板

按照這些說(shuō)明創(chuàng)建Azure Kubernetes群集。

安全注意事項(xiàng)

所有API方法都通過(guò)訪問(wèn)代碼進(jìn)行保護(hù),顯示為字符串形式,并保存在名為apiaccesscode的Kubernetes密鑰中。這是在項(xiàng)目安裝過(guò)程中創(chuàng)建的,應(yīng)傳遞到所有方法調(diào)用代碼GET參數(shù)中。默認(rèn)情況下,唯一不要求身份驗(yàn)證的方法是/running方法。但是,可以在API服務(wù)器進(jìn)程命令行參數(shù)中更改方法。

優(yōu)化注意事項(xiàng)

對(duì)于較小的群集,您可以使用適用于所有節(jié)點(diǎn)的單個(gè)Pod(包含API服務(wù)器子組件、Webhook子組件和控制器的Pod)來(lái)實(shí)現(xiàn)簡(jiǎn)化。按照設(shè)計(jì),在Kubernetes群集中,每個(gè)Pod可以與所有其他節(jié)點(diǎn)中的其他Pod對(duì)話(huà)。

multiplayer-aks-hosting-single.png

其他資源和示例

官方Kubernetes文檔

定價(jià)

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

您需要承擔(dān)運(yùn)行這些參考體系結(jié)構(gòu)時(shí)所使用的Azure服務(wù)的費(fèi)用。總金額將因使用情況而異。請(qǐng)參閱參考體系結(jié)構(gòu)中使用的每項(xiàng)服務(wù)的定價(jià)網(wǎng)頁(yè):

Azure流量管理器

Azure Kubernetes服務(wù)

Azure容器注冊(cè)表

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

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于Microsoft Azure,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營(yíng)方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營(yíng)、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開(kāi)了嶄新的一頁(yè),突破了性能、云原生開(kāi)發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家