Pregunta

El sistema que estamos construyendo recibe datos a través de la fuente externa.Nuestro trabajo es distribuir estos datos a múltiples servicios, ejecutar los cálculos y enviar los resultados a otros lugares: una situación típica entre editor y suscriptor.Lo que necesitamos es una mensajería de muy baja latencia.No necesitamos persistir los mensajes como MSMQ.

¿Es RabbitMq lo suficientemente rápido para una entrega suave de mensajes en tiempo real?¿Existen puntos de referencia?¿Es buena idea utilizarlo en lugar de TIBCO Rendezvous?¿Existen otras alternativas de mensajería suave en tiempo real de código abierto?

Gracias.

¿Fue útil?

Solución

(soy un desarrollador RabbitMQ.)

Rabbit, cuando se carga ligera, generalmente tienen latencias del orden de 100-400 microsegundos, dependiendo de cosas como la tarjeta de red y la velocidad de la CPU. Una vez que la carga se vuelve un poco más pesado, inicia el almacenamiento temporal internos aparezcan y latencias se elevan un poco. Usted puede esperar con seguridad 1ms latencias hasta el uso de ancho de banda (segunda mensajes-per-, bytes por segundo) empieza a ser alta. Latencias también subirán una vez introducida la persistencia, de forma natural.

En cuanto a los puntos de referencia, uno de los mayores problemas aquí es definir qué es importante para su aplicación. Hay algunos trivialmente simples punto a punto y pub-sub-latencia y rendimiento medir ejemplos incluidos con el cliente Java; preguntar en la lista RabbitMQ-discutir si usted tiene problemas con ellos! No miden más de relevancia para las aplicaciones del mundo real, pero podrían ayudar a disipar cualquier preocupación que tenga con respecto a microbenchmarks de latencia o rendimiento.

Por último, hay muchos, muchos buenos mensajería de código abierto y sistemas relacionadas con la mensajería disponibles en estos días. En el mundo de AMQP solos, además de RabbitMQ, también hay Qpid y OpenAMQ. También hay buenos servidores JMS de código abierto por ahí, si usted es capaz de restringir el mismo a Java (muchas personas tienen éxito con ActiveMQ). Un montón de sistemas de peso ligero están surgiendo para sistemas Ruby y Python, así; estos sistemas tienden a concentrarse en cola solo, y tienden a no tener la capacidad de enrutamiento flexible que ofrece AMQP.

Otros consejos

Debería poder lograr muchas decenas de miles de mensajes por segundo por CPU.Por ejemplo, una de nuestras pruebas estándar envía 25.000 mensajes por segundo desde un cliente Java al servidor que se ejecuta en una máquina Debian COTS de cuatro núcleos y de regreso al cliente.El cliente y el servidor se ejecutan en el mismo cuadro, por lo que son 50.000 mensajes procesados ​​por segundo en el servidor más 50.000 mensajes procesados ​​por segundo en el cliente.Puede obtener tarifas más altas ejecutando el servidor en una caja dedicada con más núcleos.Para tarifas basadas en bytes/segundo, pregunte en la lista de correo de Rabbitmq-Discuss.

alexis

La mejor solución que puedo pensar en su sistema es ZeroMQ .

No tiene persistencia, que usted ha dicho que no es necesario y es muy rápido y sencillo de utilizar.

No es una aplicación AMQP (que parece que no es necesario también), pero como se dice en este guiar :

  

OMQ (ZeroMQ, 0MQ, ZMQ) se parece a una biblioteca de redes integrable, sino que actúa como un marco de concurrencia. Se le da tomas que transportan mensajes enteros a través de diversos medios de transporte como en proceso, entre procesos, TCP, y multicast. Puede conectar enchufes N-to-N con patrones como despliegue en abanico, pub-sub, distribución de tareas, y la solicitud-respuesta. Es lo suficientemente rápido para ser el tejido de los productos agrupados. Su modelo de E / S asíncrona le da aplicaciones escalables de múltiples núcleos, construidos como las tareas de procesamiento de mensajes asíncronos. Tiene una puntuación de API del lenguaje y se ejecuta en la mayoría de los sistemas operativos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top