Maison > développement back-end > Golang > Jeux cloud natifs avec kruiseGame

Jeux cloud natifs avec kruiseGame

王林
Libérer: 2024-09-03 14:17:29
original
490 Les gens l'ont consulté

Qu'est-ce que le jeu Kruise ?

kruise-game est un projet open source sous openkruise qui vise à apporter une transformation cloud native pour les charges de travail de jeu, c'est-à-dire les serveurs de jeux.

mais que sont réellement les serveurs de jeux ?
les serveurs de jeux sont essentiellement des machines virtuelles ou des conteneurs qui gèrent les fonctionnalités de base du backend du jeu en ligne multijoueur PVP

ci-dessous, j'ai montré l'architecture de serveur de jeu de base utilisée par les jeux en ligne PvP modernes

Cloud Native gaming with kruiseGame

Pourquoi avons-nous vraiment besoin de Kruise-Game. les ressources K8 par défaut ne sont-elles pas suffisantes pour les charges de travail de jeu ?

Les jeux PvP modernes deviennent de plus en plus complexes et nécessitent par exemple plusieurs serveurs de jeux pour gérer différents types de services.
votre jeu PvP moderne comme Valorant a besoin de serveurs de jeu pour le lobbying, le matchmaking et celui qui exécute réellement la logique du jeu et gère l'état du jeu. La gestion d'autant de serveurs de jeu est une tâche importante et ne peut pas être effectuée manuellement. Et maintenant ?

Eh bien, nous avons des Kubernetes à sauver. Des K8 avec son fonctionnement et sa gestion automatisés
Les capacités peuvent gérer ce fardeau pour nous, il suffit de déployer l'image de votre serveur de jeu et nous avons terminé, n'est-ce pas ?. Pas vraiment

J'aurais aimé que ce soit aussi simple. Le problème est que vous ne déployez pas votre application Web sans état habituelle ici. Les serveurs de jeux sont différents et leurs exigences sont différentes. Les ressources par défaut de K8 sont bonnes pour les applications sans état, mais les serveurs de jeux ont un cycle de vie plus complexe et ils sont avec état et leurs exigences réseau sont différentes.

  • Tout d'abord, les serveurs de jeux ont besoin d'une connexion directe sans perte aux clients (connexion UDP), pour cela, nous avons besoin d'adresses IP fixes des pods, l'adresse IP des pods K8 est modifiée lors de la suppression, de la mise à l'échelle.

  • il y a également un manque de contrôle sur les pods si vous les utilisez pour des serveurs de jeux. Il existe une chose appelée mise à jour continue dans laquelle vous mettez à jour certaines instances de serveurs de jeux pour tester la mise à jour et la déployer progressivement sur d'autres instances pour évitez les temps d'arrêt, le planificateur K8s ne sait pas que vous travaillez avec des serveurs de jeux, il mettra à jour les pods de manière aléatoire, en gros, vous n'avez aucun contrôle sur la stratégie de mise à jour de vos serveurs de jeux. Vous avez donc peu ou pas de flexibilité sur les mises à jour des serveurs de jeux. 🎜>

Pour atténuer ces problèmes, Kruise-game définit deux ressources personnalisées conçues spécifiquement pour les charges de travail des serveurs de jeux gameServer et gameserverSet

  • gameServer : fait référence à l'abstraction des opérations d'O&M et de gestion sur un serveur de jeu spécifié. Il est principalement utilisé pour les opérations d'exploitation et de gestion telles que le contrôle de la séquence de mise à jour, le contrôle de l'état du serveur de jeu et les modifications réseau du serveur de jeu.

  • gameServerSet : fait référence à l'abstraction de la gestion du cycle de vie d'un groupe de serveurs de jeux. Il est principalement utilisé pour le contrôle du cycle de vie tel que la gestion des numéros de réplique et le lancement du serveur de jeux.

fonctionnalités fournies par kruise-game pour la gestion des serveurs de jeux :-

  • Mise à jour à chaud basée sur les images et rechargement à chaud des configurations

  • Mise à jour, suppression et isolation des serveurs de jeu spécifiés

  • Plusieurs modèles de réseau intégrés (adresse IP et port fixes, connexion directe sans perte et accélération globale)

  • Mise à l'échelle automatique

  • O&M automatisé (qualité de service)

  • Indépendant des fournisseurs de services cloud

  • Orchestration complexe de serveurs de jeux

L'image ci-dessous montre l'architecture de déploiement du jeu Kruise sur K8s

Cloud Native gaming with kruiseGame

démarrage avec kruise-game :0

  1. obtenir un cluster et une barre K8s
vous auriez besoin d'un cluster k8s pour kruise-game, le moyen le plus simple d'obtenir le cluster k8s est d'obtenir un minikube sur votre machine, assurez-vous également que la barre est installée sur votre machine.

2.

démarrez le minikube

minikube start 
Copier après la connexion
3.

utilisez helm pour installer 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
Copier après la connexion
4.

accédez à votre tableau de bord minikube

minikube dashboard 
Copier après la connexion
5.

vous devriez utiliser l'espace de noms kruise-game-system, félicitations, vous avez installé kruise-game

Cloud Native gaming with kruiseGame

pour plus d'informations et de détails sur kruise-game, reportez-vous à la documentation de kruise-game.

Merci d'avoir lu, j'espère que vous avez apprécié cela :).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal