一、什么是MQTT?
MQTT的全称是 Message Queuing Telemetry Transport,是消息队列遥测传输。
它是一种极其轻量级、高效、基于发布/订阅模式的消息传输协议,专为低宽带、高延迟或不稳定的网络环境中连接的设备而设计。
二、核心概念与工作原理
MQTT协议的核心架构基于三个角色和两个动作。
- 发布者:发送消息的客户端。它只负责把消息发送到某个主题,不关心谁会收到。
- 订阅者:接收消息的客户端。它订阅一个或多个主题,只接收它订阅的主题消息。
- 代理:MQTT服务器。它是整个系统的中枢,负责接收所有消息,过滤它们,然后将消息路由给所有订阅相应主题的客户端。发布者和订阅者之间完全解耦,它们基本不知道对方的存在。
MQTT协议的两个动作。
- 发布:客户端向代理发送消息并指定一个主题。
- 订阅:客户端告诉代理:"我订阅了某个(或多个)主题的消息,一有消息就发给我。"
三、关键特性与优势
1.轻量高效
- 协议头很小(最小只有2字节),极大减少了网络传输负担。
- 消息内容可以是二进制,非常紧凑。适合传感器发送的微小数据包。
2.基于发布/订阅模式
- 空间解耦:发布者和订阅者不需要知道彼此的地址。
- 时间解耦:发布者和订阅者不需要同时运行。即使订阅者离线,代理也可以为其保留消息,待重新上线后发送(根据服务质量等级设置)。
3.支持多种服务质量
这是MQTT的一个核心强大功能,开发者根据不同场景在消息的可靠性和传输开销之间进行权衡。
- Qos 0 最多一次:消息发出即忘,不保证送达。适用于可以接受数据丢失的场景,如频繁的温度读数。
- Qos 1 至少一次:确保消息至少送达一次,但可能重复。接收方需要能处理重复消息。
- Qos 2 恰好一次:确保消息只送达一次。这是最可靠但也是最慢的方式,用于非常重要的指令,如支付、关键开关命令。
4.持久会话与遗言
- 持久会话:客户端可以要求代理保存其订阅消息和可能错过的消息(当Qos > 0时),避免每次重连都重新订阅和丢失消息。
- 遗言:客户端可以预先设置一条“遗言”。如果它异常断开连接,代理会自动将这条遗言消息发布到指定主题,通知其他设备该客户端离线了。
5.低功耗
- 由于轻量性和高效性,非常适合电池供电的设备,可以显著延长设备续航。
四、主要应用场景
MQTT几乎是为物联网量身定做的协议,其典型应用包括:
物联网与智能家居:传感器数据采集(温度、湿度)、智能灯、开关的控制。
即时聊天应用:虽然不常见,但其发布/订阅模式非常适合简单的聊天室功能。
工业物联网:监控远程设备、石油管道、风力发电厂等。
移动应用:手机App的推送通知(比HTTP更省电、省流量)。
车联网:车辆与云平台之间的数据通信。
4万+

被折叠的 条评论
为什么被折叠?



