物联网协议那么多,为什么 MQTT 最火?
·
物联网协议那么多,为什么 MQTT 最火?
智能家居、车联网、工业传感器——物联网设备动辄成千上万,还频繁掉线换网。它们之间怎么通信?答案几乎都是同一个协议:MQTT。它凭什么成为物联网的事实标准?核心就两个字:解耦。
一、传统 HTTP 模型在物联网的三重困境
物联网如果用 HTTP 的"请求-响应"模式,会遇到三个绕不开的麻烦:
- 耦合:客户端必须知道设备的 IP/端口,还得等它在线——可物联网设备成千上万、频繁掉线重启,没法维护"谁在线"的通讯录
- 方向单一:请求-响应是"拉"(你去问),但物联网大量场景是"推"(温度变了、门开了、告警触发,设备要主动上报)
- 扇出困难:一份温度数据要给监控大屏+历史数据库+告警引擎三拨人,HTTP 要么发三遍,要么架构臃肿
二、MQTT 的思路:发布/订阅
MQTT(消息队列遥测传输)1999 年由 IBM 为"带宽极小、链路极不可靠"的石油管道卫星监控设计,核心是发布/订阅模型:
- 发布者:把消息贴上"主题标签"(如
sensor/temp)发给 Broker,不知道谁在收 - Broker(代理):维护订阅表,按主题匹配投递
- 订阅者:先向 Broker 订阅主题,不知道谁在发
温度传感器 --发布"sensor/temp: 25.3°C"--> [Broker] --投递--> 监控大屏
└--> 告警引擎
发布者和订阅者只跟 Broker 打交道,只在"主题字符串"上达成共识——彻底解耦。
三、MQTT 还解决了什么?
- 极简轻量:报文头部最小仅 2 字节,适合窄带/低功耗(NB-IoT/LoRa)
- QoS 分级:0(最多一次)/1(至少一次)/2(恰好一次),按可靠性需求选
- 遗嘱消息:设备异常掉线,Broker 自动代发"我死了"通知
- 保留消息:新订阅者立刻拿到最新状态,不用等下次上报
- 主题通配符:
sensor/+/temp一次订阅一类设备
四、代码演示:Broker 的分发
class Broker:
def __init__(self):
self.subs = {} # topic -> [client]
def subscribe(self, topic, client):
self.subs.setdefault(topic, []).append(client)
def publish(self, topic, msg):
print(f"Broker: 主题[{topic}] -> 投递给 {self.subs.get(topic, [])}")
broker = Broker()
broker.subscribe("sensor/temp", "监控大屏")
broker.subscribe("sensor/temp", "告警引擎")
broker.publish("sensor/temp", "25.3°C")
print("发布者不知道谁在收, 订阅者不知道谁在发(解耦 ✓)")
运行输出:
Broker: 主题[sensor/temp] -> 投递给 ['监控大屏', '告警引擎']
发布者不知道谁在收, 订阅者不知道谁在发(解耦 ✓)
温度传感器只发了一条消息,Broker 精准投递给两个订阅者——新增一个订阅者不需要改传感器任何代码,这就是解耦的红利。
五、避坑清单
- MQTT ≠ TCP:MQTT 解决"消息该给谁",TCP 解决"网络怎么传"——两者是不同层,别混
- QoS 2 不是默认:大多数场景 QoS 1 够用,QoS 2 开销大且少设备支持
- 主题设计要分层:
sensor/{区域}/{设备}/{指标}比temp1/temp2可扩展性强得多 - Broker 是单点:生产环境要集群(EMQX/Mosquitto 都支持),否则 Broker 挂了全瘫
- 安全别裸奔:默认无认证,生产必须 TLS + 用户名密码/证书
六、想系统学物联网?
本文精选自 ima 知识号【Kruptos】《物联网IoT协议与架构详解》订阅库(第 035 期 MQTT 发布订阅模型、第 036 期主题设计与通配符、第 037 期 QoS 与消息可靠性等 100 期系统教程,从感知层、LPWAN、应用层协议到平台架构,每期配可运行 Python 代码)。
📚 完整系列 100 期 + 配套代码,已在 ima 知识号发布
本文只是系列的一个切片。完整系列(100 期系统教程 + 每期可运行代码)在 ima 知识号【Kruptos】持续更新中:
- 🗂 68+ 技术知识库:信号与系统、SDR 软件无线电、数字信号处理、操作系统、AI Agent、大模型微调……几乎覆盖全部软硬件技术栈
- 🧠 8 款 AI 技能:系列生产、知识库管理、CMMI 受管开发、自进化 Agent 等,已在 ima 技能广场上架,即装即用
- ✅ 全部免费订阅,后续更新自动推送
🔍 订阅方式:打开 ima(腾讯智能工作台)→ 搜索「Kruptos」→ 一键订阅。或在 ima 内直接搜索《物联网IoT协议与架构详解》等知识库名称。
💬 你用 MQTT 做过物联网项目吗?踩过哪些坑?评论区聊聊——想看 QoS 细节还是 MQTT 5.0,点赞高的安排。
作者:Kruptos(西电毕业,13 年无线通信/DSP/嵌入式科研)|原创内容,转载注明出处
更多推荐


所有评论(0)