什么事MQTT?
MQTT(Message Queuing Telemetry Transport)是机器对机器/物联网链接协议,是一种轻量级的发布/订阅消息传输协议,专为资源受限设备和低带宽、不可靠的网络环境设计。它特别适用于物联网(IoT)应用,广泛应用于传感器通信、远程监控、消息通知等场景。
MQTT的特点:
1、轻量级
1、MQTT对接协议简单容易实现,头部开销小(最小小只有2字节),1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。适合网络受限设备和低带宽设备。
2、低开销也就是意味着更少的网络资源消耗和更快的网络传输。
2、发布/订阅
消息传输协议
1、MQTT采用发布/订阅模式,客户端可以发布消息到某个主题(topic),也可以订阅一个或多个主题。
2、这种模式解耦了消息的生产者和消费者,提供了灵活的消息传递机制。
3、QoS支持
1、QoS 0:最多一次(At most once),消息发布完全依赖底层网络的能力。消息可能会丢失。
2、QoS 1:至少一次(At least once),确保消息到达,但可能会重复接收。
3、QoS 2:只有一次(Exactly once),确保消息到达且只到达一次,适合关键业务场景。
4、持久会话
1、MQTT支持持久会话,即使客户端断开连接,Broker也会保存客户端的订阅信息和未送达的消息。
2、这使得客户端可以在重新连接后接收到未读的消息。
5、遗嘱消息
客户端可以设置遗嘱消息,当客户端意外断开时,Broker会将遗嘱消息发布到指定的主题,通知其他客户端。
6、保留消息
客户端发布消息时可以设置为保留消息,Broker会将最后一条保留消息保存下来,新订阅该主题的客户端会立即收到该消息。
MQTT的工作原理
MQTT的核心组件包括客户端和Broker:
客户端:任何能够连接到Broker并发布或订阅消息的设备或应用程序。
Broker:中间人,负责接收、存储和分发消息到订阅了相关主题的客户端。
工作流程:
连接:客户端与Broker建立连接,可以设置连接参数,如用户名、密码、客户端ID、心跳间隔等。
发布:客户端发布消息到某个主题,Broker接收到消息后,根据订阅列表将消息转发给所有订阅该主题的客户端。
订阅:客户端订阅一个或多个主题,Broker会将这些主题的消息转发给该客户端。
断开连接:客户端主动或被动断开连接,Broker会处理遗嘱消息和持久会话等。
MQTT协议的优点
高效传输:由于协议头部开销小,适合低带宽网络,传输效率高。
实时性好:发布/订阅模式支持实时消息传递,适合实时监控和通知。
灵活性强:客户端可以随时发布和订阅不同主题,系统扩展性好。
可靠性高:通过不同的QoS级别,可以满足不同可靠性需求的消息传递。
适用场景
物联网设备通信:传感器数据采集、设备状态监控等。
移动消息推送:即时消息通知、报警信息推送等。
智能家居:家电控制、环境监测、安防报警等。
工业自动化:设备数据采集、远程控制、故障诊断等。