Architecture de serveur de jeu dynamique

J'essaie de trouver un moyen de développer une architecture de serveur de jeu pour un jeu mobile en temps réel. La conception devrait être rentable, mais toujours dans une certaine mesure évolutive (Plus tard, du moins avec des efforts minimes).

Flux de clients mobiles:

Se connecte au distributeur de serveur fourni DNS LB, et grandit S. x joueurs. Si atteint y Les joueurs, le serveur de distributeur doit être connecté au gestionnaire de serveur qui exécute ou utilise un serveur de jeu déjà en cours d'exécution. Le serveur de gestion renvoie l'adresse IP et le port sur le serveur de distributeur, qui les envoie ensuite aux joueurs groupés. Les joueurs sont ensuite connectés à ce serveur de jeux. Après le match, les joueurs seront envoyés ensemble au nouveau distributeur ou au même distributeur.

Je me demande comment le vrai serveur (Machines virtuelles) Pour les serveurs de jeu, vous pouvez contrôler de manière dynamique. J'ai regardé des instances AWS EC2, Mais si nous avons 500 Joueurs S. 6 joueurs dans un groupe qui jouent 6 heures par jour nous avons besoin ~ 84 Exemple EC2 t3.small (2 Cpus virtuel 2 Gb de bélier) Lancé. Il vous en coûtera ~ 1160,00 Dollars américains par mois. Je pense que avec un tel prix, il serait avantageux d'avoir de vraies machines virtuelles et non des instances de nuages ​​dynamiques?

J'ai aussi regardé
https://aws.amazon.com/de/ecs/
Ce qui peut être un bon tour, mais je ne sais pas comment gérer les serveurs de jeu dans des conteneurs pour la mise à l'échelle automatique.

Lien vers l'image
https://i.postimg.cc/L6mZVspf/ ... 1.png
. Désolé, les images peuvent être placées au moins avec 10 répétitions.

Explication des composants

Distributeur:

Les clients mobiles vont se connecter à eux de s'unir avec d'autres joueurs. On dirait un hall d'accueil où les joueurs vont s'asseoir jusqu'à ce qu'ils atteignent X Joueurs ou, par exemple. Le compte à rebours s'est terminé.

Server de gestion:

Besoin de prendre soin du serveur de course (Vm) et les demandes de processus de lancement d'un serveur de jeu à partir de distributeurs.

Server de jeu:

C'est un client serveur faisant autorité avec la physique, etc. Un serveur de jeu (Logiciel) pour X Joueurs du groupe. Les joueurs les communiqueront du distributeur après le lobby "Phase".

Question:

Comment peut-il être dynamiquement évolutif / rentable et convient-il à cette architecture? Je vois un problème avec la gestion du serveur, car il doit servir N Serveurs de jeu vms et N Distributeurs. Mais si nous échouons au serveur de gestion, chaque serveur de contrôle devrait connaître la même chose que tout autre.

(Si quelque chose manque ou que quelque chose peut être amélioré, faites le moi savoir. L'anglais n'est pas ma langue maternelle, il est donc difficile d'exprimer mon objectif dans un sujet aussi difficile comme celui-ci)
Invité:

Christine

Confirmation de:

Cela peut être une architecture utile. Faites attention au stockage des données. Où sont les données stockées? Si dans la base de données SQL, Comment l'accumulez-vous?

Écheler le jeu:

Utilisez plusieurs composants logiciels, les joueurs sont divisés en nœuds (Tu l'as)

Assurez-vous que le stockage des données n'est pas un goulot d'étranglement à un moment donné. Par exemple. Base de données unifiée SQL. Les serveurs de jeux doivent avoir un stockage interne sélectionné.

Faire un serveur de contrôle redondant. Deux copies derrière LB, Une forme de données de réplication entre eux.

Si le serveur de contrôle n'exécute que le contrôle et le contrôle, il ne faut pas être un goulot d'étranglement.

Une partie du système d'exploitation, des instances de VM:

AWS peut-être cher si les serveurs font vraiment quelque chose

2+ Serveurs sélectionnés S. Proxmox ou Docker, probablement moins cher que AWS à moyen terme / Long terme

ou 2+ Serveurs sélectionnés, il suffit d'exécuter des processus sur différents ports, automatiser plus tard

Bien que chaque composant puisse être mis à l'échelle indépendamment des autres, tout est en ordre.

D'abord recevoir la base de données de l'utilisateur. Au moment où vous serez mieux compris là où il y a des points de pression et de quoi optimiser.

Pour répondre aux questions, connectez-vous ou registre