2010-07-02 23 views
13

Cuál de estas suites tecnológicas para proyecto de juego en línea multiusuario ... Requisitos del proyecto: 1. Capaz de manejar usuarios de 2k-5k en cualquier momento. 2. biblioteca de cliente para iphone y android (nativo, no javascript). 3. biblioteca de cliente para Microsoft Windows (más importante), también para mac os x y linux. 4. Buena documentación especialmente para el desarrollo de mods 5. El proyecto no es de código abierto. Por lo tanto, solo puede usar bibliotecas con licencia adecuada.amqp o xmpp para juegos en tiempo real en línea

Puedo programar en erlang y java también, el lenguaje de programación no es un problema.

Estaba buscando las siguientes tecnologías de servidor como Openfire, Tigase, ejabberd y RabbitMQ. Todos son buenos para mi proyecto, pero quiero saber más sobre qué suite necesitan, AMQP o XMPP.

Lo que ofrece AMQP especialmente para juegos en línea en tiempo real. ¿Es mejor opción que xmpp?

Respuesta

13

El pueblo de Linden Labs (Second Life) hizo una comparación exhaustiva de una gran cantidad de sistemas de mensajería que debe leer:

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

Por qué vale la pena, estoy usando zeromq en un proyecto y es realmente interesante porque, según el caso de uso, no necesita un nodo intermediario.

+0

Contiene un análisis detallado de AMQP, pero casi nada relacionado con XMPP. – Robin

7

Una diferencia clave entre XMPP y AMQP es el contenido binario. AMQP maneja muy bien los datos binarios, y XMPP parece más diseñado para XML. Personalmente para juegos en línea utilizo Buffers de Protocolo de Google para formatear y analizar mensajes, y con su pequeña huella binaria, estaría más inclinado a usar AMQP para entregar esos mensajes.

Pero considere qué servidor AMQP quiere usar. Me han picado usando RabbitMQ para mi servidor AMQP en el pasado. RabbitMQ no tiene ninguna instalación de control de flujo, en absoluto. Entonces, si sus clientes envían mensajes más rápido de lo que su servidor puede consumirlos, los almacenamientos intermedios en el servidor pueden llenarse y explotar el servidor. Las versiones más recientes de RabbitMQ implementan control de flujo de una manera extremadamente burda: detienen todos los consumidores en el sistema hasta que la memoria se borre.

Nunca he intentado zeromq; tal vez sería mejor para las cosas que he estado usando RabbitMQ para ...

5

5K usuarios no me dicen mucho sobre su comportamiento, pero si todos enviaron una solicitud dentro de la misma ventana de 10 segundos, entonces vamos a Digamos que estarías buscando entre 500 y 1000 solicitudes por segundo.

He tenido Active/MQ ejecutándose en mi portátil de relativamente bajo consumo, manejando fácilmente 300 solicitudes por segundo, por lo que lo recomiendo encarecidamente aquí. También puede configurar clústeres de intermediarios y lograr escalabilidad horizontal. Puede usar un protocolo http (STOMP) o su protocolo binario nativo. Muchas bibliotecas de API cliente también para C/C++, Java, JavaScript y otros. Hay algunos iniciales AMQP support.

No mencionó ningún requisito de persistencia, pero nuevamente pensé que la mayoría de los RDBMS serían suficientes. Dicho esto, algunas de las bases de datos orientadas a documentos y de tablas grandes parecen interesantes desde una perspectiva de escalado horizontal.

También encontré Apache Camel altamente eficiente y lo recomiendo encarecidamente. Camel se usa para implementar tu capa lógica.

'Espero que esto ayude.

Cuestiones relacionadas