Question

Le mot Let J'ai une application qui est garanti à submerger un serveur même après des optimisations. Y at-il une technologie qui permet à une application Web pour être répartie sur plusieurs serveurs, tout en maintenant son état?

Prenons par exemple un multiple joueur jeu en ligne. Habituellement, dans l'artisanat du monde de la guerre, il y a plusieurs serveurs avec chacun ayant son propre état de jeu. Ce que je suis à la recherche de quelque chose qui permettrait à cet état de jeu à partager entre plusieurs serveurs.

EDIT: La plate-forme n'a pas d'importance puisque c'est une application web donc le back-end ne pas beaucoup d'importance. Cependant, Rails et Java sont des possibilités.

En outre, WoW est juste un exemple, je suis juste intéressé par la technologie telle; un grand jeu serait une bonne application pour elle.

Était-ce utile?

La solution

Il n'y a pas vraiment quoi que ce soit pour une faible latence, débit élevé des applications en mémoire comme en temps réel des jeux en ligne, du moins pas comme un morceau de middleware arbitraire.

projet Darkstar a fait une tentative admirable à ce côté la facilité d'utilisation et de la complexité, mais trouvé (sans surprise) qu'il n'a pas été mise à l'échelle.

En fin de compte, il est un problème difficile (mais pas intraitable) où il n'y a pas de solution qui est près d'être universellement applicable. vous êtes susceptibles notamment d'avoir un compromis, entre le besoin d'agir sur les données de jeu rassis d'une part contre besoin d'échanger constamment des données partagées d'autre part. Le manque de justesse par rapport à la croissance exponentielle de la complexité ... choisissez votre poison.

Il convient de noter - surtout si votre domaine d'application ne sont pas des jeux en temps réel - que vous souvent ne me dérange pas si vous travaillez avec des données périmées, aussi longtemps qu'il est correct assez de bientôt. Dans de tels cas, les systèmes de mise en cache simples comme memcache sont grands. De même, si vous avez besoin de plus correcte, mais ne pas avoir à vous soucier de débit beaucoup, quelque chose comme Hazelcast (mentionné dans une autre réponse) pourrait être grande, mais pour la plupart des jeux en ligne qui sont assez grands pour exiger l'équilibrage de charge « des milliers d'opérations / sec » est tout simplement pas assez bon.

Certaines technologies de MMO fait une tentative de distribuer l'application en divisant géographiquement, ce qui signifie qu'il n'y a pas état vraiment beaucoup partagé du tout, et il a besoin de ce système de sens dans le monde du jeu et la fiction.

Une autre approche consiste à le diviser par le service, et mettre en œuvre la plupart des services avec votre impromptu approche RPC préférée. Cela vous permet d'évoluer assez facilement si vos services sont indépendants, mais toutes les dépendances entre services vous met tout de suite à un carré.

Autres conseils

Jetez un oeil à Hazelcast . Il est open source, plate-forme de distribution de données hautement évolutive pour Java. Hazelcast offres distribuées Plan, qui sera partagé entre les membres du cluster. vous pouvez facilement stocker vos données en elle. Il est super super facile à utiliser. Il suffit d'ajouter hazelcast.jar à votre classpath. Pas besoin d'installer un serveur.

J'utilise Microsoft HPC , pas pour les jeux cependant. Assez facile à configurer et à utiliser.

Vous ne mentionnez pas votre plate-forme. Pour Java, il y a Terre cuite

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top