2010-07-02 7 views
13

Welche dieser Technologie-Suite für Multi-User-Online-Spiel-Projekt .. Projektanforderungen: 1. In der Lage, 2k-5k Benutzer zu jeder beliebigen Zeit zu behandeln. 2. Client-Bibliothek für iPhone und Android (nativ, kein Javascript). 3. Client-Bibliothek für Microsoft Windows (am wichtigsten), auch für Mac OS x und Linux. 4. Gute Dokumentation speziell für Mod-Entwicklung 5. Projekt ist nicht Open-Source. So können nur Bibliotheken mit geeigneter Lizenz verwendet werden.amqp oder xmpp für Online-Spiele in Echtzeit

Ich kann auch in Erlang und Java programmieren Programmiersprache ist kein Problem.

Ich habe folgende Servertechnologien wie Openfire, Tigase, Ejabberd und RabbitMQ betrachtet. Alle sind gut für mein Projekt, aber ich möchte mehr darüber wissen, welche Suite meine Bedürfnisse, AMQP oder XMPP.

Was AMQP speziell für Echtzeit-Online-Spiele bieten. Ist es die bessere Option als xmpp?

Antwort

13

Die Leute von Linden Labs (Second Life) einen gründlichen Vergleich von vielen Messaging-Systemen, die Sie lesen sollten:

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

Für das, was wert ist, verwende ich in einem Projekt zeromq und es ist wirklich interessant, da Sie je nach Anwendungsfall keinen Broker-Knoten benötigen.

+0

Es enthält eine detaillierte Analyse von AMQP, aber kaum etwas in Bezug auf XMPP. – Robin

7

Ein wichtiger Unterschied zwischen XMPP und AMQP ist der binäre Inhalt. AMQP verarbeitet binäre Daten problemlos, und XMPP scheint eher für XML ausgelegt zu sein. Persönlich für Online-Spiele benutze ich Google Protokoll-Puffer für die Formatierung und Analyse von Nachrichten, und mit ihrer sehr kleinen binären Grundfläche würde ich eher AMQP verwenden, um diese Nachrichten zu liefern.

Aber überlegen Sie, welchen AMQP-Server Sie verwenden möchten. Ich wurde in der Vergangenheit von RabbitMQ für meinen AMQP-Server gebissen. RabbitMQ hat überhaupt keine Flusskontrolleinrichtungen. Wenn also Ihre Clients Nachrichten schneller senden, als Ihr Server sie konsumieren kann, können Puffer auf dem Server den Server füllen und den Server überlasten. Neuere Versionen von RabbitMQ implementieren die Flusskontrolle auf eine äußerst grobe Weise: Sie halten alle Endverbraucher im System an, bis der Speicher frei wird.

Ich habe nie zeromq versucht; vielleicht wäre es besser für die Dinge, die ich RabbitMQ für ... verwendet habe

5

5K Benutzer erzählt mir nicht viel über ihr Verhalten, aber wenn sie alle eine Anfrage innerhalb der gleichen 10 Sekunden Fenster eingereicht dann lasst uns sagen Sie würden in den 500-1000 Anfragen pro Sekunde suchen.

Ich hatte Active/MQ auf meinem relativ low-powered Lap-Top läuft leicht 300 Anfragen pro Sekunde und so würde ich es gerne hier empfehlen. Sie können auch Cluster von Brokern einrichten und horizontale Skalierbarkeit erreichen. Sie können ein HTTP-Protokoll (STOMP) oder sein natives Binärprotokoll verwenden. Viele Client-API-Bibliotheken auch für C/C++, Java, JavaScript und andere. Es gibt einige erste AMQP support.

Sie haben keine Persistenzanforderung erwähnt, aber wiederum hätte ich gedacht, dass die meisten RDBMS ausreichen würden. Das heißt, einige der Dokumenten-orientierten und Big-Table-Datenbanken sehen aus einer horizontalen Skalierungsperspektive interessant aus.

Ich habe auch festgestellt, Apache Camel sehr performant und ich kann es sehr empfehlen. Camel wird verwendet, um Ihre Logikebene zu implementieren.

'hoffe, dass dies hilft.