2010-07-02 10 views
13

Lequel de ces suites de technologie pour projet de jeu en ligne multi-utilisateur .. Exigences du projet: 1. Capable de gérer l'utilisateur 2k-5k à un moment donné. 2. bibliothèque client pour iphone et android (natif, pas de javascript). 3. bibliothèque client pour Microsoft Windows (le plus important), aussi pour mac os x et linux. 4. Bonne documentation spécialement pour le développement de mod 5. Le projet n'est pas open-source. Donc, ne peut utiliser des bibliothèques avec une licence appropriée.amqp ou xmpp pour les jeux en ligne en temps réel

Je peux programmer en erlang et java aussi, le langage de programmation n'est pas un problème. Je regardais les technologies de serveur suivantes comme Openfire, Tigase, ejabberd et RabbitMQ. Tous sont bons pour mon projet mais je veux en savoir plus sur quelle suite mes besoins, AMQP ou XMPP. Qu'est-ce qu'AMQP offre spécialement pour les jeux en ligne en temps réel?

Est-ce une meilleure option que xmpp?

Répondre

13

Les habitants de Linden Labs (Second Life) fait une comparaison approfondie d'un grand nombre de systèmes de messagerie que vous devriez lire:

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

Pour ce qui vaut, j'utilise zeromq dans un projet et c'est vraiment intéressant parce que, selon le cas d'utilisation, vous n'avez pas besoin d'un nœud de courtier.

+0

Il contient une analyse détaillée de AMQP, mais pratiquement rien concernant XMPP. – Robin

7

Une différence clé entre XMPP et AMQP est le contenu binaire. AMQP gère très bien les données binaires et XMPP semble plus conçu pour XML. Personnellement pour les jeux en ligne, j'utilise les tampons de protocole de Google pour le formatage et l'analyse des messages, et avec leur très faible empreinte binaire, je serais plus enclin à utiliser AMQP pour délivrer ces messages. Mais considérez quel serveur AMQP vous voulez utiliser. J'ai été mordu en utilisant RabbitMQ pour mon serveur AMQP dans le passé. RabbitMQ ne dispose d'aucune installation de contrôle de flux. Ainsi, si vos clients envoient des messages plus rapidement que votre serveur ne peut les consommer, les tampons sur le serveur peuvent se remplir et faire exploser le serveur. Les versions plus récentes de RabbitMQ implémentent un contrôle de flux d'une manière extrêmement grossière: elles arrêtent tous les consommateurs dans le système jusqu'à ce que la mémoire s'efface.

Je n'ai jamais essayé zeromq; peut-être que ce serait mieux pour les choses que j'ai utilisé RabbitMQ pour ...

5

Les utilisateurs de 5K ne me disent pas grand-chose sur leur comportement, mais s'ils ont tous soumis une requête dans la même fenêtre de 10 secondes, alors dire que vous seriez à la recherche dans les 500-1000 demandes par seconde.

J'ai eu Active/MQ fonctionnant sur mon ordinateur portable à faible consommation d'énergie facilement manipulant 300 demandes par seconde et donc je le recommanderais heureusement ici. Vous pouvez également configurer des grappes de courtiers et atteindre l'évolutivité horizontale. Vous pouvez utiliser un protocole http (STOMP) ou son protocole binaire natif. Beaucoup de bibliothèques API client aussi pour C/C++, Java, JavaScript et autres. Il y a quelques initiales AMQP support.

Vous n'avez mentionné aucune exigence de persistance, mais encore une fois j'aurais pensé que la plupart des SGBDR suffiraient. Cela dit, certaines bases de données orientées vers les documents et les grandes tables semblent intéressantes du point de vue de l'échelle horizontale.

J'ai également trouvé Apache Camel très performant et je le recommande fortement. Camel est utilisé pour implémenter votre couche logique.

'espérons que cela aide.