MQTT vs REST — perspectiva de uma implementação IoT

Renan Prata
3 min readJun 26, 2018

--

Atualmente, a maioria das implementações IoT (Internet of Things) utiliza algum tipo de conectividade entre os dispositivos. Algumas implementações são baseadas sobre o protocolo HTTP, sendo a principal arquitetura utilizada é a REST. REST significa Representational State Transfer. Em português, Transferência de Estado Representacional. Trata-se de uma abstração da arquitetura da Web. Resumidamente, o REST consiste em princípios/regras/constraints que, quando seguidas, permitem a criação de um projeto com interfaces bem definidas. Desta forma, permitindo, por exemplo, que aplicações se comuniquem. Por outra via, vem sendo adotado o MQTT, um protocolo lightweight, que foi originalmente criado para suprir as necessidades de conectividade de dispositivos IoT com algumas vantagens sobre outras arquiteturas. Este texto compara essas duas arquiteturas, para ajudar o leitor na escolha de qual protocolo de comunicação utilizar em uma solução IoT.

Tempo de Resposta

A arquitetura HTTP REST é uma conexão unidirecional e a conexão com o servidor é intermitente. O cliente se conecta ao servidor quando necessário para enviar dados do cliente e envia os dados para o cliente. O servidor precisa esperar que os clientes se conectem para enviar os dados destinados ao cliente. Isso faz com que o usuário pretenda agir para aguardar a conexão do cliente. A maioria dos provedores de soluções permite que seu servidor de borda ou seus gateways se conectem a cada 1 minuto ou mais para que o servidor não seja carregado.

Veja um exemplo de um aplicativo para smartphones. A mensagem do celular atingirá o servidor instantaneamente. Mas a mensagem do servidor para o cliente precisa aguardar a conexão do cliente.

A arquitetura MQTT permite que o cliente seja conectado sempre fornecendo uma comunicação bidirecional entre o cliente e o servidor. Isso permite que o servidor envie a mensagem para o dispositivo, fazendo com que este responda ao seu comando instantaneamente, conforme esperado pelos clientes.

Consumo de Energia

Quando comparado diretamente para a mesma transferência de dados usando HTTP REST e MQTT, a arquitetura MQTT consome 20% menos energia. No caso do HTTP REST, a maior parte da energia é perdida nos recursos usados ​​na conexão e desconexão e na limpeza de recursos no servidor e no cliente. Portanto, quando você constrói um dispositivo remoto operado por bateria, o MQTT ajuda você com uma vida útil da bateria maior.

Segurança

A maioria dos dispositivos hoje é implantada atrás do firewall por razões de segurança. Uma das limitações da arquitura HTTP REST é que o servidor não pode se comunicar do servidor para o cliente sob demanda. Mesmo se colocarmos um servidor REST nos dispositivos clientes e tentarmos fazer com que as conexões formem o servidor, ele falhará quando os dispositivos forem instalados atrás do firewall. O MQTT resolve inerentemente esse problema de comunicação bidirecional com as conexões persistentes.

Perfomance

A arquitetura MQTT sempre mantém seus dispositivos conectados, diferente da arquitetura HTTP REST que são intermitentes. Devido à conexão permanente, a necessidade de conectar e desconectar para cada transferência de dados não é necessária. O ping keep alive tem uma sobrecarga muito menor em comparação com as chamadas de conexão de reconexão que o HTTP REST faz. De acordo com os relatórios de análise e teste, a transferência de dados MQTT pode transferir dados a uma taxa 20 a 25 vezes mais rápida que as chamadas REST.

O número de transações de mensagens depende muito do número de conexões que o servidor pode aceitar no tempo estipulado. O número de conexões simultâneas que o servidor da web disponível mais rapidamente hoje será da ordem de 1000s por segundo. Isso restringe a transferência de dados em seqüência. O Mosquito (um MQTT broker) pode processar até 40.000 mensagens por segundo em um servidor. O número de conexões paralelas que o intermediário pode conter pode ser novamente ajustado com base no hardware. Um simples servidor pode armazenar até 50.000 conexões em paralelo.

Podemos observar que a arquitutura MQTT é superior ao HTTP REST para uma implementação de uma solução IoT.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Responses (1)

Write a response