O Message Queuing Telemetry Transport (MQTT) é um protocolo de mensagens de publicação e assinatura popular e leve, ideal para conectar dispositivos e aplicativos de Internet das Coisas (IoT) ou máquina a máquina (M2M) pela Internet. O MQTT foi projetado para operar com eficiência em ambientes de baixa largura de banda ou baixo consumo de energia, o que o torna uma escolha ideal para aplicativos com um grande número de clientes remotos. Ele é usado em diversos setores, incluindo eletrônicos de consumo, automotivo, transporte, manufatura e saúde.

Como o MQTT funciona?

Dispositivos ou aplicativos conectados via MQTT são conhecidos como clientes . Esses clientes publicam e/ou assinam mensagens sobre um tópico específico ou sobre vários tópicos . Os clientes inscritos recebem todas as mensagens publicadas naquele tópico, permitindo uma troca de dados eficiente e tolerante a falhas entre muitos dispositivos e serviços.

No coração de uma arquitetura MQTT está um broker . O broker é um servidor responsável por rastrear clientes (e quaisquer tópicos nos quais eles estejam inscritos), processar mensagens e encaminhá-las para os sistemas apropriados.

Versões do protocolo MQTT

Várias versões importantes do protocolo MQTT foram adotadas como padrão. A organização OASIS gerencia as revisões do protocolo e mantém uma especificação completa para cada versão . Cada revisão do MQTT expandiu o conjunto de recursos do protocolo, por isso é importante saber a qual versão do MQTT seus dispositivos e corretores aderem.

Tipos e formatos de mensagens MQTT

Existem vários tipos de mensagens MQTT, e cada tipo de mensagem contém um formato específico que os dispositivos e aplicativos em conformidade devem seguir. As revisões do protocolo MQTT variam em formato e tipos de mensagens. Uma lista completa de tipos de mensagens pode ser encontrada em cada especificação do protocolo MQTT.

Os três tipos mais comuns de mensagens são CONECTAR, PUBLICAR e ASSINAR. Cada mensagem MQTT contém um cabeçalho, carga útil e sinalizadores opcionais. Dependendo do tipo de mensagem, a carga útil pode ter comprimento variável. Por exemplo, em uma mensagem PUBLISH, a carga útil contém os dados a serem enviados a todos os dispositivos assinantes e o comprimento do campo de dados tem uma relação direta com o tamanho da mensagem.  Por padrão, os dispositivos MQTT se conectam na porta 1883 de forma desprotegida ou na porta 8883 quando a criptografia SSL/TLS está habilitada.

O que é um exemplo de MQTT em ação?

Carros inteligentes são um ótimo exemplo de MQTT em ação. À medida que os fabricantes de automóveis adicionam novos recursos para oferecer suporte a tudo, desde diagnósticos remotos e gerenciamento de frotas até pagamentos de combustível e entretenimento, o MQTT se tornou um padrão comum para carros conectados. Ao contrário do protocolo HTTP (Hypertext Transfer Protocol), o MQTT pode manter uma sessão persistente mesmo quando um carro entra e sai de zonas mortas ou se sua conexão muda de torre de celular. O MQTT também oferece suporte a comunicações bidirecionais, facilitando o envio e o recebimento de dados pelo carro e pelo aplicativo em nuvem sem esperar que o outro responda.

Qual é a diferença entre HTTP e MQTT?

HTTP e MQTT são protocolos de rede usados para transmitir dados pela internet. Vamos dar uma olhada nas diferenças entre eles.

HTTP

  • Protocolo de solicitação-resposta em que um cliente envia uma solicitação para um servidor e o servidor responde com os dados solicitados.
  • Projetado principalmente para transmitir conteúdo da web (como documentos HTML, imagens e dados de formulário) entre servidores da web e navegadores.
  • Exemplo: Um navegador da web (o cliente) envia uma solicitação a um servidor da web, e o servidor responde com dados no formato de uma página da web.

MQTT

  • Protocolo de mensagens leves do tipo publicação-assinatura, em que os clientes assinam tópicos e recebem mensagens publicadas nesses tópicos por outros clientes.
  • Projetado para topologias de rede e dispositivos onde baixa largura de banda, estabilidade de conexão e consumo de energia são considerações importantes.
  • Exemplo: O cenário do carro inteligente acima.
Por que usar o MQTT na Internet das Coisas (IoT)?

Muitos recursos do MQTT o tornam o protocolo ideal para mensagens entre dispositivos IoT (as “coisas” na IoT) e sistemas de backend. Aqui, nos concentramos em quatro características:

  • Leve: o MQTT tem uma pegada de código pequena que funciona bem em dispositivos com poder de processamento e memória limitados, como sensores.
  • Confiável – Muitos dispositivos IoT se conectam por meio de redes celulares. MQTT é um protocolo adequado para redes de baixa largura de banda que exigem mensagens compactas usando menos dados. Isso torna o MQTT mais confiável, mesmo quando a largura de banda da rede é limitada ou instável.
  • Escalável – O modelo de publicação-assinatura é fácil de escalar com a adição de dispositivos e sistemas de backend. Um exemplo de publicação de um único dispositivo em duas redes de backend separadas (assinantes) é um medidor inteligente residencial que envia dados de uso de serviços públicos para ambos os sistemas do serviço público para fins de faturamento e para um aplicativo voltado para o cliente que o proprietário pode acessar para manter o controle sobre o uso de energia de sua residência.
  • Seguro – As mensagens MQTT podem ser criptografadas com o padrão Transport Layer Security (TLS) e oferecem suporte a credenciais que podem ser usadas para autenticação. Isso torna o MQTT um protocolo de mensagens seguro em aplicativos de IoT que pode lidar com informações confidenciais, como leituras de monitores de saúde de vários dispositivos médicos.
Qual protocolo de transporte o MQTT usa?

O MQTT oferece suporte ao Protocolo de Controle de Transmissão/Protocolo de Internet (TCP/IP) como seu protocolo de transporte subjacente. Este protocolo de rede amplamente utilizado garante que as mensagens sejam enviadas de forma confiável entre clientes e corretores.

Existem vários motivos pelas quais o TCP/IP é considerado confiável e eficiente:

  • Detecção e correção de erros: uma variedade de técnicas verifica a integridade dos pacotes de dados e mecanismos de retransmissão para recuperar pacotes perdidos.
  • Controle de fluxo: os dados são transmitidos a taxas ideais para qualquer rede, evitando atrasos na transmissão e promovendo uma comunicação eficiente.
  • Multiplexação: vários fluxos de dados podem ser enviados através de uma única conexão, para que várias aplicações possam usar a mesma conexão ao mesmo tempo.
  • Compatibilidade: funciona com uma ampla variedade de dispositivos e sistemas operacionais.
  • Dimensionamento: projetado para trabalhar em redes grandes e complexas sem comprometer o desempenho, mesmo ao lidar com grandes quantidades de tráfego.

Embora seja o mais comum, o TCP/IP não é a única opção para transporte de mensagens MQTT. O protocolo MQTT também funciona com o User Datagram Protocol (UDP) e WebSockets.

Recursos adicionais

Temos o orgulho de oferecer os seguintes recursos gratuitos para ajudar você a continuar pesquisando como o NGINX pode proteger, equilibrar a carga e fornecer alta disponibilidade para sistemas de IoT baseados em MQTT.

BLOG

Documentos