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.