O CoAP tem uma pegada mais baixa que o MQTT?

8

Recentemente, li uma pergunta do Quora sobre se o CoAP ou o MQTT é mais leve, mas as respostas não parecem particularmente satisfatórias e todas se contradizem: a resposta principal diz que o MQTT consome menos recursos e outra abaixo diz que o CoAP é menos exigente.

Pelo que eu descobri, faria sentido que o CoAP fosse menos exigente que o MQTT , já que o CoAP exige apenas UDP, e suas mensagens são principalmente disparar e esquecer, ao contrário do MQTT que funciona por TCP (e, portanto, seria muito mais envolvidos).

Qual protocolo requer menos recursos para funcionar?


Por recursos, estou pensando principalmente na potência do processador, RAM e dados a serem transmitidos. Por exemplo, na pergunta do Quora que eu vinculei , a resposta principal aponta que um chip ESP8266 simples poderia executar o MQTT, que possui apenas um processador de 80 MHz e menos de 1 MB de RAM. Estou curioso para saber se o CoAP pode ser executado em algo assim ou em um ambiente ainda mais restrito.

O tipo de caso de uso que eu estou pensando é onde o dispositivo estaria recebendo dados de outro dispositivo (por exemplo, comandos para ativar / desativar), mas pode precisar enviar com pouca frequência (talvez algumas vezes por hora) atualizações com o status do dispositivo . Gostaria de usar o mínimo de poder de processamento possível para reduzir os custos do dispositivo e transmitir relativamente pouca frequência para reduzir ao máximo o uso de energia.

Aurora0001
fonte
1
Para evitar comparações de maçãs e laranjas, seria útil se você pudesse criar um caso de uso muito, muito específico. Que tarefa você gostaria de usar como base para comparação?
goobering
@ goobering editei com mais algumas informações sobre um caso de uso mais concreto; entre em contato se precisar de mais alguma coisa.
Aurora0001
No servidor / hub ou no terminal? Seu dispositivo de exemplo parece estar acima das especificações para um endpoint restrito.
Sean Houlihane
@SeanHoulihane No ponto final. Os recursos necessários no hub não são tão importantes na minha pergunta; apenas com o objetivo de minimizar os recursos do terminal.
Aurora0001

Respostas:

7

CoAP e MQTT têm o mesmo uso de RAM, medido em 10kbits [1].

A diferença está no uso da CPU e da rede: [2]

Todo cliente suporta TCP e mantém uma conexão aberta com o broker.

Portanto, o CoAP tem menos espaço ocupado e, de acordo com todo o caso de uso (pequenos dados de vez em quando), parece ser a melhor opção.

Como você mencionou, o CoAP usa UDP. Não garante a entrega de dados. Ainda assim, ele executa 'excelente' em condições de perda, enquanto o MQTT é apenas 'bom'. Então, eu não me preocuparia muito com isso.

Fontes:

[1] http://embedded-computing.com/articles/internet-things-requirements-protocols/

[2] http://www.altencalsoftlabs.com/blogs/2016/08/08/analyzing-mqtt-vs-coap/

mico
fonte
Sua referência não parece apoiar sua conclusão: “20 KB adicionais de flash e 8 KB de RAM para atualizar para o TCP”. Se você arredondar para 10kbits ou mesmo para 10kB, isso significa que a diferença no uso de RAM entre CoAP e MQTT não é desprezível.
Gilles 'SO- stop be evil'
Depende se o TCP é um critério de seleção. Ele se opõe ao caso normal do protocolo, que é o UDP. Tomar CoAP quase significa aceitar UDP.
Mico 27/05