Je vais à travers un peu de re-penser à grande échelle des jeux multijoueurs à l'ère de Facebook applications et le cloud computing.
Supposons que je de construire quelque chose sur le dessus de l'existant, des protocoles ouverts, et je veux le servir 1 000 000 de joueurs en simultané, juste à la portée du problème.
Supposons que chaque joueur a l'arrivée d'un message de la file d'attente (pour le chat et autres joyeusetés), et en moyenne plus de message entrant file d'attente (les guildes, les zones, instances, vente aux enchères, ...) afin de nous avons 2 000 000 de files d'attente. Un joueur sera à l'écoute de 1-10 files d'attente à la fois. Chaque file d'attente auront en moyenne peut-être 1 message par seconde, mais certaines files d'attente ont des taux beaucoup plus élevés et à la hausse du nombre d'auditeurs (disons, une "entité emplacement" file d'attente pour une instance de niveau). Supposons pas plus de 100 millisecondes, le système de files d'attente de latence, ce qui est OK pour légèrement orienté vers l'action, jeux (mais pas des jeux comme Quake ou Unreal Tournament).
D'autres systèmes, je sais que de servir les 10 000 utilisateurs sur un seul 1U ou la lame de la boîte est une attente raisonnable (en supposant qu'il ne reste plus cher en cours, comme la physique de la simulation ou de la chose).
Donc, avec un tube d'un système de cluster, où les clients se connectent à la connexion des passerelles, qui à son tour se connecter à un message de la file d'attente des serveurs, nous aimerions tirer 10 000 utilisateurs par passerelle avec 100 passerelle machines, et de 20 000 files d'attente de messages par la file d'attente du serveur avec 100 de la file d'attente des machines. Encore une fois, juste pour le général de portée. Le nombre de connexions sur chaque MQ machine serait minuscule: à propos de 100, de parler à chacun des passerelles. Le nombre de connexions sur les passerelles serait beaucoup plus élevé: 10,100 pour les clients + les connexions à tous la file d'attente des serveurs. (Sur le dessus de cela, ajouter un peu de connexions pour le monde du jeu de simulation de serveurs ou autres joyeusetés, mais j'essaie de la garder que de les séparer pour l'instant)
Si je n'avais pas envie de construire ce à partir de zéro, je dois utiliser certains de messagerie et/ou de files d'attente de l'infrastructure qui existe. Les deux protocoles ouverts je peux trouver sont AMQP et XMPP. L'utilisation prévue de XMPP est un peu à la manière de ce que ce système de jeu aurait besoin, mais la surcharge est tout à fait remarquable (XML, plus détaillé de la présence de données, ainsi que divers autres canaux qui doivent être construits sur le dessus). Les données réelles modèle de AMQP est plus proche de ce que je décris ci-dessus, mais tous les utilisateurs semblent être grande, entreprise type de sociétés, et la charge de travail semble être de flux de travail liés, pas de jeu en temps réel mise à jour.
Quelqu'un a une journée de l'expérience avec ces technologies, ou des implémentations de celle-ci, que vous pouvez partager?