Heim > Artikel > Backend-Entwicklung > Cloud-Native-Gaming mit kruiseGame
Kruise-Game ist ein Open-Source-Projekt unter Openkruise, das darauf abzielt, eine Cloud-native Transformation für Gaming-Workloads, auch bekannt als Spieleserver, zu ermöglichen.
aber was sind Gameserver eigentlich?
Spieleserver sind im Grunde virtuelle Maschinen oder Container, die die Kernfunktionen im Backend von PVP-Multiplayer-Onlinespielen verwalten
unten habe ich die grundlegende Gameserver-Architektur gezeigt, die von modernen PvP-Online-Spielen verwendet wird
Warum brauchen wir wirklich Kruise-Game? Reichen die standardmäßigen k8s-Ressourcen nicht für Gaming-Workloads aus?
Moderne PvP-Spiele werden immer komplexer und erfordern beispielsweise mehrere Spielserver, um verschiedene Arten von Diensten zu verwalten.
Ihr modernes PvP-Spiel wie Valorant benötigt Spielserver für Lobbying, Matchmaking und einen, der die eigentliche Spiellogik ausführt und den Spielstatus verwaltet. Der Umgang mit so vielen Spielservern ist eine große Aufgabe und kann nicht manuell erledigt werden. Was nun?
Nun, wir müssen Kubernetes retten. K8s mit seinem automatisierten Betrieb und Management
Diese Funktionen können diese Belastung für uns bewältigen. Stellen Sie einfach Ihr Gameserver-Image bereit und wir sind fertig, oder? Nicht wirklich
Ich wünschte, es wäre so einfach. Das Problem besteht darin, dass Sie hier nicht Ihre übliche zustandslose Webanwendung bereitstellen. Spielserver sind unterschiedlich und ihre Anforderungen sind unterschiedlich. Die Standardressourcen von k8 sind gut für zustandslose Anwendungen, aber Spielserver haben einen komplexeren Lebenszyklus und sie sind zustandsbehaftet und auch ihre Netzwerkanforderungen sind unterschiedlich.
Zuallererst benötigen Spielserver eine direkte, verlustfreie Verbindung zu Clients (UDP-Verbindung), dafür benötigen wir feste IP-Adressen von Pods, k8s-Pods-IP wird beim Löschen und Skalieren geändert.
Außerdem mangelt es Ihnen an Kontrolle über Pods, wenn Sie diese für Spielserver verwenden. Es gibt ein sogenanntes Rolling Update, bei dem Sie einige Instanzen von Spielservern aktualisieren, um das Update zu testen und es nach und nach auf andere Instanzen auszurollen Verhindern Sie Ausfallzeiten. Der K8-Planer weiß nicht, dass Sie mit Spielservern arbeiten. Er aktualisiert die Pods nach dem Zufallsprinzip. Sie haben im Grunde keine Kontrolle über die Update-Strategie Ihrer Spielserver. Sie haben also wenig bis gar keine Flexibilität bei Spielserver-Updates.
Um diese Probleme zu mildern, definiert kruise-game zwei benutzerdefinierte Ressourcen, die speziell für Spieleserver-Workloads entwickelt wurden: gameServer und gameserverSet
gameServer: Bezieht sich auf die Abstraktion von Betriebs- und Verwaltungsvorgängen auf einem bestimmten Spieleserver. Es wird hauptsächlich für Betriebs- und Wartungsvorgänge sowie für Verwaltungsvorgänge verwendet, z. B. die Aktualisierungssequenzsteuerung, die Zustandssteuerung des Spieleservers und Netzwerkänderungen des Spieleservers.
gameServerSet:Bezieht sich auf die Abstraktion des Lebenszyklusmanagements für eine Gruppe von Spieleservern. Es wird hauptsächlich zur Lebenszyklussteuerung wie der Verwaltung von Replikatnummern und dem Start von Spieleservern verwendet.
Funktionen, die kruise-game für die Verwaltung von Spieleservern bereitstellt:-
Hot-Update basierend auf Bildern und Hot-Reload von Konfigurationen
Aktualisierung, Löschung und Isolierung bestimmter Spieleserver
Mehrere integrierte Netzwerkmodelle (feste IP-Adresse und Port, verlustfreie Direktverbindung und globale Beschleunigung)
Automatische Skalierung
Automatisierte O&M (Servicequalität)
Unabhängig von Cloud-Dienstanbietern
Komplexe Spieleserver-Orchestrierung
Das folgende Bild zeigt die Kruise-Game-Bereitstellungsarchitektur auf k8s
Erste Schritte mit kruise-game :0
Sie benötigen einen K8S-Cluster für das Kruise-Spiel. Der einfachste Weg, einen K8S-Cluster zu erhalten, besteht darin, Minikube auf Ihrem Computer zu installieren. Stellen Sie außerdem sicher, dass Helm auf Ihrem Computer installiert ist.
2.Minikube starten
minikube start
3.Verwenden Sie Helm, um Kruise-Game zu installieren
#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.Gehen Sie zu Ihrem Minikube-Dashboard
minikube dashboard
5.Sie sollten den Namespace kruise-game-system verwenden. Herzlichen Glückwunsch, Sie haben kruise-game installiert
Weitere Informationen und Details zu Kruise-Game finden Sie in der Dokumentation zu Kruise-Game.
Vielen Dank fürs Lesen, ich hoffe, es hat Ihnen gefallen :).
Das obige ist der detaillierte Inhalt vonCloud-Native-Gaming mit kruiseGame. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!