MQTT 协议快速入门
1.什么是MQTT——轻量级、基于发布-订阅模式的消息传输协议
MQTT是物联网中广受欢迎的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境来实现传感器、执行器和其他设备之间的高效通信。
简单举个例子:
- 发布者:发送消息的设备或服务(如:温度传感器)。
- 订阅者:接收消息的设备或服务(如:手机App、云端服务器)。
- 代理:核心中枢,负责接收所有消息,并根据“主题”过滤并分发给对应的订阅者。
2.为什么MQTT在物联网广受欢迎?
- 轻量级:MQTT开销低、报文小的特点,使我们物联网设备既消耗较少的资源,又实现高效的通信。
- 可靠:MQTT支持多种QoS等级、会话感知和持久连接,即使在困难的条件(高延迟、不稳定)下也能保证消息的可靠传递。
- 安全通信:MQTT提供传输层安全(TLS)和安全套接层(SSL)加密功能。此外,还通过用户名/密码凭证或客户端证书提供身份验证和授权机制保护网络及其资源的访问。
- 双向通信:MQTT的发布-订阅模式为设备之前提供了无缝的双向通信方式,客户端既可以向主题发布消息,也可以订阅接收特定主题上的消息,从而实现数据交换。
- 连续、有状态的会话:MQTT 提供客户端与 Broker 之间保持有状态会话的能力,这使得系统即使在断开连接后也能记住订阅和未传递的消息。此外,客户端还可以在建立连接时指定一个保活间隔(类似于tcp的keep alive),这会促使 Broker 定期检查连接状态。如果连接中断,Broker 会储存未传递的消息(根据 QoS 级别确定),并在客户端重新连接时尝试传递它们。
- 大规模物联网设备支持
- 语言支持
3.MQTT工作原理
- MQTT 客户端
任何运行 MQTT 客户端库的应用或设备都是 MQTT 客户端。例如,使用 MQTT 的即时通讯应用是客户端,使用 MQTT 上报数据的各种传感器是客户端,各种 MQTT 测试工具也是客户端。
- MQTT Broker
MQTT Broker 是负责处理客户端请求的关键组件,包括建立连接、断开连接、订阅和取消订阅等操作,同时还负责消息的转发。一个高效强大的 MQTT Broker 能够轻松应对海量连接和百万级消息吞吐量,从而帮助物联网服务提供商专注于业务发展,快速构建可靠的 MQTT 应用。
- 发布-订阅模式
发布-订阅模式与客户端-服务器模式的不同之处在于,它将发送消息的客户端(发布者)和接收消息的客户端(订阅者)进行了解耦。发布者和订阅者之间无需建立直接连接,而是通过 MQTT Broker 来负责消息的路由和分发。
- 主题
MQTT 协议根据主题来转发消息。主题通过/来区分层级,类似于 URL 路径,例如:
chat/room/1 sensor/10/temperature sensor/+/temperatureMQTT 主题支持以下两种通配符:+和#。
+:表示单层通配符,例如a/+匹配a/x或a/y。
#:表示多层通配符,例如a/#匹配a/x、a/b/c/d。
注意:通配符主题只能用于订阅,不能用于发布。
- QoS
MQTT 提供了三种服务质量(QoS),在不同网络环境下保证消息的可靠性。
QoS 0:消息最多传送一次。如果当前客户端不可用,它将丢失这条消息。
QoS 1:消息至少传送一次。
QoS 2:消息只传送一次。