Análise de desempenho: MQTT
ANÁLISE DE DESEMPENHO PROTOCOLO MQTT
Introdução
Como já foi comentado e demonstrado em outras postagens, o
MQTT é um protocolo muito utilizado de internet das coisas, por conta disso,
foi feito uma análise de desempenho do MQTT e esse estudo será apresentado
nesta postagem.
Desenvolvimento
O protocolo MQTT é um dos mais usados para internet das
coisas, utiliza o paradigma “Publisher/Subscriber” e um middleware, chamado
“Broker”, para a transmissão de mensagens entre clientes. O MQTT funciona de
tal maneira que o cliente “Publisher” envia uma mensagem e a escreve em um
determinado tópico, através do broker, que a envia para o cliente “Subscriber”
que estiver inscrito neste mesmo tópico. Tendo como objetivo geral
realizar uma análise do protocolo MQTT, foram realizados testes, de tal forma
que se permitiu analisar e avaliar o tempo em que o protocolo MQTT transmitiu
os dados especificados. Através de uma aplicação codificada em Python, foi
possível fazer esta avaliação. As seguintes seções explicam alguns pontos que
envolveram esta análise, ambiente, aplicação e metodologia.
Ambiente
Prevendo diferentes aplicações, o ambiente criado
constitui-se de um Desktop com sistema operacional Ubuntu 17.04, o qual
implementou-se o broker Mosquitto, duas Beagle Bones Black, um módulo
ESP8266-12F e um Osciloscópio. O tráfego de rede foi produzido na própria
interface local da máquina de aplicação e foi utilizada, para fornecer a
conexão de transferência de dados, rede Ethernet e Wi-Fi.
Aplicação
Para que os testes fossem válidos, elaborou-se uma
aplicação específica para o protocolo MQTT, um “pseudo” request/response.O
código desenvolvido estabeleceu que ambos os clientes seriam Publisher e
Subscriber, fazendo com que o cliente Pubsh que enviou os dados, os receba do
cliente Subsc, para analisar e avaliar, foi calculado o tempo dessa
transferência, ida e volta, entre os clientes.
Programação MQTT
Como
já dito anteriormente, a aplicação foi codificada em Python utilizando a IDE
PyCharm, através da biblioteca paho-mqtt-client e paho-umqtt-client. As figuras
destacadas a seguir apresentam os códigos da aplicação utilizada nos testes
feitos.
Para
cada dispositivo foi desenvolvido um código diferente considerando seu sistema
operacional e suas portabilidades.
Testes
Os testes efetuados são direcionados à transferência de
dados entre dois clientes, onde ambos são publicadores e inscritos, através da
rede Ethernet ou Wi-Fi e do protocolo MQTT analisando sua capacidade e o seu
comportamento. Os elementos transmitidos consistiram de um objeto “bytes”
criado com um número dado de Bytes, assegurando o tamanho correto dos dados
enviados.
As publicações constituíram-se de mensagens de 32bits,
definidas através do objeto byte. Para esta análise específica, prevendo
algumas aplicações futuras, foram feitos 2 testes diferentes de transferência
de mensagens, modificando apenas os clientes.
No primeiro teste a transferência de dados foi entre duas
BeagleBonesBlack utilizando Ethernet e o Broker Mosquitto. Afim de medir com
osciloscópio a diferença entre o tempo do envio e do recebimento da mensagem,
foi instalado um Led em ambas, tornando possível a medição.
Figura 4- Projeto do Teste 1
Figura 5- TestBed teste 1
No segundo teste a troca relacionou uma BeagleBoneBlack e
uma ESP8266-12F utilizando as mesmas condições do teste 1, com o adicional do
Wi-Fi pela parte do recebimento dos dados com o módulo ESP.
Figura 6- Projeto do Teste 2
Os
resultados adquiridos nos testes feitos foram discutidos, avaliados e serão
apresentados nesta seção.
Figura 8- Resultado do Teste 1
Figura 9- Resultado do Teste 1
Na
Figura 6 e 7 os resultados obtidos através do osciloscópio do teste 1 são
apresentados. É possível calcular o tempo entre o recebimento a partir da
diferença entre as linhas do canal 1 (CH1 em amarelo) e do canal 2 (CH2 em
azul), que no teste 1 foi de 10ms.
Figura 10- Resultado do Teste 2
Figura 11- Resultado do Teste 2
As figuras 8 e 9 apresentam os resultados obtidos do teste
2. O tempo obtido a partir da transferência de dados entre a BeagleBoneBlack e
a Esp8266 foi de 25ms.
A
aplicação MQTT funcionou conforme o esperado no teste 1, porém no teste 2 os
resultados foram um pouco abaixo do desejado, mas ainda bons tendo em vista as
futuras aplicações. O baixo desempenho no teste 2 podem ser justificados por
conta do Wi-Fi e da rede utilizada, que mesmo sendo privada, possuía algumas
limitações. Porém o MQTT provou ser
rápido e eficiente, um ótimo protocolo para internet das coisas para
monitoramento, acionamento, ou qualquer outra aplicação em tempo real.
Códigos: https://github.com/zanettivictoria/DesempenhoMQTT
Códigos: https://github.com/zanettivictoria/DesempenhoMQTT
Comentários
Postar um comentário