stringtranslate.com

ZeroMQ

ZeroMQ (también escrito ØMQ , 0MQ o ZMQ ) es una biblioteca de mensajería asincrónica, destinada a su uso en aplicaciones distribuidas o concurrentes. Proporciona una cola de mensajes , pero a diferencia del middleware orientado a mensajes , un sistema ZeroMQ puede ejecutarse sin un agente de mensajes dedicado ; el cero en el nombre es para el agente cero. [3] La API de la biblioteca está diseñada para parecerse a los sockets de Berkeley .

ZeroMQ es desarrollado por una gran comunidad de colaboradores, fundada por iMatix, que posee el nombre de dominio y las marcas comerciales. Existen enlaces de terceros para muchos lenguajes de programación populares.

Tecnología

La API ZeroMQ proporciona sockets (una especie de generalización de los sockets tradicionales de IP y dominio Unix ), cada uno de los cuales puede representar una conexión de varios a varios entre puntos finales . Al funcionar con una granularidad por mensaje, requieren que se utilice un patrón de mensajería y están particularmente optimizados para ese tipo de patrón.

Los patrones básicos de ZeroMQ son:

Solicitud-respuesta
Conecta un conjunto de clientes a un conjunto de servicios. Se trata de un patrón de distribución de tareas y llamadas a procedimientos remotos .
Publicar-suscribirse
Conecta un conjunto de publicadores con un conjunto de suscriptores. Se trata de un patrón de distribución de datos.
Push-pull (tubería)
Conecta nodos en un patrón de abanico de entrada y salida que puede tener varios pasos y bucles. Se trata de un patrón de distribución y recopilación de tareas en paralelo .
Par exclusivo
Conecta dos conectores en un par exclusivo. (Este es un patrón avanzado de bajo nivel para casos de uso específicos).

Cada patrón define una topología de red particular. La petición-respuesta define un denominado "bus de servicio", la publicación-suscripción define un "árbol de distribución de datos" y la inserción-extracción define una "tubería paralela". Todos los patrones están diseñados deliberadamente de manera que sean infinitamente escalables y, por lo tanto, utilizables a escala de Internet. [4]

Cualquier mensaje que pase por el socket se trata como un blob opaco de datos. La entrega a un suscriptor se puede filtrar automáticamente por la cadena principal del blob. Los transportes de mensajes disponibles incluyen TCP , PGM (multidifusión confiable), comunicación entre procesos ( IPC ) y comunicación entre subprocesos (ITC).

La biblioteca central ZeroMQ funciona muy bien debido a su modelo de subprocesamiento interno y puede superar a las aplicaciones TCP convencionales en términos de rendimiento al utilizar una técnica de procesamiento automático de mensajes. [5] [6]

ZeroMQ implementa ZMTP, el protocolo de transferencia de mensajes de ZeroMQ. [7] ZMTP define reglas para la interoperabilidad con versiones anteriores, mecanismos de seguridad extensibles, enmarcado de comandos y mensajes, metadatos de conexión y otras funciones a nivel de transporte. Un número cada vez mayor de proyectos implementan ZMTP directamente como una alternativa al uso de las implementaciones completas de ZeroMQ. [8]

Historia

El CEO de iMatix, Pieter Hintjens, registró el dominio zeromq.org en mayo de 2007 e inició el proyecto ZeroMQ junto con Martin Sustrik, quien fue su arquitecto y desarrollador principal hasta diciembre de 2011.

El 30 de marzo de 2010, Hintjens anunció que iMatix (el diseñador original de Advanced Message Queuing Protocol ) abandonaría el grupo de trabajo AMQP y no planeaba soportar AMQP/1.0 a favor de ZeroMQ, significativamente más simple y rápido. [9] [10]

En 2011, el CERN estaba investigando formas de unificar las soluciones de middleware utilizadas para operar los aceleradores del CERN. El estudio del CERN comparó dos implementaciones de código abierto de CORBA , Ice , Thrift , ZeroMQ, YAMI4, [11] RTI y Qpid (AMQP) y le dio a ZeroMQ la puntuación más alta, en parte por su versatilidad, incluida su fácil adaptabilidad al LynxOS . [6]

A principios de 2012, dos de los desarrolladores originales bifurcaron ZeroMQ como Crossroads I/O. [12] [13] Martin Sustrik inició nanomsg, [14] una reescritura de la biblioteca principal de ZeroMQ. [15]

En agosto de 2012, Dongmin Yu anunció su conversión a Java puro de ZeroMQ, JeroMQ. [16] Esto ha inspirado otros puertos completamente nativos de ZeroMQ, como NetMQ para C# [17] y zmq.rs para Rust. [18]

En marzo de 2013, Pieter Hintjens anunció un nuevo borrador del protocolo a nivel de cable ZMTP que aporta mecanismos de seguridad extensibles a ZeroMQ. [19] Poco después, Martin Hurton implementó el mecanismo de autenticación y cifrado CurveZMQ [20] en la biblioteca principal.

En 2016, el desarrollador veterano de ZeroMQ Garrett D'Amore bifurcó Nanomsg para crear el proyecto NNG (Nanomsg Next Generation). [21]

Proceso de desarrollo

La comunidad ZeroMQ utiliza principalmente el Contrato de construcción de código colectivo (C4) [22] como contrato de desarrollo. C4 está inspirado en los procesos de Wikipedia y en el modelo de bifurcación + solicitud de incorporación de cambios de GitHub . Se centra en simplificar la participación de los nuevos colaboradores y en reducir la dependencia de los colaboradores más antiguos.

Véase también

Referencias

  1. ^ "Versión 4.3.5". 9 de octubre de 2023. Consultado el 20 de octubre de 2023 .
  2. ^ "Licencias ØMQ" . Consultado el 8 de junio de 2023 .
  3. ^ "Empecemos".
  4. ^ "La capa de escalabilidad llega a la pila de Internet". Archivado desde el original el 28 de mayo de 2019. Consultado el 4 de septiembre de 2013 .
  5. ^ "¿Cómo es posible que ØMQ tenga un mayor rendimiento que TCP a pesar de estar construido sobre TCP?". Preguntas frecuentes de ZeroMQ . Consultado el 8 de junio de 2013 .
  6. ^ ab "Tendencias de middleware y líderes del mercado 2011" . Consultado el 8 de junio de 2013 .
  7. ^ "Protocolo de transferencia de mensajes de ZeroMQ" . Consultado el 8 de junio de 2013 .
  8. ^ "Búsqueda en GitHub: ZMTP". GitHub . Consultado el 8 de junio de 2013 .
  9. ^ "iMatix dejará de ofrecer soporte para OpenAMQ en 2011". Lista de correo openamq-dev. Archivado desde el original el 5 de marzo de 2016. Consultado el 5 de septiembre de 2018 .
  10. ^ "¿Qué problemas tiene AMQP (y cómo solucionarlo)?". iMatix Corporation . Consultado el 14 de julio de 2012 .
  11. ^ "Inspirel YAMI4" . Consultado el 14 de julio de 2012 .
  12. ^ "ZeroMQ y Crossroads I/O: renunciando a las marcas registradas". LWN.net . Consultado el 14 de julio de 2012 .
  13. ^ "Crossroads I/O" . Consultado el 14 de julio de 2012 .
  14. ^ "nanomsg" . Consultado el 8 de junio de 2013 .
  15. ^ "¿Por qué debería haber escrito ZeroMQ en C, no en C++?"
  16. ^ "jeromq - java pojo zeromq". Lista de correo zeromq-dev. Archivado desde el original el 31 de julio de 2013. Consultado el 23 de mayo de 2013 .
  17. ^ "NetMQ". GitHub . Consultado el 23 de mayo de 2013 .
  18. ^ "zmq.rs". GitHub . Consultado el 24 de octubre de 2020 .
  19. ^ "Protección de ZeroMQ: borrador del protocolo ZMTP v3.0". Hintjens.com . Consultado el 23 de mayo de 2013 .
  20. ^ curvezmq.org
  21. ^ "NNG: Nanomsg-NG". nanomsg.org . Consultado el 4 de agosto de 2023 .
  22. ^ "Contrato de construcción de código colectivo (C4.1)". RFC de ZeroMQ . Consultado el 23 de mayo de 2013 .

Enlaces externos