zmq socket distributed-computing actor amqp zeromq

distributed computing - socket - Diferencias entre AMQP y ZeroMQ



zmq rep (6)

Recientemente comencé a investigar estas tecnologías AMQP (RabbitMQ, ActiveMQ) y ZeroMQ, interesándose en sistemas / computación distribuidos. Siendo Google y StackOverflow''ing alrededor, no pudo encontrar una comparación definitiva entre los dos.

Lo más lejos que conseguí es que los dos no son realmente comparables, pero quiero saber las diferencias. Me parece que ZeroMQ es más descentralizado (no hay intermediarios de mensajes que jueguen mensajes de gestión de intermediarios / garantía de entrega) y, como tal, es más rápido, pero no pretende ser un sistema completamente desarrollado, sino algo que debe manejarse de manera más programática, algo como Actores.

Por otro lado, AMQP parece ser un sistema más completo, con un intermediario central de mensajes que garantiza una entrega confiable, pero más lento que ZeroMQ debido a esto. Sin embargo, el intermediario central crea un único punto de falla.

Tal vez una metáfora sería cliente / servidor vs. P2P?

¿Son verdaderos mis descubrimientos? Además, ¿cuáles serían las ventajas, desventajas o casos de uso de usar uno sobre el otro? Una comparación de los usos de * MQ contra algo como Akka Actors también estaría bien.

EDITAR. Mirar un poco más alrededor. ZeroMQ parece ser el nuevo competidor de AMQP, parece ser mucho más rápido, ¿el único problema sería la adopción / implementación?


AMQP (Advanced Message Queue Protocol) es un protocolo estándar de nivel de cable binario que permite a las aplicaciones cliente conformes comunicarse con los corredores de middleware de mensajería conformes. AMQP permite que los servicios / sistemas multiplataforma entre diferentes empresas o dentro de la empresa intercambien fácilmente mensajes entre sí, independientemente del proveedor y la plataforma del intermediario de mensajes. Hay muchos corredores que han implementado el protocolo AMQP como RabbitMQ, Apache QPid, Apache Apollo, etc.

ZeroMQ es una biblioteca de mensajería asíncrona de alto rendimiento destinada al uso en aplicaciones distribuidas o simultáneas escalables. Proporciona una cola de mensajes, pero a diferencia del middleware orientado a mensajes, un sistema ØMQ puede ejecutarse sin un agente de mensajes dedicado.


AMQP es un protocolo. ZeroMQ es una biblioteca de mensajería.

AMQP ofrece control de flujo y entrega confiable. Define metadatos estándar pero extensibles para mensajes (p. Ej., Respuesta a, tiempo de vida, más cualquier encabezado definido por la aplicación). ZeroMQ simplemente proporciona la delimitación del mensaje (es decir, dividiendo un flujo de bytes en unidades atómicas), y asume que las propiedades del protocolo subyacente (por ejemplo, TCP) son suficientes o que la aplicación creará una funcionalidad adicional para el control de flujo, la confiabilidad o lo que sea superior a ZeroMQ .

Aunque las versiones anteriores de AMQP se definieron a lo largo de las líneas cliente / servidor y, por lo tanto, requerían un intermediario, eso ya no es cierto para AMQP 1.0, que en su núcleo es un protocolo simétrico de igual a igual. Las reglas para los intermediarios (como los corredores) están superpuestas. El enlace de Alexis que compara brokered y brokerless ofrece una buena descripción de los beneficios que pueden ofrecer dichos intermediarios. AMQP define las reglas para la interoperabilidad entre diferentes componentes (clientes, "clientes inteligentes", corredores, puentes, enrutadores, etc.) de manera que un sistema se puede componer seleccionando las partes que son útiles.



Broker-less es un nombre inapropiado en comparación con los brokers de mensajes como ActiveMQ, QPid, Kafka para cableado simple.

Es útil y se puede aplicar a los hotspots para reducir los saltos de red y, por lo tanto, la latencia. A medida que agregamos confiabilidad, funciones de almacenamiento y reenvío y requisitos de alta disponibilidad, es probable que necesite un servicio de agente distribuido junto con una cola para compartir datos para admitir un acoplamiento flexible - desacoplado en el tiempo - esta topología y arquitectura pueden implementarse utilizando ZeroMQ, debe considerar sus casos de uso y ver si se requiere una mensajería asíncrona y, si es así, donde encajaría ZeroMQ, tiene un buen papel en la solución, aparece y un conocimiento razonable de TCP / IP y la programación de socket le ayudará a apreciar todos los demás, como ZeroMQ, AMQP, etc.


En ZeroMQ no hay NINGUNA COLA DE MENSAJES, por lo tanto el nombre. Simplemente proporciona una forma de utilizar la semántica de mensajería en sockets ordinarios.

AMQP es un protocolo estándar para la cola de mensajes que está destinado a ser utilizado con un intermediario de mensajes que maneja todos los envíos y recepciones de mensajes. Tiene muchas funciones disponibles porque canaliza todo el tráfico de mensajes a través de un intermediario. Esto puede parecer lento, pero en realidad es bastante rápido cuando se usa dentro de un centro de datos donde las latencias de host a host son muy pequeñas.