MQTT协议原理及优缺点

截屏2023-08-07 20.21.19.png

MQTT协议工作原理

1639963320775691.png

MQTT是一种轻量级的消息传输协议,常用于物联网设备之间的通信。MQTT协议工作原理基于发布/订阅模式,它允许设备之间通过中间代理服务器进行通信,从而实现设备之间的数据交换。MQTT协议的工作原理可以分为三个主要部分:发布者代理服务器订阅者发布者是指发送消息的设备,订阅者是指接收消息的设备,代理服务器则是连接发布者和订阅者的中间件。在MQTT协议中,发布者将消息发布到代理服务器上,代理服务器将消息存储在一个称为主题(Topic) 的逻辑容器中。主题是一种标识消息类型的字符串,它被订阅者用来过滤消息。订阅者可以订阅一个或多个主题,以接收与其相关的消息。当发布者发布一条消息时,它将消息发送到代理服务器,并指定一个主题。代理服务器将消息存储在与主题相关联的队列中,然后将消息发送给所有订阅了该主题的订阅者订阅者可以选择接收所有消息,或者只接收特定类型的消息。MQTT协议的工作原理还涉及到QoS(Quality of Service) 级别。QoS级别用于控制消息的可靠性和传输速度。MQTT协议支持三种QoS级别:0、1和2。QoS 0表示消息不需要确认,QoS 1表示消息需要确认,QoS 2表示消息需要确认并且保证只被传输一次。总的来说,MQTT协议的工作原理非常简单,它通过发布/订阅模式实现设备之间的通信。MQTT协议的轻量级设计使得它非常适合于物联网设备之间的通信,同时也使得它具有很好的可扩展性和灵活性。

MQTT协议的优点

  • 低协议开销。MQTT的独特功能是每个消息头都可以缩短为2个字节。对于HTTP为每个新请求消息重新建立HTTP连接会产生可观的开销。 MQ和MQTT使用的持久连接可以大大节省这种开销。
  • 包容不稳定的网络。MQTT和MQ可以从诸如断开连接之类的故障中恢复,无需进一步的代码要求。但是HTTP本身无法实现此目标,并且客户端必须重试编码,这会增加身份问题。
  • 低功耗。MQTT专为低功耗目标而设计。 HTTP设计未考虑此因素,这会增加功耗。
  • 能为数百万个客户端提供连接。在连接数百万个客户端的情况下,在HTTP堆栈中维护数百万个并发连接需要大量工作才能提供支持。尽管这种支持是可行的,但大多数商业产品都经过优化以处理此订单上的持久连接。 IBM提供了IBM MessageSight,这是一种单机架安装服务器,已经过测试,可以通过MQTT处理多达一百万个并发设备。相反,MQ不是为许多同时进行的客户设计的。
  • 推送通知。您需要能够及时向客户发送通知。为此,您应该使用常规的轮询或推送方法。就电池,系统负载和带宽而言,推送是最佳解决方案。
  • 客户端平台的差异。 HTTP和MQTT客户端都在许多平台上实现。 MQTT的简单性可帮助您以最少的努力在其他客户端上实施MQTT。
  • 防火墙容错能力。某些公司防火墙将出站连接限制到某些预定义的端口,这些端口通常仅限于HTTP(端口80),HTTPS(端口443)等,HTTP在这种情况下显然可以工作。 MQTT封装在WebSockets连接中,并显示为HTTP升级请求,因此可以在这种情况下运行。

MQTT协议的缺点

  • SDK不够多。如果没有完整的SDK,则需要用于不同异构设备的软件SDK软件包才能与MQTT服务器(例如MCU,Linux,Android,iOS,WEB)进行通信,以实现互连和互操作性。
  • 不支持文件和AV。在某些应用场景中,需要传输的信息可能不限于需要通过AV与文件通信的指令,例如语音和视频信号。
  • 不支持与第三方HTTP集成。 MQTT协议优于常规HTTP协议,但是基于传统HTTP协议的WEB服务器仍在主流市场中占主导地位。这些服务器应与MQTT协议互连,以降低升级成本。
  • 不支持负载分配。负载分配服务器对于高并发性和防止恶意攻击也是必不可少的。
  • 不支持用户管理界面。当用户分析设备行为数据时,这一点尤其重要。在工业4.0和大数据时代,这是不可避免的需求。
  • 不支持离线消息。设备脱机后,不支持脱机消息来补偿从MQTT服务器到设备的控制信息丢失。
  • 不支持点对点通信,并且使用标准的MQTT协议。从理论上讲,点对点通信可以通过相互订阅来实现,但是逻辑相对复杂并且涉及设备安全性。当设备B和设备C相同时-在主题的情况下,设备A无法知道消息是来自设备B还是来自设备C,并且消息很可能是被设备D窃听的。
  • 不支持群组通信或群组管理,而是实现群组成员的管理。小组成员可以交换消息,如果一个设备由多个人控制或多个设备由一个人控制,则此功能特别有用。

开发过程中MQTT遵循以下设计原则:

  • 精简,不添加可有可无的功能。
  • 发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递。
  • 允许用户动态创建主题,零运维成本。
  • 传输量降到最低以提高传输效率。
  • 低带宽高延迟不稳定的网络等因素考虑在内。
  • 支持连续的会话控制。
  • 理解客户端计算能力可能很低。
  • 提供服务质量管理。
  • 假设数据不可知,不强求传输数据的类型与格式,保持灵活性。

你可能感兴趣的:(MQTT协议原理及优缺点)