Introducción a ZeroMQ con Node.JS

Camilo Chacón Sartori

¿Qué es               ?

  • Rápida y pequeña librería embebida de comunicaciones. Escrita en C++.
  • Permite distintos tipos de protocolos de transporte: TCP, IPC(In-process), INPROC(Inter-process) y multicast.
  • Soporta diferentes tipos de patrones de comunicación.
  • "Zero" por  lo más cercano posible a la"zero latencia". Se refiere a la cultura del proyecto, que sea minimalista y evitando la complejidad.
  • Multiplataforma y con más de 30 binding a distintos lenguajes de programación.

Caracteristicas

  • Maneja la conexión y reconexión de forma automática.
  • Fácil integración de aplicaciones escritas en diferentes lenguajes de programación.
  • Los mensajes que se transmiten son blob de 0 a N bytes.(Por lo tanto podemos integrarlo con distintos formatos de serialización).
  • Encola los mensajes.

Patrones de mensajeria

 REQ - REP

REQUEST 

(cliente)

REPLY

(server)

Primer ejemplo: REQ - REP

+

Patrones de mensajeria

 PUBLISH - SUBSCRIBE

send

send

send

PUB

SUB

SUB

SUB

BIND

connect

connect

connect

pub-server.py

sub-client.js

Segundo ejemplo: PUB - SUB

+

+

Patrones de mensajeria

PUSH - PULL

PUSH

BIND

PULL

PUSH

PULL

PUSH

PULL

PUSH

PULL

CONNECT

CONNECT

CONNECT

CONNECT

CONNECT

CONNECT

BIND

Producer

Worker

Collector

Tercer ejemplo: PUSH - PULL

+

¿Por qué            ?

  • Mayor eficiencia al momento de enviar muchos mensajes, sobre HTTP esto es mucho más lento.
  • Mayor control de lo que se esta enviando.
  • Fácil comunicación entre diferentes lenguajes de programación.
  • Fácil para crear arquitectura que necesiten escalar de forma eficiente.

Libros

Enlaces de interés

Made with Slides.com