CoAP a-t-il une empreinte plus faible que MQTT?

8

J'ai récemment lu une question de Quora pour savoir si CoAP ou MQTT est plus léger, mais les réponses ne semblent pas particulièrement satisfaisantes et se contredisent toutes: la première réponse indique que MQTT prend moins de ressources, et une autre ci-dessous qui dit que CoAP est moins exigeant.

D'après ce que j'ai trouvé, il serait logique que CoAP soit moins exigeant que MQTT , car CoAP ne nécessite que UDP, et ses messages sont principalement à tirer et à oublier, contrairement à MQTT qui fonctionne sur TCP (et serait donc beaucoup plus impliqué).

Quel protocole nécessite le moins de ressources pour fonctionner?


Par ressources, je pense principalement à la puissance du processeur, à la RAM et aux données à transmettre. Par exemple, dans la question Quora que j'ai liée, la réponse du haut indique qu'une simple puce ESP8266 pourrait exécuter MQTT, qui n'a qu'un processeur de 80 MHz et moins de 1 Mo de RAM. Je suis curieux de savoir si CoAP pourrait fonctionner sur quelque chose comme ça, ou un environnement encore plus contraint.

Le type de cas d'utilisation que j'envisage est celui où l'appareil recevrait principalement des données d'un autre appareil (par exemple, des commandes pour allumer / éteindre), mais peut avoir besoin rarement (peut-être quelques fois par heure) d'envoyer des mises à jour avec l'état de l'appareil . J'aimerais utiliser le moins de puissance de traitement possible pour réduire les coûts de l'appareil et transmettre relativement peu fréquemment pour réduire autant que possible la consommation d'énergie.

Aurora0001
la source
1
Pour éviter les comparaisons de pommes et d'oranges, il serait utile de disposer d'un cas d'utilisation très, très spécifique. Quelle tâche aimeriez-vous utiliser comme base de comparaison?
goobering le
@goobering J'ai édité avec plus d'informations sur un cas d'utilisation plus concret; faites-moi savoir si vous avez besoin de plus.
Aurora0001
Au niveau du serveur / concentrateur ou du point de terminaison? Votre exemple d'appareil semble bien trop spécifique pour un point de terminaison contraint.
Sean Houlihane
@SeanHoulihane Au point final. Les ressources nécessaires au hub ne sont pas tellement un facteur dans ma question; visant simplement à minimiser les ressources de point de terminaison.
Aurora0001

Réponses:

7

CoAP et MQTT ont tous deux une utilisation de RAM égale, mesurée en 10 kbits [1].

La différence réside dans l'utilisation du processeur et du réseau: [2]

Chaque client prend en charge TCP et détient une connexion ouverte au courtier.

Ainsi, CoAP a moins d'empreinte et selon le cas d'utilisation (petites données de temps en temps), il semble être votre meilleur choix.

Comme vous l'avez mentionné, CoAP utilise UDP. Il ne garantit pas la livraison des données. Il fonctionne toujours «excellent» dans des conditions de perte, tandis que MQTT n'est que «bon». Donc, je ne m'inquiéterais pas beaucoup à ce sujet.

Sources:

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

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

mico
la source
Votre référence ne semble pas étayer votre conclusion: «20 Ko supplémentaires de flash et 8 Ko de RAM pour passer à TCP». Si vous arrondissez à 10kbits, ou même à 10kB, cela signifie que la différence d'utilisation de la RAM entre CoAP et MQTT n'est pas négligeable.
Gilles 'SO- arrête d'être méchant'
Cela dépend si TCP est un critère de sélection. Il s'oppose au cas normal du protocole, qui est UDP. Prendre CoAP signifie presque accepter UDP.
mico