MQTT协议的优点和缺点

发布时间 2023-06-01 14:49:25作者: rachel_aoao

翻译自:https://www.nabto.com/mqtt-protocol-iot/

MQTT的全称是Message Queue Telemetry Transmission。顾名思义,它是一个使用了发布-订阅模式的消息模型。在物联网的领域,MQTT已经被广泛使用。MQTT是建立在TCP/IP协议之上的应用层协议,有着简单的协议定义和结构,被越来越多物联网中各种小型,能耗低的产品用作数据通信。

MQTT协议的优点

能保证消息的可达性

很多IoT设备是穿戴式,可移动或者电池驱动的产品,这些特点导致IoT设备容易处于一些不稳定的环境中,比如网络信号较弱等。这时,MQTT协议的一个特点就是能保证无论在什么环境下,推送消息都是可靠的。MQTT通过把消息推送的可达性分为3个等级来更好地保证不同场景的需求。即QoS(Quality of Service):

  • Qos 0 : 最多推送一次;适用于在消息丢失是可以接受的场景下。
  • Qos 1: 至少都会推送一次;在消息推送必须要保证的时候适用。
  • Qos 2: 只推送一次;在最严格的场景下,必须保证消息被送达,且消息不能重复。

轻量

我们都很熟悉的HTTP协议,它的协议头可能都会占用8000字节,而MQTT协议只有2字节和一点点额外代码。所以MQTT协议的轻小为那些拥有很小内存或者很小额定电流的设备来说是个很好的选择。

对电池友好

MQTT协议是由IBM团队为了在一些非常严苛条件下适用而开发的,所以基于此协议的数据交换本身耗电非常低,和HTTP协议比较起来更是天差地别。在3G网络下,MQTT消耗的电量是HTTP的1/170;在Wi-Fi网络下,是HTTP的1/47。

MQTT协议的缺点

MQTT不适用于视频流

开发复杂

对于开发者来说,由于其异步,发布订阅的特点,这些对于传统同步阻塞编程来说显得更复杂一些。

延时的问题

MQTT同样不适用于对于延时要求严苛低的IoT的设备,比如医疗器械。

没有内置安全层

如果你需要保证消息的安全性,你需要自己在该协议之上,构建一层安全层如SSL/TLS。