2010-07-02 12 views
13

Quale di queste suite di tecnologia per il progetto di gioco online Multiutente .. Requisiti di progetto: 1. In grado di gestire l'utente 2k-5k in qualsiasi momento. 2. libreria client per iphone e android (nativi, non javascript). 3. libreria client per Microsoft Windows (la più importante), anche per mac os x e linux. 4. Buona documentazione appositamente per lo sviluppo della mod. 5. Il progetto non è open-source. Quindi, è possibile utilizzare solo le librerie con una licenza adeguata.amqp o xmpp per giochi online in tempo reale

Posso anche programmare in erlang e java, il linguaggio di programmazione non è un problema.

Stavo osservando le seguenti tecnologie server come Openfire, Tigase, ejabberd e RabbitMQ. Tutti sono buoni per il mio progetto ma voglio sapere di più su quale suite i miei bisogni, AMQP o XMPP.

Cosa AMQP offre appositamente per i giochi online in tempo reale. E 'meglio l'opzione allora xmpp?

risposta

13

Il popolo di Linden Labs (Second Life) ha fatto un confronto approfondito di un sacco di sistemi di messaggistica che si dovrebbe leggere:

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

Per quello che vale la pena, sto usando zeromq in un progetto ed è davvero interessante perché, a seconda del caso d'uso, non è necessario un nodo broker.

+0

Contiene un'analisi dettagliata di AMQP, ma quasi nulla per quanto riguarda XMPP. – Robin

7

Una differenza chiave tra XMPP e AMQP è il contenuto binario. AMQP gestisce i dati binari bene e XMPP sembra più progettato per XML. Personalmente per i giochi online utilizzo i buffer del protocollo di Google per la formattazione e l'analisi dei messaggi e, con il loro ingombro minimo, sarei più propenso a utilizzare AMQP per recapitare tali messaggi.

Ma considerate quale server AMQP si desidera utilizzare. Sono stato morso usando RabbitMQ per il mio server AMQP in passato. RabbitMQ non ha alcuna funzione di controllo del flusso. Quindi, se i tuoi client inviano messaggi più velocemente di quanto il tuo server possa consumarli, i buffer sul server possono riempirsi e far saltare il server. Le versioni più recenti di RabbitMQ implementano il controllo del flusso in modo estremamente approssimativo: arrestano tutti gli utenti del sistema finché la memoria non si cancella.

Non ho mai provato zeromq; forse sarebbe meglio per le cose che ho usato RabbitMQ per ...

5

Gli utenti di 5K non mi dicono molto sul loro comportamento, ma se tutti hanno inviato una richiesta all'interno della stessa finestra di 10 secondi, allora facciamo dire che stareste cercando tra le 500-1000 richieste al secondo.

Ho avuto Active/MQ in esecuzione sul mio computer portatile relativamente a basso consumo gestendo facilmente 300 richieste al secondo e quindi lo raccomando felicemente qui. Puoi anche creare cluster di broker e ottenere scalabilità orizzontale. È possibile utilizzare un protocollo http (STOMP) o il suo protocollo binario nativo. Un sacco di librerie API client anche per C/C++, Java, JavaScript e altri. C'è qualche iniziale AMQP support.

Non hai menzionato alcun requisito di persistenza, ma ancora una volta avrei pensato che la maggior parte degli RDBMS sarebbe stata sufficiente. Detto questo, alcuni dei database di tipo document oriented e big-table sembrano interessanti da una prospettiva di ridimensionamento orizzontale.

Ho anche trovato Apache Camel altamente performante e lo consiglio vivamente. Camel è usato per implementare il tuo livello logico.

'spero che questo aiuti.