Zephyrnet Logo

MQTT vs AMQP para comunicações IoT: frente a frente

Data:

MQTT vs AMQP para comunicações IoT: frente a frente
Ilustração: © IoT For All

Com o crescimento exponencial da Internet das Coisas (IoT), o gerenciamento da comunicação entre dispositivos e sistemas está ganhando importância. A comunicação IoT é possibilitada por protocolos de enfileiramento de mensagens como MQTT e AMQP que facilitam a troca de informações de forma estruturada e eficiente.

Dois protocolos populares que alimentam a IoT são o protocolo MQTT (Transporte de telemetria de enfileiramento de mensagens) e AMQP (Protocolo avançado de enfileiramento de mensagens). Vamos explorar cada um desses protocolos detalhadamente e explicar suas principais diferenças e os fatores a serem considerados ao escolher entre os dois.

Importância dos protocolos de enfileiramento de mensagens

Na IoT, dispositivos que vão desde sensores simples até máquinas complexas precisam se comunicar entre si e com sistemas centrais. Esses dispositivos geralmente operam em ambientes com recursos limitados, como redes de baixo consumo ou não confiáveis.

Protocolos de enfileiramento de mensagens como MQTT, projetado para esses ambientes, permite que esses dispositivos se comuniquem de maneira eficiente e confiável.

Em sistemas distribuídos, os componentes geralmente precisam trocar informações enquanto mantêm um acoplamento fraco. Protocolos como o AMQP, com seus recursos robustos e recursos de roteamento complexos, fornecem um meio confiável para essa comunicação.

Esses protocolos garantem que as mensagens sejam entregues de forma confiável e que os sistemas possam escalar e evoluir de forma independente.

O que é MQTT?

MQTT, abreviação de Message Queuing Telemetry Transport, é um protocolo leve de mensagens de publicação/assinatura. Foi introduzido pela IBM em 1999.

Projetado para dispositivos restritos e redes de baixa largura de banda, alta latência ou não confiáveis, o MQTT é perfeito para casos de uso máquina a máquina ou IoT onde é necessário um pequeno espaço de código.

O MQTT opera com base no modelo de publicação/assinatura. Nesse modelo, um produtor, conhecido como editor, cria mensagens, e um consumidor, conhecido como assinante, as recebe.

A interação entre o editor e o assinante é gerenciada por um corretor. O corretor é responsável por distribuir as mensagens dos editores aos assinantes.

A simplicidade do MQTT reside em seus comandos mínimos de protocolo. Possui apenas alguns comandos, facilitando a implementação em vários dispositivos e sistemas.

Além disso, seus níveis de qualidade de serviço permitem a confirmação da entrega de mensagens, garantindo que nenhuma mensagem seja perdida na transmissão. Vamos explorar o MQTT com mais detalhes.

Transporte e enquadramento MQTT

MQTT pode usar TCP, TLS, WebSocket ou QUIC como sua camada de transporte, criando conexões, estabelecendo sessões e transmitindo mensagens de forma confiável entre clientes e corretores.

Os quadros MQTT consistem em um cabeçalho fixo de 2 bytes, um cabeçalho variável e uma carga útil de comprimento variável. O cabeçalho contém informações como tipo de pacote, nível de qualidade de serviço, comprimento restante, ID do pacote e propriedades. A carga binária contém a mensagem real que está sendo transmitida.

O MQTT define 15 tipos de pacotes de controle baseados nos quadros binários nas especificações do protocolo da versão 5.0. Alguns dos pacotes comuns usados ​​para conectar, publicar e assinar incluem CONNECT, CONACK, PUBLISH, PUBACK e SUBSCRIBE.

QoS MQTT

MQTT oferece suporte a três qualidades de serviço para entrega de mensagens:

  • QoS0 “No máximo uma vez”: As mensagens são entregues de acordo com os melhores esforços do ambiente operacional; pode ocorrer perda de mensagens.
  • QoS1 “Pelo menos uma vez”: As mensagens chegam com certeza, mas podem ocorrer duplicatas.
  • QoS2 “Exatamente uma vez”: As mensagens têm a garantia de chegar exatamente uma vez.

Vantagens e desvantagens do MQTT

Prós:

  • Simplicidade: O design de publicação-assinatura mais simples, mais fácil de configurar, desenvolver e gerenciar.
  • Leve e Eficiente: As mensagens MQTT têm apenas sobrecarga de cabeçalho de 2 tipos com baixo uso de largura de banda, tornando o protocolo ideal para dispositivos de baixo consumo de energia e baixa largura de banda.
  • Escalabilidade: Escale para dezenas de milhões de conexões, tópicos e assinaturas MQTT.
  • Entrega confiável de mensagens: Três níveis de qualidade de serviço para garantir a entrega confiável de mensagens, mesmo em redes não confiáveis.
  • Baixa latência: Entrega de mensagens quase em tempo real com latência de um dígito em milissegundos devido ao modelo simples de publicação/assinatura baseado em tópicos.
  • Segurança: MQTT oferece suporte a comunicações seguras por TLS/SSL ou QUIC e vários mecanismos de autenticação usando certificados LDAP, JWT, PSK e X.509.
  • Compatibilidade e Integração: O MQTT pode ser integrado a muitas linguagens de programação, sistemas operacionais e plataformas de software.

Contras:

  • O MQTT não possui filas de armazenamento e encaminhamento.

O que é AMQP?

AMQP, Advanced Message Queuing Protocol, é um protocolo que oferece suporte a uma ampla variedade de padrões de mensagens e oferece um conjunto robusto de recursos. Foi criado pelo JP Morgan Chase em 2003. Foi projetado para sistemas que exigem um alto nível de confiabilidade e funcionalidade.

Ao contrário do MQTT, o AMQP é um protocolo ponto a ponto, o que significa que oferece suporte à comunicação direta entre o produtor e o consumidor.

AMQP usa um modelo onde as mensagens são enviadas para exchanges, que então roteiam as mensagens para filas apropriadas com base em regras chamadas ligações. O consumidor então recupera a mensagem da fila.

Este modelo permite estratégias complexas de roteamento e distribuição, tornando o AMQP adequado para sistemas distribuídos complexos.

A força do AMQP reside no seu extenso conjunto de recursos. Ele suporta uma variedade de propriedades de mensagens e modos de entrega, incluindo mensagens persistentes, o que garante que as mensagens não sejam perdidas mesmo se o broker for reiniciado.

Troca e vinculações AMQP

No AMQP, uma exchange é como um agente de transferência de e-mail que inspeciona o e-mail e decide com base em chaves e tabelas de roteamento. Uma chave de roteamento corresponde a um e-mail com endereços Para:, Cc: ou Cco:, sem informações do servidor (o roteamento é interno em um servidor AMQP). Uma ligação é como uma entrada na tabela de roteamento do agente de transferência de e-mail.

AMQP define quatro tipos de trocas:

  1. Direto (ponto a ponto): as mensagens são roteadas diretamente para a fila vinculada à troca.
  2. Espalham: as mensagens são roteadas para todas as filas vinculadas à troca.
  3. Tópico (publicar-assinar): as mensagens são roteadas para filas com base na chave de roteamento e no padrão de ligação para a troca.
  4. Cabeçalhos (publicar-assinar): as mensagens são roteadas para filas com base na correspondência de padrões de cabeçalhos de mensagens.

Transporte e enquadramento AMQP

AMQP é um protocolo binário construído em TCP/IP, onde uma conexão confiável, persistente e orientada a fluxo é estabelecida entre um cliente e um corretor. Vários canais podem ser abertos em uma única conexão de soquete, permitindo que vários fluxos de dados sejam transferidos simultaneamente.

Os quadros AMQP na versão 1.0 consistem em um cabeçalho fixo de 8 bytes, um cabeçalho estendido opcional e uma carga binária de comprimento variável. O cabeçalho fixo contém informações sobre o tipo de quadro, número do canal e tamanho da carga útil.

A carga útil contém a mensagem real que está sendo transmitida, juntamente com quaisquer metadados associados.

Vantagens e desvantagens do AMQP

Prós:

  • Enfileiramento de armazenamento e encaminhamento: AMQP suporta filas de armazenamento e encaminhamento às custas de alguma eficiência e complexidade adicional (em comparação com MQTT).
  • Roteamento flexível de mensagens: AMQP fornece roteamento flexível de mensagens, incluindo ponto a ponto, publicação-assinatura e distribuição.
  • Segurança: AMQP oferece suporte a medidas de segurança como TLS e SASL para criptografia e autenticação.
  • Ecossistema: AMQP possui um ecossistema grande e maduro de implementações de servidores de código aberto e bibliotecas de clientes para várias linguagens de programação.

Contras:

  • Complexo: AMQP introduz muitos conceitos em seu modelo e pode ser complexo e desafiador para entender, configurar e gerenciar.
  • Peso pesado: AMQP introduz multiplexação em sua camada de transporte com “canais”. Cada quadro AMQP possui uma sobrecarga de cabeçalho de 8 bytes.
  • Compatibilidade com versões anteriores: O maior problema do AMQP é que as versões 0.9.1 e 1.0 são completamente diferentes, levando a mais complexidade neste espaço de soluções.
  • Escalabilidade e desempenho: AMQP pode ter escalabilidade limitada e baixo desempenho em alguns casos de uso. Isso se deve à sua arquitetura, que impõe maior complexidade e sobrecarga em comparação com protocolos leves como o MQTT.

MQTT vs AMQP: confronto direto

A tabela a seguir resume nossa comparação entre AMQP e MQTT.

  AMQP MQTT
Definição Protocolo avançado de enfileiramento de mensagens Transporte de telemetria de enfileiramento de mensagens
Origens Inventado pelo JPMorgan Chase em 2003 Inventado pela IBM em 1999
Arquitetura EBQ (Fila de ligação de troca) Publicação/assinatura baseada em tópico
Conceitos fundamentais ExchangesQueuesBindingsChaves de roteamento TópicosAssinaturas
Versões principais do protocolo · 0.9.1 lançado em novembro de 2008
· 1.0 lançado em outubro de 2012
· 3.1.1 lançado em dezembro de 2015
· 5.0 lançado em março de 2019
Paradigmas de mensagens    
Ponto a ponto ✅ (filas de armazenamento e encaminhamento) Suporte parcial
Publicar/Assinar
Espalham ✅ mais escalável
Fan-in
Solicitar / Responder ✅ na versão 5.0
Empurrar puxar
Rede de transportes    
TCP
TLS / SSL
WebSocket
QUIC
concepção    
Estrutura do frame Os quadros são divididos em três áreas distintas:
Cabeçalho de quadro de largura fixa,
Cabeçalho estendido de largura variável,
Corpo do quadro de largura variável.
Um pacote de controle MQTT consiste em até três partes:
Cabeçalho Fixo
Cabeçalho variável
carga paga
Corrigir tamanho do cabeçalho Bytes 8 Bytes 2
Conteúdo da carga útil Binário Binário
Tamanho máximo da carga útil 2GB 256MB
Entrega    
QoS 0: no máximo uma vez
QoS 1: pelo menos uma vez
QoS 2: exatamente uma vez
Segurança SSL / TLS SSL / TLS

Fatores a serem considerados ao escolher

Ao se deparar com uma decisão entre MQTT e AMQP, há vários fatores a serem considerados.

Avaliação baseada nos requisitos do caso de uso

A escolha entre MQTT e AMQP depende muito dos requisitos do caso de uso. Se você estiver lidando com dispositivos restritos ou redes não confiáveis, o MQTT, com sua natureza leve, pode ser a melhor opção. Se o seu caso de uso exigir roteamento complexo e alta confiabilidade, o AMQP seria mais adequado.

Avaliação Baseada na Arquitetura do Sistema

A arquitetura do sistema também desempenha um papel na decisão. A simplicidade do MQTT o torna uma boa escolha para sistemas com um modelo de comunicação claro e simples. AMQP, com sua flexibilidade e conjunto robusto de recursos, é mais adequado para sistemas complexos com diversas necessidades de comunicação.

Avaliação baseada nas condições da rede

As condições da rede são outro fator crítico. O MQTT funciona bem em redes de baixa largura de banda, alta latência ou não confiáveis. O AMQP, por outro lado, requer uma conexão de rede confiável devido à sua maior sobrecarga.

Avaliação baseada na qualidade de serviço exigida

O MQTT oferece três níveis de qualidade de serviço, permitindo flexibilidade nas garantias de entrega de mensagens. AMQP, com suas mensagens persistentes, garante alta confiabilidade na entrega de mensagens.

Tomando sua decisão

Tanto o MQTT quanto o AMQP têm seus pontos fortes e são adequados para diferentes cenários. Compreender suas principais diferenças e avaliar seus requisitos em relação a essas diferenças o ajudará a tomar uma decisão informada ao escolher. Lembre-se de que a escolha certa depende de suas necessidades e restrições específicas.

local_img

Inteligência mais recente

local_img