**QoS 0:**此级别提供“最多一次”传递,消息在未经确认的情况下发送,可能会丢失。这是最低级别的QoS,通常用于消息丢失可接受或消息不重要的情况。例如,QoS 0可能适用于发送偶尔的数据丢失不会显著影响总体结果的传感器数据。
**QoS 1:**该级别提供“至少一次”传递,在这种传递中,消息得到确认,并在必要时重新发送。对于QoS 1,发布者向代理发送消息,并在继续之前等待确认。如果代理在设定的时间内没有响应,发布者将重新发送消息。这种QoS级别通常用于消息丢失是不可接受的,但消息重复是可以容忍的情况。例如,QoS 1可能适用于向设备发送命令消息,其中错过的命令可能会产生严重后果,但重复的命令不会。
**QoS 2:**该级别提供“精确一次”传递,在这种传递中,消息被确认并重新发送,直到订户接收到它们精确一次。QoS 2是最高级别的QoS,通常用于消息丢失或重复是完全不可接受的情况。对于QoS 2,发布者和代理参与两步确认过程,其中代理存储消息,直到订户接收并确认消息为止。这种QoS级别通常用于诸如金融交易或紧急警报之类的关键消息。
需要注意的是,更高的QoS级别通常需要更多的资源,并可能导致延迟和网络流量增加。因此,根据应用程序的特定需求选择适当的QoS级别非常重要。
6.用于可靠物联网通信的MQTT消息持久性(Persistence)
消息持久性是MQTT中的一个重要特性。它确保在发生网络或服务器故障时不会丢失消息。在MQTT中,消息持久性是通过将消息存储在服务器上直到将消息传递给订阅者来实现的。
MQTT提供了三种类型的消息持久性选项:
**非持久性(Non-persistent):**这是MQTT中的默认选项。在这种模式下,消息不会存储在服务器上,如果服务器或网络出现故障,消息就会丢失。此模式适用于消息不重要且可以轻松重新生成的情况。
**排队持久(Queued persistent):**在这种模式下,消息存储在服务器上,直到它们被传递到订阅服务器。如果订阅服务器不可用,消息将排队等待,直到订阅服务器重新连接。当订阅服务器并不总是连接到网络时,或者如果订阅服务器需要接收所有消息,即使这些消息是在订阅服务器脱机时发送的,排队持久性也很有用。
**带有确认的持久性(Persistent with acknowledgment):**此模式提供最高级别的消息持久性。在这种模式下,消息被存储在服务器上,直到它们被传递给订户,并且订户必须确认接收到消息。如果订户没有确认接收,则重新发送消息,直到订户确认接收为止。当确保消息由订户接收和处理至关重要时,此模式非常有用。
要在MQTT中配置消息持久性,用于处理MQTT连接的代理软件必须支持所选的持久性选项。配置可以通过代理的配置文件或其web界面来完成。
7.保护您的物联网设备免受网络攻击
在安全性方面,MQTT支持TLS加密,以实现客户端和服务器之间的安全通信。有几种策略可以确保MQTT部署的安全,例如加密通信、实现强身份验证和访问控制等。
Conclusion
You now know about MQTT as a lightweight and efficient protocol that has become a popular choice for IoT and M2M applications. With its simple publish/subscribe messaging model, it allows for flexible communication between devices and systems. MQTT’s history shows its evolution from IBM’s need for a reliable messaging protocol to a widely adopted standard that is now maintained by OASIS. We’ve covered MQTT’s features and characteristics, including its QoS levels and security considerations, and explored real-world applications where MQTT is used.
二:MQTT Publish/Subscribe Architecture (Pub/Sub)
1.Publish/Subscribe (Pub/Sub) Architecture
Pub/Sub体系结构,也称为Pub/Sub,是软件体系结构中的一种消息传递模式。它能够以解耦的方式实现不同组件或系统之间的通信。在这个体系结构中,有生成消息的发布者,也有接收这些消息的订阅者。然而,发布-订阅是一个更广泛的概念,可以使用各种协议或技术来实现。
MQTT is one such specific messaging protocol that follows the publish-subscribe architecture. MQTT uses a broker-based model where clients connect to a broker, and messages are published to topics. Subscribers can then subscribe to specific topics and receive the published messages.