2011-02-02 10 views
29

¿Cuáles son sus experiencias con ZeroMQ como un middleware de mensajería de propósito general?¿Está lista la producción de ZeroMQ?

  1. ¿Te topaste con algún error o "características" no obvias? P.ej. 2.0 no estaba limpiando los mensajes correctamente, y the troubleshooting guide parece dar la solución más aterradora de todas ellas: "sleep(1) antes de salir".
  2. ¿Redujo la API la complejidad de las aplicaciones o resultó problemática?
  3. ¿La compatibilidad con versiones anteriores a menudo se rompe?

Respuesta

28

Lo estoy usando para investigación, por lo que "semiproducción". Es un marco maravilloso, y la forma en que se diseñan las cosas ciertamente tiene sentido una vez que lo asimilas por completo. Pero he visto demasiados problemas para considerarlo listo para la producción. Estoy usando jzmq, por lo que algo de esto podría ser específico para eso.

  1. La configuración de jzmq en OS X/Eclipse es ... no agradable.
  2. El inicio de la aplicación ocasionalmente causará una falla de aserción en el código C de ZeroMQ, por lo que debo envolver mi aplicación en algo que compruebe este estado excepcional.
  3. Los errores a menudo son muy poco descriptivos. He tenido demasiadas excepciones de estado ilegales sin mensaje explicativo.
  4. No hay soporte para TLS. Esto es casi un factor decisivo para mí, y podría verlo fácilmente descartando su disponibilidad para una serie de aplicaciones.
  5. La documentación está "desactivada". El official guide es bueno, pero si tienes un problema específico, generalmente no es útil. Y me lleva más tiempo de lo normal encontrar las respuestas a las cosas cuando busco en Google. La lista de correo es, sin embargo, bastante activa.

PERO, y este es un gran pero, no puedo contar cuántas horas-hombre me han salvado. This post tiene un buen resumen de algunas de las formas en que hace la vida más agradable.

14

También estoy usando ZeroMQ en un entorno de "semiproducción" (creación de prototipos para DARPA). Hasta ahora ha sido realmente excelente para "atar gatos juntos", especialmente cuando esos gatos están escritos en diferentes idiomas y viven en diferentes máquinas. Las expresiones de socket disponibles hacen que piense acerca de un problema de computación distribuida muy sencillo. La fuerza de ZeroMQ es la ergonomía: un modelo mental sólido y abundantes enlaces de lenguaje.

Proceda con precaución, sin embargo, si está en contra de las estrictas limitaciones de rendimiento. Estoy trabajando en un sistema en tiempo real y he descubierto que, aunque ZeroMQ pretende ser una solución de alto rendimiento, no está lista para el horario estelar. Creo que la arquitectura que está en su lugar tiene un gran potencial; parece ser obstaculizado por algunos errores molestos. Probablemente debería haber esperado eso de una biblioteca que ha evolucionado tan rápidamente, pasando de 0.0 a 3.0 en un tiempo relativamente corto. Aún así, pensé que podría reemplazar a mi propio stack de protocolos manuales e inmediatamente llegaría a algunos rompedores de ofertas. Si decide usar ZeroMQ, solo tenga en cuenta que está trabajando muy por encima de la capa de transporte, y si el rendimiento es menor que lo deseable, es poco lo que puede hacer al respecto.

Habiendo dicho eso, la charla en la lista de correo y el canal de IRC es bastante buena. Los desarrolladores parecen genuinamente interesados ​​en construir algo que sea completamente de vanguardia. Les encanta que su biblioteca tenga rumores y se esté acostumbrando a cosas serias e interesantes. Son personas ocupadas, así que no esperes una tonelada de mano.Sin embargo, si tienes un problema real, están ansiosos por saber qué está pasando.

Resultado final: Una gran navaja suiza para resolver problemas informáticos cotidianos. Tenga cuidado si está buscando un rendimiento de última generación; es al menos una liberación mayor. Aún así, el futuro se ve muy bien para este proyecto, así que úselo y apóyelo.

-2

descargo de responsabilidad: esto viene de una persona que nunca antes había usado AMQP o cualquier otro producto similar.

La documentación incorrecta es mala. (C# sería malo si no hubiera documentación para .Net y C#) Así que ZMQ podría ser lo mejor que hay si sabes cómo usarlo, pero la documentación que existe (no mucho) es bastante mala (estamos tan inteligente, esto es tan bueno, Erlang, bla, bla, no hay un solo ejemplo n-to-n en la guía ...).
Usted dice que qué, la mayoría de los proyectos del sistema operativo tienen mala documentación o ninguno. Sí, pero para algunos pocos proyectos de sistema operativo puedes buscar en google un montón de cosas (tutoriales, ejemplos ...). Con ZMQ es: cero es para documentación. Como soy un desarrollador de C++, digo así. Antes de tratar de usar ZMQ, pensé que el boost tenía mala documentación y relativamente pocos ejemplos en Internet. Pero en comparación con la documentación de ZMQ Boost, es excelente y hay muchos ejemplos.

EDIT: para hacer las cosas más divertido (la guerra civil: P): http://www.infoq.com/news/2012/03/Crossroads-IO

Martin Sustrik y Martin Lucina, creadores de la ZeroMQ original, han decidido recuperar el control del proyecto por un fork . El nuevo proyecto , denominado Crossroads I/O, se está configurando para fomentar un ecosistema comercial que sea más capaz de satisfacer sus necesidades financieras a largo plazo .

Edit2: copiar y ejecutar ejemplos de la guía (CPP versión de "Un intermediario de solicitud-respuesta") trabajo no funciona. Puede ver lo bueno que es el proceso de desarrollo de la biblioteca por el hecho de que no tienen sus ejemplos como pruebas. : P
EDIT3: algunos de los ejemplos están en v2. *, Ofc la versión más reciente es v3.2. Entonces, de nuevo, esto huele a un proyecto de sistema operativo podrido y sin mantenimiento.

+1

Pero ... ZeroMQ no está escrito en Erlang. Eso es RabbitMQ. –

+0

Reclaman ser un marco de agentes MT como Erlang ... leer su manifiesto: D – NoSenseEtAl

+1

http://crossroads.io está muerto y el último compromiso en https://github.com/crossroads-io/libxs fue de 3 años hace. Pero al menos no es un proyecto sin mantenimiento como https://github.com/zeromq/libzmq que solo se actualizó ... oh ... espera ... hace 6 días. –