Back to TIL list

ZeroMQ

Created at
  • orientado a transporte de bytes (mensagens)
  • inspirado no sistema de atores do erlang para trocar mensagens e evitar problemas comuns na programação concorrente
  • resolve o problema de carregar bytes de um lugar para outro
  • não é apenas um modelo de socket crú
  • oferece alguns modelos de programação em cima de uma API baseada em socket
    • publish/subscribe
    • push/pull
    • dealer-router
  • comunicação entre threads
  • suporta IPC
  • suporta TCP
  • suporta multicast UDP
  • pattern match
  • modelo de transporte eficiente
  • escrito em C++ com API no estilo C
  • push é um dos modelos mais rápidos, mas é o que demanda mais controle
  • push usa round-robin para distribuir
  • um publisher pode fazer bind com mais de um protocolo a mesmo tempo, assim um único send envia para dois ou mais protocolos
    • publisher_socker.bind("tcp://*:60001");
    • publisher_socker.bind("ipc://pub.ipc");
  • prefira usar um socket só para enviar e outro só para receber
  • defina afinidades para cada socket
  • incluir explicação sobre ZMQ_ROUTER_HANDOVER no tempo 40:27

Socket types

  • Request/Reply pattern: usado para enviar uma requisição e receber posteriormente a resposta para cada mensagem enviada.
  • Publish/Subscribe pattern: usado para distribuir dados de um único processo (publisher) para múltiplos destinatários (subscribers).
  • Pipeline Pattern: Usado para distribuir dados entre nós conectados
  • Exclusive Pair Pattern: Usado para conectar dois nós
  • REQ: request client
  • REP: replay server
  • PUSH: server
  • PULL: client (worker)
  • DEALER: client
  • ROUTER: server

Tipo de transporte

  • In-Process (INPROC): Local (in-process) communication transport.
  • Inter-Process (IPC): Local (inter-process) communication transport.
  • TCP: Unicast communication transport using TCP.
  • PGM: Multicast communication transport using PGM.

Veja também

  • [nanomsg](null "nanomsg")
  • [sbe](null "Simple Binary Encoding")

nnd

SBE simple binary encoding

MessagePack

  • serializador de alto desempenho

Referências