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

ZeroMQ con Node.JS

By Camilo Chacón Sartori

ZeroMQ con Node.JS

Meetup JS Chile sobre Zeromq con Node.js. 5 de mayo. Códigos: https://github.com/camilochs/meetupjschile-ejemplos-zeromq-nodejs

  • 923