ZeroMQ | ||
---|---|---|
Información general | ||
Tipo de programa | Biblioteca | |
Desarrollador | iMatix | |
Licencia | LGPLv3+ con excepción para enlace estático [1] | |
Información técnica | ||
Programado en | C++ | |
Versiones | ||
Última versión estable | 4.3.2 ( 08 de julio de 2019) | |
Enlaces | ||
ZeroMQ (también escrito ØMQ, 0MQ o ZMQ) es una biblioteca de comunicaciones de alto rendimiento orientada a mensajes, destinada a la construcción de aplicaciones distribuidas. Está basada en colas de mensajes, pero a diferencia de otros middlewares orientados a mensajes, ZeroMQ no necesita un broker intermedio.
La API de la biblioteca está diseñada para ser muy similar a utilizar un socket BSD clásico. Ha sido desarrollada en C++, aunque existen ports y bindings a muchos otros lenguajes (C, C#, Erlang, Go, Haskell, Java, JavaScript, Ruby, Rust...).
ZeroMQ es gratuita y de código abierto.
ZeroMQ es un middleware de comunicaciones orientado a mensajes (en inglés, Message-oriented middleware). Este tipo de sistemas utiliza una arquitectura basada en un servidor de mensajes, también llamado broker, que funciona como una aplicación intermedia situada entre los emisores y los receptores de los mensajes.
Los diseñadores de ZeroMQ se propusieron construir un sistema que conseguiera un mayor rendimiento y una latencia más baja, precisamente eliminando ese broker intermedio y pasando así de una arquitectura de clientes simples (que sólo saben comunicarse con el servidor) y servidores inteligentes (con la lógica de almacenamiento y envío de los mensajes), a otra en la que todos son pares inteligentes que gestionan tanto la gestión de los mensajes como su enrutamiento.
El resultado es que ZeroMQ está formado por un único elemento, una biblioteca, que se compila y enlaza con cada programa cliente o servidor, formando así un sistema rápido y eficiente de comunicación asíncrona por mensajes.
La arquitectura de un sistema distribuido puede describirse utilizando patrones de mensajería. Estos patrones se encargan de especificar y detallar la topología del conjunto del sistema y el flujo de mensajes entre sus distintas partes. ZeroMQ implementa varios de estos patrones. Para ello proporciona pares de sockets preoptimizados para cada tipo de comunicación que se desee realizar. En concreto, los patrones soportados son: