MQTT:基础知识(一)
MQTT 是什么
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级、基于发布 / 订阅(Pub/Sub)模式的应用层网络协议,专为低带宽、高延迟、不稳定的网络环境(如物联网、嵌入式设备)设计。
MQTT 的特点,如下:
- 轻量:协议头最小仅 2 字节,客户端代码体积小
- 低功耗:采用长连接 + 心跳机制,减少频繁建立连接的资源消耗
- 可靠:支持消息质量等级(QoS),保证不同场景下的消息传输可靠性
- 灵活:支持一对多、多对多通信
凡是"设备多、带宽小、网络不稳定、低功耗、实时上报/下发、一对多通信“的地方,几乎都可以用到 MQTT。
对比 RabbitMQ
对比 MQTT 和 RabbitMQ 的核心差异,可以从设计定位、核心特性、适用场景三个维度进行说明。
设计定位
MQTT 是轻量级物联网通信协议,专为海量轻量级设备设计,核心是设备端和云端双向通信的实时消息传输。RabbitMQ 是通用型消息中间件,基于 AMQP 协议,专为服务器和应用层的高可靠、复杂消息路由设计,核心是系统间的业务消息解耦。
- MQTT:设备端与云端双向通信的实时传输
- RabbitMQ:系统间的业务解耦
核心特性
| 特性 | MQTT | RabbitMQ |
|---|---|---|
| 通信模式 | 单一:只有发布/订阅一种核心模式 | 丰富:除了发布/订阅,还支持点对点(P2P)、请求-响应、延迟队列等 |
| 连接能力 | 海量轻型:单台服务器可支撑 100 万 + 设备长连接,每个连接仅占用几 KB 内存 | 少量重型:单台服务器支撑万级~十万级连接(服务器端应用),每个连接占用内存 MB 级 |
| 可靠性 | 基础:通过 QoS 0/1/2 保证消息传输可靠性,仅覆盖 “消息是否送达” 的基础需求 | 极致:提供消息持久化、生产者确认、消费者确认、死信队列、事务等全套可靠性机制 |
适用场景
不同的特性适用不同的场景,MQTT 适用于涉及硬件设备、低功耗/低带宽、数据上报/指令下发、无需复杂消息路由的应用场景,而 RabbitMQ 适用于纯服务器/应用层通信、复杂消息分发规则、可靠性要求高的应用场景。
结合 LLM
MQTT 是 LLM 与物理世界连接的桥梁,沟通过流程如下:
flowchart LR
id1([设备数据]) --> id2(MQTT) --> id3([LLM 理解意图])
id4(LLM 生成指令) --> id2 --> id5(控制设备)
MQTT 在 LLM 体系中的作用:
- (感知) LLM 提供感知能力:传感器、智能设备、机器人、车载终端等,通过 MQTT 轻量上报状态与数据,通过 MQTT 上传到云端,成为 LLM 的输入信息
- (控制)让 LLM 具备控制现实世界的能力:LLM 理解用户意图后生成指令,通过 MQTT 下发到设备,设备订阅主题并执行
- (依赖)适配 LLM + 物联网的弱网、低功耗场景:边缘端设备性能受限、弱网络条件
MQTT 主要用来让 LLM 跟现实世界打通。设备通过 MQTT 把状态、语音、传感器数据传给 LLM,LLM 理解意图后,再通过 MQTT 下发控制指令到设备。它轻量、稳定、适合弱网和海量设备,是 LLM 实现感知和控制物理世界的关键通信协议。