MQTT简介
2026/1/15大约 3 分钟
MQTT简介
什么是MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅模式的轻量级消息传输协议,由 IBM 于 1999 年发明,最初用于石油管道的卫星通信。
MQTT 协议构建于 TCP/IP 协议之上,专为以下场景设计:
- 低带宽、高延迟或不可靠的网络环境
- 资源受限的嵌入式设备
- 需要实时通信的物联网应用
核心特点
1. 轻量级
MQTT 协议头最小只有 2 字节,相比 HTTP 协议大大减少了网络开销:
| 协议 | 最小头部大小 | 适用场景 |
|---|---|---|
| MQTT | 2 字节 | 物联网、嵌入式设备 |
| HTTP | 约 100+ 字节 | Web 应用 |
| CoAP | 4 字节 | 受限网络 |
2. 发布/订阅模式
MQTT 采用发布/订阅(Pub/Sub)模式,实现了消息发送者和接收者的解耦:
3. QoS 服务质量
MQTT 提供三种消息传递质量等级:
- QoS 0:至多一次(At most once)- 消息可能丢失
- QoS 1:至少一次(At least once)- 消息可能重复
- QoS 2:恰好一次(Exactly once)- 消息不丢失不重复
4. 遗嘱消息
客户端可以设置遗嘱消息(Last Will),当客户端异常断开时,Broker 会自动发布该消息,用于通知其他订阅者。
5. 保留消息
Broker 可以保留每个主题的最后一条消息,新订阅者连接后会立即收到该消息。
MQTT 版本
| 版本 | 发布时间 | 主要特性 |
|---|---|---|
| MQTT 3.1 | 2010 | 首个公开版本 |
| MQTT 3.1.1 | 2014 | OASIS 标准,修复 3.1 问题 |
| MQTT 5.0 | 2019 | 增加原因码、共享订阅、消息过期等 |
协议架构
核心概念
Broker(消息代理)
Broker 是 MQTT 的核心组件,负责:
- 接收客户端连接
- 接收发布的消息
- 处理订阅和取消订阅请求
- 将消息转发给匹配的订阅者
常见的 MQTT Broker:
- EMQX:国产开源,功能强大,支持集群
- Mosquitto:Eclipse 基金会开源项目,轻量级
- HiveMQ:企业级商业方案
- VerneMQ:Erlang 实现,高性能
Client(客户端)
任何连接到 Broker 的设备都是客户端,可以是:
- 发布者(Publisher):发送消息
- 订阅者(Subscriber):接收消息
- 同时具备发布和订阅能力
Topic(主题)
主题是消息的路由地址,采用层级结构:
home/living-room/temperature
home/bedroom/humidity
sensor/+/status # + 匹配单层
sensor/# # # 匹配多层应用场景
1. 物联网(IoT)
2. 智能家居
3. 车联网
- 车辆状态上报
- 远程控制指令
- OTA 升级通知
4. 即时通讯
- 消息推送
- 在线状态同步
- 群组消息
与其他协议对比
| 特性 | MQTT | HTTP | WebSocket | CoAP |
|---|---|---|---|---|
| 传输层 | TCP | TCP | TCP | UDP |
| 消息模式 | 发布/订阅 | 请求/响应 | 双向 | 请求/响应 |
| 头部开销 | 小(2字节起) | 大 | 中 | 小(4字节) |
| QoS | 支持 | 不支持 | 不支持 | 支持 |
| 适用场景 | 物联网 | Web | 实时Web | 受限网络 |
面试题预览
常见面试题
- MQTT 和 HTTP 有什么区别?为什么物联网场景更适合用 MQTT?
- 简述 MQTT 的发布/订阅模式的优缺点
- MQTT 的三种 QoS 等级分别适用于什么场景?
小结
MQTT 是物联网领域最流行的消息协议,具有轻量级、低功耗、可靠传输等特点。理解 MQTT 的核心概念(Broker、Client、Topic、QoS)是学习的基础,后续章节将深入讲解各个知识点。
