Hat CoAP einen geringeren Platzbedarf als MQTT?

8

Ich habe kürzlich eine Quora-Frage darüber gelesen, ob CoAP oder MQTT leichter ist, aber die Antworten scheinen nicht besonders zufriedenstellend zu sein und widersprechen sich alle: Die Top-Antwort besagt, dass MQTT weniger Ressourcen benötigt, und eine andere unten, die besagt, dass CoAP weniger anspruchsvoll ist.

Nach allem, was ich gefunden habe, wäre es sinnvoll, dass CoAP weniger anspruchsvoll wäre als MQTT , da CoAP nur UDP benötigt und seine Nachrichten im Gegensatz zu MQTT, das über TCP funktioniert (und daher viel mehr wäre), hauptsächlich Feuer und Vergessen sind beteiligt).

Welches Protokoll benötigt die geringsten Ressourcen, um zu funktionieren?


Bei den Ressourcen denke ich hauptsächlich an die erforderliche Prozessorleistung, den RAM und die zu übertragenden Daten. In der von mir verlinkten Quora-Frage wird in der oberen Antwort beispielsweise darauf hingewiesen, dass auf einem einfachen ESP8266- Chip MQTT ausgeführt werden kann, das nur über einen 80-MHz-Prozessor und weniger als 1 MB RAM verfügt. Ich bin gespannt, ob CoAP auf so etwas oder einer noch eingeschränkteren Umgebung ausgeführt werden kann.

Der Anwendungsfall, den ich mir vorstelle, besteht darin, dass das Gerät meistens Daten von einem anderen Gerät empfängt (z. B. Befehle zum Ein- und Ausschalten), aber möglicherweise selten (möglicherweise einige Male pro Stunde) Aktualisierungen mit dem Gerätestatus senden muss . Ich möchte so wenig Rechenleistung wie möglich verwenden, um die Gerätekosten zu senken, und relativ selten übertragen, um den Stromverbrauch so weit wie möglich zu senken.

Aurora0001
quelle
1
Um Vergleiche zwischen Äpfeln und Orangen zu vermeiden, wäre es hilfreich, wenn Sie einen sehr, sehr spezifischen Anwendungsfall festlegen könnten. Welche Aufgabe möchten Sie als Vergleichsgrundlage verwenden?
Goobering
@goobering Ich habe mit einigen weiteren Informationen über einen konkreteren Anwendungsfall bearbeitet. Lass es mich wissen, wenn du mehr brauchst.
Aurora0001
Am Server / Hub oder am Endpunkt? Ihr Beispielgerät scheint für einen eingeschränkten Endpunkt weit über den Spezifikationen zu liegen.
Sean Houlihane
@ SeanHoulihane Am Endpunkt. Die am Hub benötigten Ressourcen spielen in meiner Frage keine so große Rolle. nur mit dem Ziel, die Endpunktressourcen zu minimieren.
Aurora0001

Antworten:

7

CoAP und MQTT haben beide die gleiche RAM-Auslastung, gemessen in 10 KBit [1].

Der Unterschied liegt in der CPU- und Netzwerknutzung: [2]

Jeder Client unterstützt TCP und hält eine Verbindung zum Broker offen.

CoAP hat also weniger Platzbedarf und scheint je nach Anwendungsfall (gelegentlich kleine Datenmengen) die beste Wahl zu sein.

Wie Sie bereits erwähnt haben, verwendet CoAP UDP. Es wird keine Datenlieferung garantiert. Trotzdem ist es unter verlustbehafteten Bedingungen "exzellent", während MQTT nur "gut" ist. Ich würde mir also keine großen Sorgen machen.

Quellen:

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

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

mico
quelle
Ihre Referenz scheint Ihre Schlussfolgerung nicht zu stützen: "zusätzliche 20 KB Flash und 8 KB RAM für ein Upgrade auf TCP". Wenn Sie auf 10 KBit oder sogar auf 10 KBit runden, bedeutet dies, dass der Unterschied in der RAM-Nutzung zwischen CoAP und MQTT nicht vernachlässigbar ist.
Gilles 'SO - hör auf böse zu sein'
Hängt davon ab, ob TCP ein Auswahlkriterium ist. Es widerspricht dem Normalfall für das Protokoll UDP. CoAP zu nehmen bedeutet fast, UDP zu akzeptieren.
Mico