Olá leitor, vamos dar continuidade a nossa série de postagens…
Conhecendo o protocolo MQTT
Olá leitores, hoje estamos iniciando uma conversa sobre o protocolo MQTT, um protocolo de troca de mensagens altamente eficaz. Faremos uma série de postagens para que você possa entender o que é, suas principais características, como ele funciona e suas aplicações. Então, sem mais delongas, vamos começar.
É uma realidade, vivemos conectados o tempo todo e sempre buscando meios de conectar um dispositivo ao outro. A internet não é apenas um requisito para este fim, mas ela é hoje um serviço essencial que liga tudo a todos continuamente 24h por dia, todos os dias da semana. E é neste contexto onde objetos e pessoas estão continuamente se comunicando e interagindo entre si, que se insere o que hoje conhecemos como Internet das Coisas (IoT), do Inglês, Internet of Things, termo cunhado em meados de 2009, pelo pesquisador Kevin Ashton, do MIT. Assim, é também neste âmbito que estão inseridas as propostas de soluções e implementações de protocolos para IoT.
E um dos protocolos mais recentes é o tema dessa série, o MQTT (Message Queue Telemetry Transport), protocolo de rede para troca de mensagens, desenvolvido pela IBM que se tornou um padrão para a comunicação da Internet das Coisas.
Conforme mencionado, a conexão com a Internet é uma condição para que os dispositivos se tornem inteligentes e resguardem o título de dispositivos de IoT, integrando o cenário onde estes mecanismos conversam entre si. Cenário este que conta com as gigantes da tecnologia como Google, IBM, Apple e outras se dedicando na criação de soluções simples que estejam atreladas a eficiência e eficácia. Este panorama propõe um quadro perfeito para que o protocolo MQTT baseado na pilha TCP/IP surja como uma alternativa capaz de cumprir todos os requisitos necessários, pois trata-se de um protocolo simples, seguro e de aplicação leve.
ENTENDA O MQTT
Desenvolvido pela IBM e a Eurotech no final da década de 90, baseado na pilha TCP/IP o MQTT – Message Queue Telemetry Transport, é um protocolo de troca de mensagens que suporta a comunicação assíncrona, ou seja, que não ocorre ou não se efetiva ao mesmo tempo, entre as partes. No entanto, apesar do nome este protocolo usa um modelo fundamentado na topologia de publicação de dados e assinatura/leitura dos dados (publish/subscriber) para envio de mensagens. Vale ressaltar que o cenário de uso original do protocolo era voltado para sistemas de supervisão e Aquisição de Dados, característica essa que ele ainda possui, porém, com o adendo de outras funcionalidades, vejamos abaixo.
O MQTT é um protocolo simples e de fácil implementação; sua aplicação leve é ideal para a comunicação remota entre dispositivos onde a quantidade de dados comunicados é altamente limitada, e, em redes cuja largura da banda para a comunicação é restrita e de alta latência, o que justifica seu desenvolvimento em cima de vários conceitos que garantam uma alta performance; é seguro, portanto escalável em ambiente de redes instável; flexível, uma vez que suporta diversificadas aplicações para dispositivos e serviços de IoT; e suas bibliotecas são suportadas por várias linguagens de programação. Tais características que contemplam versatilidade e compatibilidade motivam a implementação do MQTT em dispositivos e sistemas embarcados, tornando-o uma ótima opção para comunicação entre os dispositivos de Internet das Coisas.
BREVE ANÁLISE DO MÉTODO PUBLISH/SUBSCRIBER (PUB/SUB)
Ao longo das postagens dessa série teremos inúmeras oportunidades de falarmos sobre o método pub/sub, e assim o compreendermos em sua completude, no entanto, em uma rápida análise alguns importantes conceitos serão esclarecidos e servirão de base para o nosso completo entendimento.
O princípio de funcionamento do protocolo MQTT – Message Queue Telemetry Transport compreende duas entidades na rede: o servidor conhecido como broker e o os inúmeros clientes que enviam as mensagens ao servidor que é o responsável por roteá-las para clientes de destino relevante. Entenda, quando um elemento deseja receber uma dada informação, ele a subscreve, fazendo a requisição para um outro elemento da rede capaz de gerir as publicações e subscrições. Em uma rede MQTT, este elemento é o broker. O servidor broker é o responsável por receber, enfileirar e disparar as mensagens recebidas dos publishers para os subscribers. Outro ponto importante a ressaltar é que cliente é qualquer elemento capaz de interagir com o broker e receber mensagens, como por exemplo um sensor de IoT em uma rede.
O artigo ‘Conhecendo o MQTT’ publicado no site developerWorks exemplifica com clareza a relação entre o servidor broker e os clientes:
1- O cliente conecta-se ao broker por meio de uma conexão TCP/IP simples. E este cliente pode assinar qualquer “tópico” de mensagem no broker; 2- O cliente publica as mensagens em um tópico, enviando a mensagem e o tópico ao broker; 3- Em seguida, o broker encaminha a mensagem a todos os clientes que assinam esse tópico (FONTE: site developerWorks).
Esclarecendo alguns pontos, o servidor broker implementa estruturas de armazenamento de dados, que são referenciadas como tópicos, conforme exemplificado no item 1, assim, cada um desses tópicos assinados pelo cliente faz referência a uma estrutura de publicação (publisher) de dados, possibilitando ainda a leitura (subscriber) dos dados. No entanto, ambos, broker e cliente necessitam de uma conexão para funcionarem, essa conexão pode ser, como citada no artigo, uma conexão TCP/IP ou ainda uma conexão TLS criptografada para mensagens sensíveis.
Além disso, em função da flexibilidade do protocolo MQTT o desenvolvedor pode limitar a interação dos clientes, especificando qual cliente irá interagir com qual mensagem, por exemplo, cita o artigo:
os sensores publicarão suas leituras no tópico “sensor_data” e assinarão o tópico “config_change”. Os aplicativos de processamento de dados que salvam os dados do sensor em um banco de dados de back-end assinarão o tópico “sensor_data”; um aplicativo de console administrativo poderia receber comandos do administrador do sistema para ajustar as configurações dos sensores, como a sensibilidade e a frequência de amostragem, e publicar essas mudanças no tópico “config_change” (FONTE: site developerWorks).
Por conseguinte, é importante entendermos com exatidão os conceitos de broker e clientes, publisher e subscriber para que possamos avançar com segurança em nossos estudos.
NOTA IMPORTANTE
No que se refere aos clientes, a implementação varia de linguagem para linguagem, e cabe a cada desenvolvedor escolher a opção que melhor lhe atende. No entanto, deve-se estar atento para algumas orientações, embora a lista de APIs seja extensa, nem todas se encontram em um estágio maduro para implementação. Uma API que não tenha sido suficientemente experimentada se encontrando ainda em um estágio inicial pode comprometer a performance do seu projeto.
Esperamos que tenham gostado do início da nossa série sobre o protocolo MQTT, muito mais ainda vem por aí. Fique com a gente e até a próxima postagem.
Gostou desta postagem? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Próxima postagem: Como usar com Arduino – Chave Fim de curso (Micro Switch)
Achei simples e objetivo.