MQTT 设计轻量,因此可以在带宽非常低的网络中工作,允许可靠和不可靠网络中的节点之间进行通信。MQTT 遵循发布/订阅架构,这意味着有节点(代理)使信息可用,而其他节点(客户端)可以在订阅后通过访问相应的 URL 来读取可用信息。
MQTT 的一个用例是在智能工厂中,其中与生产工厂一起安装了温度
传感器。安装的传感器将连接到 MQTT 代理,并在传感器主题中发布数据,如下所示:
传感器/温度/装配线初始化
随后,多个类型和数量的 MQTT 客户端将订阅同一主题以读取温度数据。MQTT 架构的示例如图 1 所示。
MQTT 的发布/订阅架构。
图 1.MQTT的发布/订阅架构。图片由MQTT提供
此外,MQTT 根据可靠性定义了三个级别的服务质量,从到:
0级:不保证消息传送。
1级:有保证的送达,但有可能收到重复的消息。
2级:保证送达,不会出现重复。
超文本传输??协议 (HTTP)
该协议是万维网 (WWW) 数据通信的起源,因此从逻辑上讲,它正在物联网世界中使用。但是,由于以下原因,它并未针对此进行优化:
HTTP 是为两个系统同时相互通信而设计的,而不是更多,因此连接多个传感器来获取信息既费时又耗力。
HTTP 是单向的,用于一个系统(客户端)将一条消息发送到另一个系统(
服务器)。这使得升级物联网解决方案变得非常困难。
功耗:HTTP依赖于传输控制协议(TCP),需要大量的计算资源,因此不适合
电池供电的应用。
受限应用协议 (CoAP)
CoAP 是一种网络传输协议,适用于低带宽和低可用性的有限网络。它遵循客户端/服务器架构,构建方式与 HTTP 类似,支持 REST 模型:服务器通过 URL 提供资源,客户端可以发出 GET、POST、PUT 和 DELETE 类型的请求。
CoAP 通信链路是 1:1 且基于 UDP 的,因此无法保证交付。CoAP 适合在高度拥塞的网络中工作,这些网络中的节点没有太多智能,并且并不总是工作。
数据分发服务(DDS)
与 MQTT 类似,DDS 遵循发布-订阅方法,主要区别在于没有代理。这意味着所有发布者(即
温度传感器)和订阅者(??即
手机)都连接到同一网络。该网络被称为全局数据空间(GDS),它将每个节点与所有其他节点互连以避免瓶颈。DDS GDS 的示例如图 2 所示。
DDS 全局数据空间。
图 2.DDS全局数据空间。图片由 DDS 基金会提供
此外,任何节点都可以离开或加入网络,因为它们是动态发现的。
WebSocket
WebSocket技术与HTTP协议相联系,在浏览器和服务器之间建立TCP连接,然后两者交换信息直到连接关闭。图 3 显示了 HTTP 和 WebSocket 之间的比较。
HTTP 和 WebSocket 的比较。
图 3.HTTP和 WebSocket 之间的比较。图片由Scaleway提供
尽管该协议可以被视为对 HTTP 连接的改进,但 WebSocket 对于 IoT 应用程序来说仍然非常过载和沉重。
消息队列协议 (AMQP)
一开始,AMQP 初并不是为 IoT 应用程序创建的,而是为银行环境创建的。AMQP 接受发布/订阅架构以及请求/响应类型。它基于 TCP,因此保证了传送和确认,这使得该协议可靠,从而带来了消息可靠性的开销。
与 MQTT 相比,AMQP 提供两个服务质量级别:
多:发送方不会等到接收方确认后才删除消息。
至少:对于每条消息,发送者在删除消息之前都会收到接收者的确认。如果确认丢失,则重新发送消息。
恰好:消息仅发送。它需要发送者和接收者之间的特殊协调。
可扩展消息传递和状态协议 (XMPP)
它基于可扩展标记语言 (XML),过去称为Jabber。它是一种用于交换 XML 消息的开源、去中心化、安全的协议。
XMPP的一个特征因素是它的寻址方法和节点的识别方式。它使用格式为 jabberID@domain.com 的 Jabber ID,允许两个节点交换信息,无论它们之间的距离如何。
OPC统一架构(OPC UA)
它是为工业通信制定的标准,旨在保证制造商、操作系统和编程语言之间的互操作性。OPC 基金会称,许多工业供应商目前(截至 2022 年) 正在采用 OPC UA 作为开放标准。
总而言之,OPC UA 是一种与传输无关的协议,因此它支持以前使用的两种架构:请求/响应(例如 WebSocket 或 HTTP)以及发布/订阅(例如 MQTT)。