1 什么是MQTT协议?
MQTT协议是一种广泛应用于物联网的机器对机器(M2M)协议。它是一种基于消息的协议。这是一项成熟的技术,用于机器对机器通信,在具有挑战性的环境中运行良好,例如高延迟、低带宽和不可靠的网络。它通常用于嵌入式环境。
MQTT非常轻巧,因此,它被用于物联网生态系统。几乎所有的物联网云平台都支持MQTT协议来收发来自智能对象的数据。不同的物联网板有几种实现,如Arduino、Raspberry等。还有其他物联网协议用于实现物联网项目,但MQTT是最有效的协议之一。
- 概述
MQTT 代表 MQ 消息队列传输。它以前称为消息队列遥测传输。它是一种轻量级协议,使用最少的 CPU 资源,因此最适合构建小型、低功耗的聊天应用程序。 该协议的主要目标是从带宽的角度创建一个非常有效的协议。此外,它是非常省电的协议。由于所有这些原因,它适用于物联网。
该协议使用发布订阅者范式,而不像HTTP似的基于请求/响应范式。它使用二进制消息以较低的开销交换信息。它实施起来非常简单,而且是开放的。所有这些方面都有助于其在物联网中的广泛采用。另一个方面是MQTT可以使用TCP堆栈作为传输基板。
MQTT 消息传递架构通常基于发布/订阅模式。发布者和订阅者是分离的,这意味着他们不必建立直接连接,也不需要同时在线。Facebook 在其移动聊天应用程序中使用了 MQTT(更多信息Meta 的工程设计),以及 Instagram 的直接消息功能。
2 MQTT的特征
它的主要特征如下:
专为受限设备和低带宽,不可靠或不稳定的网络。用于许多M2M和物联网应用。MQTT是如何工作的?
使用基于主题的路由机制。
发布者向代理发送消息。
代理将消息传递给订阅的客户端。
每当消息发布到订阅者感兴趣的主题时,订阅者就会收到对应消息。
-
为什么要使用MQTT?
markdown轻巧高效。 可伸缩的。 可靠的。 安全。 易于使用。 开放标准协议。
-
MQTT的关键组件是什么?
markdown客户端:发布消息(发布者)或订阅消息(订阅者)的设备。 代理:从发布者接收消息并将其转发给订阅者的服务器。 主题:标识消息主题的字符串。 QoS级别:MQTT支持三种级别的QoS: 0、1和2。
-
MQTT如何处理安全性?
scss可以使用传输层安全性(TLS)来保护MQTT。 TLS是一种加密协议,提供客户机和服务器之间的安全通信。 当使用TLS时,代理要求发布者和订阅者在发送或接收消息之前对自己进行身份验证。
-
MQTT如何处理拥塞?
MQTT使用发布-订阅模型,这意味着消息只传递给感兴趣的订阅者。这有助于减少网络上的拥塞。 MQTT还支持消息确认,这允许代理跟踪哪些订阅者收到了消息。 这有助于确保消息不会多次传递给同一订阅者。
-
MQTT对物联网的好处:
markdown有效利用带宽。 低延时 可靠性高。 易于扩展。 安全。 开放标准协议。
-
MQTT在物联网中的用例:
scss远程监控。 数据收集和聚合。 设备管理。 无线(OTA)更新。
比如物联网的传感器用于采集房间的温度和湿度。传感器将此数据发布到MQTT代理。订阅温度和湿度主题的计算机从代理接收数据。然后计算机将数据显示在用户界面上。
3 MQTT的两个模式和优缺点
3.1 MQTT 消息模式对比
如前所述,MQTT 协议实现了发布订阅者范式。此范例将发布消息的客户端("发布者")解耦到接收消息的其他客户端("订阅者")。
此外,MQTT 是异步协议,这意味着它在等待消息时不会阻塞客户端。与HTTP协议相比,HTTP协议主要是一种同步协议。MQTT协议的另一个有趣的特性是它不需要客户端("订阅者")和发布者同时连接。
3.2 MQTT 发布者-订阅者模式
如上所述,MQTT 是一种基于消息的协议,它使用发布者-订阅者模式。MQTT 中的关键组件是 MQTT 代理。MQTT 代理的主要任务是向客户端("订阅者")发送消息。换句话说,它接收来自发布者的消息,并将这些消息分派给订阅者。
在调度消息时,MQTT 代理使用该主题来过滤将接收消息的客户端。主题是一个字符串,可以组合主题创建主题级别。
主题就像一个虚拟通道,将发布者连接到其订阅者。本主题由 MQTT 服务器管理。通过此虚拟通道,发布者与订阅者分离,客户端(发布者或订阅者)不必相互了解。
这使得该协议具有高度的可扩展性,而无需直接依赖消息生产者("发布者")和消息使用者("订阅者")。
3.3 MQTT的优点
可靠性
MQTT即使在连接不稳定的情况下也可以传输数据。它提供了三个服务质量 (QoS) 级别来支持这一点。
开放且易于使用
定义明确的标准文档是MQTT最大的资产之一。它为Java,Python,C++,JavaScript和其他编程语言提供了一组现成的库。
高性价比
该协议价格便宜且超级容易实现,这要归功于免费的可用文档。
3.4 MQTT的缺点
- 中心化代理的依赖
MQTT 依赖于中心化代理,这可能会限制可扩展性。 没有像 XMPP 那样为实时聊天构建提供那么多的即用型解决方案。
它提供了用于发送消息或事件的基本层,这也可能是一个优势,具体取决于业务的目标。
小结
这一节介绍MQTT的两个模式,下一节我们在物联网中应用MQTT协议,并了解其架构方式。