Publicado em: 07/Oct/2020
Atualizado em: 29/Jan/2021
#zeromq

ZeroMQ

  • 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

nnd

SBE simple binary encoding

MessagePack

  • serializador de alto desempenho

Referências

comments powered by Disqus