Skip to main content

Protocolos

AMQP, MQTT, CoAP, STOMP, MQTT-SN e WAMP

Os protocolos AMQP, MQTT, CoAP, STOMP, MQTT-SN e WAMP são todos usados para comunicação em redes distribuídas, especialmente em sistemas de IoT (Internet das Coisas), automação, e aplicações de mensagens. Cada um deles tem características e casos de uso específicos. Abaixo está um resumo das principais diferenças entre eles:

AMQP (Advanced Message Queuing Protocol)

  • Tipo: Protocolo de mensagem (Message Queuing)
  • Camada: Orientado a conexões, rodando em cima de TCP.
  • Uso: Altamente usado em sistemas corporativos para middleware de mensagens, como em filas de mensagens distribuídas.
  • Características:
    • Orientado a mensagens, suporta roteamento complexo, filas, confirmação de entrega, e transações.
    • Suporte robusto a mensagens persistentes e confiabilidade.
    • Overhead maior, mais pesado e complexo comparado a outros protocolos.

MQTT (Message Queuing Telemetry Transport)

  • Tipo: Protocolo de telemetria leve
  • Camada: Rodando sobre TCP/IP.
  • Uso: Muito usado em IoT, onde a largura de banda é limitada e a confiabilidade é importante.
  • Características:
    • Publicação/assinatura (Pub/Sub), otimizado para ambientes com baixa largura de banda e alta latência.
    • Muito leve, eficiente em termos de largura de banda.
    • Qualidade de serviço (QoS) ajustável para entrega de mensagens (0, 1, 2).

CoAP (Constrained Application Protocol)

  • Tipo: Protocolo de transferência de estado representacional (RESTful)
  • Camada: UDP (User Datagram Protocol)
  • Uso: Projetado para dispositivos IoT com recursos limitados, usado em redes de sensores e sistemas embutidos.
  • Características:
    • Semelhante ao HTTP, mas muito mais leve e sobre UDP.
    • Suporta comunicação multicast, baixa sobrecarga.
    • Focado em operações de requisição/resposta com baixa sobrecarga.

STOMP (Simple (or Streaming) Text Oriented Messaging Protocol)

  • Tipo: Protocolo de mensagens orientado a texto
  • Camada: Rodando sobre TCP.
  • Uso: Utilizado para integrar diferentes sistemas de mensagens, como middleware e brokers de mensagens.
  • Características:
    • Baseado em texto, fácil de implementar e depurar.
    • Comparado a AMQP, é mais simples e menos pesado.
    • Suporta mensagens assíncronas, com padrão pub/sub.

MQTT-SN (Message Queuing Telemetry Transport for Sensor Networks)

  • Tipo: Variante do MQTT para redes de sensores
  • Camada: Pode rodar sobre protocolos não TCP, como UDP.
  • Uso: Projetado para redes de sensores onde dispositivos têm conectividade intermitente e capacidades limitadas.
  • Características:
    • Adaptação do MQTT para ambientes onde TCP não está disponível.
    • Protocolo leve, adequado para dispositivos muito simples.
    • Suporta comunicação por broadcast e é adequado para redes mesh.

WAMP (Web Application Messaging Protocol)

  • Tipo: Protocolo de chamada de procedimento remoto (RPC) e publicação/assinatura (Pub/Sub)
  • Camada: Rodando sobre WebSockets ou HTTP.
  • Uso: Usado para comunicação em tempo real em aplicações web e IoT.
  • Características:
    • Suporta RPC e Pub/Sub na mesma conexão.
    • Focado em aplicações web e comunicação bidirecional em tempo real.
    • Suporte robusto para transporte de dados via WebSocket.

RPC

  • O protocolo RPC (Remote Procedure Call) é uma técnica que permite que um programa execute funções ou procedimentos em outro computador (ou em outro processo) como se fossem locais. Ele abstrai a comunicação entre sistemas distribuídos, facilitando a execução remota de funcionalidades sem que o desenvolvedor precise lidar diretamente com os detalhes da rede.