首頁  >  文章  >  後端開發  >  使用 kruiseGame 進行雲端原生遊戲

使用 kruiseGame 進行雲端原生遊戲

王林
王林原創
2024-09-03 14:17:29353瀏覽

什麼是克魯斯遊戲?

kruise-game 是 openkruise 旗下的一個開源項目,旨在為遊戲工作負載(即遊戲伺服器)帶來雲端原生轉型。

但是遊戲伺服器到底是什麼?
遊戲伺服器基本上就是虛擬機器或容器,處理 PVP 多人線上遊戲後端的核心功能

下面我展示了現代 PvP 線上遊戲使用的基本遊戲伺服器架構

Cloud Native gaming with kruiseGame

為什麼我們真的需要克魯斯遊戲。預設的 k8s 資源不足以滿足遊戲工作負載嗎?

現代 PvP 遊戲變得越來越複雜,例如,它們需要多個遊戲伺服器來處理不同類型的服務。
現代 PvP 遊戲(例如 valorant)需要遊戲伺服器進行遊說、配對,以及運行實際遊戲邏輯和管理遊戲狀態的伺服器。處理如此多的遊戲伺服器是一項艱鉅的任務,無法手動完成。那現在怎麼辦?

我們有 kubernetes 來拯救。 K8s 具有自動化操作和管理
功能可以為我們處理這個負擔,只需部署您的遊戲伺服器映像,我們就完成了,對嗎?不是真的

我希望事情這麼簡單。問題是你沒有在這裡部署常用的無狀態 Web 應用程式。遊戲伺服器不同,它們的要求也不同。 k8s 預設資源適合無狀態應用程序,但遊戲伺服器有更複雜的生命週期,它們是有狀態的,而且它們的網路要求也不同。

  • 首先,遊戲伺服器需要直接無損連接到客戶端(udp 連線),為此我們需要 pod 的固定 IP 位址,k8s pod 的 IP 在刪除、縮放期間會變更。

  • 如果將pod 用於遊戲伺服器,您也缺乏對pod 的控制,有一種稱為滾動更新的東西,您可以更新遊戲伺服器的某些實例來測試更新,並逐漸推廣到其他實例防止停機,K8s 調度程式不知道您正在使用遊戲伺服器,它會以隨機方式更新pod,基本上您無法控制遊戲伺服器的更新策略。所以您對遊戲伺服器更新幾乎沒有靈活性。

為了緩解這些問題,kruise-game 定義了兩個專門為遊戲伺服器工作負載設計的自訂資源 gameServergameserverSet

  • gameServer:指指定遊戲伺服器進行維運與管理作業的抽象。主要用於遊戲伺服器的更新順序控制、狀態控制、遊戲伺服器網路變更等運維和管理操作。

  • gameServerSet:指一組遊戲伺服器生命週期管理的抽象。主要用於副本數量管理、遊戲伺服器啟動等生命週期控制。

kruise-game 提供的遊戲伺服器管理功能:-

  • 基於鏡像的熱更新和配置的熱重載

  • 更新、刪除、隔離指定遊戲伺服器

  • 內建多種網路模型(固定IP位址與連接埠、無損直連、全球加速)

  • 自動縮放

  • 自動化運作(服務品質)

  • 獨立於雲端服務供應商

  • 複雜的遊戲伺服器編排

下圖展示了 kruise-game 在 k8s 上的部署架構

Cloud Native gaming with kruiseGame

開始玩克魯斯遊戲:0

  1. 取得 k8s 群集和 helm

你需要一個 kruise-game 的 k8s 集群,獲得 k8s 集群的最簡單方法是在你的機器上安裝 minikube,同時確保你的機器上安裝了 helm。

2.啟動 minikube

minikube start 

3.使用helm安裝kruise-game

#kruise-game relies on openkruise so you need to install openkruise first
# Firstly add openkruise charts repository if you haven't do this.
$ helm repo add openkruise https://openkruise.github.io/charts/
# [Optional]
$ helm repo update
# Install the latest version.
$ helm install kruise openkruise/kruise --version 1.6.3
#now instakk kruise-game
$ helm install kruise-game openkruise/kruise-game --version 0.8.0

4.前往您的 minikube 儀表板

minikube dashboard 

5.你應該有 kruise-game-system 命名空間,恭喜你安裝了 kruise-game

Cloud Native gaming with kruiseGame

有關 kruise-game 的更多資訊和詳細信息,請參閱 kruise-game 文件。

感謝您的閱讀,希望您喜歡這個:)。

以上是使用 kruiseGame 進行雲端原生遊戲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn