CoAP ha un footprint inferiore rispetto a MQTT?


8

Di recente ho letto una domanda di Quora sul fatto che CoAP o MQTT sia più leggero, ma le risposte non sembrano particolarmente soddisfacenti e si contraddicono a vicenda: la risposta principale dice che MQTT richiede meno risorse e un'altra sotto che dice che CoAP è meno impegnativo.

Da quello che ho scoperto, avrebbe senso che CoAP sarebbe meno impegnativo di MQTT , poiché CoAP richiede solo UDP e i suoi messaggi sono principalmente "taglia e scorda", a differenza di MQTT che funziona su TCP (e quindi sarebbe molto di più coinvolti).

Quale protocollo richiede il minor numero di risorse per funzionare?


Per risorse, sto pensando principalmente alla potenza del processore, alla RAM e ai dati richiesti da trasmettere. Ad esempio, nella domanda Quora che ho collegato, la risposta in alto sottolinea che un semplice chip ESP8266 potrebbe eseguire MQTT, che ha solo un processore da 80 MHz e meno di 1 MB di RAM. Sono curioso di sapere se CoAP potrebbe funzionare su qualcosa di simile o in un ambiente ancora più limitato.

Il tipo di caso d'uso che sto immaginando è in cui il dispositivo riceve principalmente dati da un altro dispositivo (ad es. Comandi per accendere / spegnere), ma potrebbe essere necessario raramente (forse alcune volte all'ora) inviare aggiornamenti con lo stato del dispositivo . Vorrei utilizzare la minor potenza di elaborazione possibile per ridurre i costi del dispositivo e trasmettere relativamente raramente per ridurre il più possibile il consumo di energia.


1
Per evitare confronti tra mele e arance sarebbe utile se tu potessi presentare un caso d'uso molto, molto specifico. Quale attività desideri utilizzare come base per il confronto?
goobering

@goobering Ho modificato con qualche informazione in più su un caso d'uso più concreto; fammi sapere se hai bisogno di qualcosa di più.
Aurora0001

Sul server / hub o sull'endpoint? Il dispositivo di esempio sembra troppo specifico per un endpoint vincolato.
Sean Houlihane,

@SeanHoulihane All'endpoint. Le risorse necessarie all'hub non sono tanto un fattore nella mia domanda; solo mirando a minimizzare le risorse dell'endpoint.
Aurora0001

Risposte:


7

CoAP e MQTT hanno entrambi un uguale utilizzo di RAM, misurato in 10kbit [1].

La differenza sta nell'uso della cpu e della rete: [2]

Ogni client supporta TCP e mantiene aperta una connessione al broker.

Quindi, CoAP ha un minor numero di impronte e, in base all'intero caso d'uso (piccoli dati una volta ogni tanto), sembra essere la scelta migliore.

Come indicato, CoAP utilizza UDP. Non garantisce la consegna dei dati. Tuttavia funziona "eccellente" in condizioni di perdita, mentre MQTT è solo "buono". Quindi, non mi preoccuperei molto.

fonti:

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

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


Il tuo riferimento non sembra supportare la tua conclusione: "ulteriori 20 KB di flash e 8 KB di RAM per l'aggiornamento a TCP". Se arrotondate a 10kbit o anche a 10kB, ciò significa che la differenza nell'utilizzo della RAM tra CoAP e MQTT non è trascurabile.
Gilles 'SO- smetti di essere malvagio'

Dipende se TCP è un criterio di selezione. Si oppone al caso normale del protocollo, che è UDP. Prendere CoAP significa quasi accettare UDP.
mico,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.