Personne d'autre n'a l'expérience de faire quelque chose comme ça? Huh.
Il y a plusieurs raisons qui font le pont entre le code et les systèmes. Tout d'abord, rappelez-vous que la plupart des `` gros '' moteurs MMO actuels ont été programmés il y a plusieurs années, et malgré les mises à niveau graphiques et technologiques depuis, dépendent toujours de la façon dont beaucoup de ces systèmes ont été écrits en 2000 environ. Eve-Online, par exemple, fonctionne toujours sur une énorme instance de Microsoft SQL Server, c'est pourquoi ils essaient toujours d'en tirer davantage en mettant à niveau le matériel.
Un exemple d'amélioration depuis le démarrage de WoW et EVE est le travail effectué dans les bases de données de clés / valeurs distribuées comme MapReduce de Google (et son implémentation open-source, Hadoop), les services de file d'attente de traitement des réponses affirmatives extrêmement rapides (Amazon SQS), etc. " technologies orientées cloud.
J'ai le plus d'expérience avec EVE (je suis plus un gars de lasers qu'un gars de battleaxes), donc certains de ces exemples sont plus orientés EVE.
En ce qui concerne les raisons des systèmes:
- Les nœuds physiques échouent de manière cohérente. Lorsqu'un nœud tombe en panne, son activité est généralement migrée ailleurs à l'aide de n'importe quel nombre de moyens. Cependant, le nœud doit être remis en service le plus rapidement possible. Dans le cas d'EVE, ils utilisent à la fois un langage de traitement sans pile et des serveurs virtuels; Je ne sais pas à quoi ressemble l'architecture de Blizzard.
- La cohérence de la base de données doit être vérifiée, les journaux doivent être vidés et les index et les caches de données doivent être reconstruits. Ceci est particulièrement important dans un système comme EVE avec une seule instance de base de données "active".
- Les correctifs du système d'exploitation doivent être appliqués à un moment où ils peuvent redémarrer les nœuds sans avoir trop d'activité à migrer ailleurs. La migration prend beaucoup de ressources réseau qui pourraient autrement être consacrées au traitement en ligne.
- Les MMO basés sur RDBMS ont d'énormes problèmes avec le verrouillage des données et l'intégrité référentielle. Les temps d'arrêt sont utilisés pour nettoyer les verrous périmés et les ruptures d'intégrité des journaux d'activité.
- La plupart des jeux implémentent des caches de données géographiquement localisés pour des informations statiques ou semi-statiques (voir les données récapitulatives de mise en cache ci-dessous) dans les zones à forte utilisation, c'est-à-dire côte est vs côte ouest USA. Ces caches sont mis à jour manuellement pendant le temps d'arrêt.
En ce qui concerne les raisons logicielles:
- Les jeux, lorsqu'ils fonctionnent, utilisent beaucoup de type OLTP - c'est-à-dire le traitement des transactions en ligne - de type lecture / écriture dans les bases de données. Cependant, parfois, vous voulez un rapport de synthèse ... comme le nombre d'une bête particulière que vous avez tuée au cours des 3 dernières années de broyage. Cela est mieux géré par un rapport OLAP - c'est le traitement analytique en ligne - qui contient des informations récapitulatives basées sur un grand nombre de lignes dans un ensemble de données géant. En réalité, les jeux implémentent des systèmes qui utilisent OLAP pour créer un cache pour limiter le nombre de requêtes qui doivent être lues - c'est-à-dire qu'ils construisent un total à partir d'une certaine date, puis lorsque vous posez la question, ils lisent simplement les lignes à partir du magasin OLTP qui résument la période écoulée depuis la certaine date. Fusionnez les deux, et vous pouvez réellement quantifier à quel point votre vie est devenue sans valeur.
- Le patch à chaud susmentionné, que je considère comme un problème logiciel, mais que les développeurs de logiciels considèrent comme un problème système. ;)
- Réapprovisionnement des magasins d'articles - à Eve, les ceintures d'astéroïdes sont rafraîchies chaque nuit et certains complexes sont également recyclés. Cela peut être fait dans une certaine mesure en ligne, mais certains algorithmes sont trop complexes et doivent être effectués en mode hors ligne, car ils mettent brièvement la base de données à genoux pendant qu'ils résument l'activité économique de la veille.
Faire fonctionner une économie avec des boucles fermées et ouvertes est un problème pour les opérateurs de MMO - si vous ne me croyez pas, lisez certains des articles académiques qui ont été écrits sur les économies de jeu et certaines des études de jeux plus anciens comme Ultima Online qui avaient des économies relativement primitives. L'analyse qui doit se produire pour reconstituer les boucles ouvertes et identifier la tricherie et d'autres activités économiques négatives doit se produire hors ligne avec un instantané des données, qui ne peut parfois être pris que lorsque la base de données est entièrement verrouillée.
Si vous notez, la maintenance d'Eve se produit quand il est midi en Angleterre, où se trouve le centre de données principal.