消息队列之MQTT

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布/订阅(Publish/Subscribe)模式的消息传输协议,最初由IBM于1999年开发,目前已经成为物联网(IoT)、车联网、工业互联网、智能家居、边缘计算、AI设备最广泛使用的通信协议之一。

随着AI Agent、机器人、智能穿戴、自动驾驶的发展,MQTT的重要性越来越高。例如:

  • ChatGPT智能硬件

  • 人形机器人

  • 无人机

  • 自动驾驶汽车

  • 工业PLC

  • 智能电表

  • 摄像头

  • AI眼镜

  • 智能穿戴设备

几乎都会使用MQTT。


一、为什么需要MQTT?

假设有100万个智能设备。

传统HTTP通信:

设备
 |
 | HTTP Request
 |
服务器

特点:

  • 每次建立TCP连接

  • Header很大

  • 请求-响应模式

  • 服务器压力大

  • 不能主动推送

例如:

设备每5秒上传一次温度

100万台设备

每秒:

200000 HTTP请求

服务器压力非常大。


MQTT则不同:

设备
    |
    | TCP长连接
    |
MQTT Broker

设备一直保持连接。

以后:

publish

publish

publish

不用重复建立连接。

所以:

网络流量降低90%以上。


MQTT适用于:

✓ 网络不好

例如:

4G

5G

NB-IoT

LoRa

卫星网络

甚至:

100KB/s

也可以工作。


二、MQTT特点

MQTT最大的特点:

① 极轻量

HTTP Header:

几百Byte

MQTT:

最小只有:

2 Byte

例如:

固定头:

00010000

仅2字节。


② 发布/订阅模型

不是:

客户端
   |
服务器

而是:

Publisher

↓

Broker

↓

Subscriber

例如:

温度传感器

Publish

topic:

factory/temp

Broker收到:

factory/temp

任何订阅:

factory/temp

的人都会收到。


③ 解耦

Publisher不知道:

谁接收

Subscriber不知道:

谁发送

中间全部由Broker负责。

所以:

非常容易扩展。


④ 长连接

一直保持:

TCP Connection

例如:

CONNECT

↓

CONNACK

↓

PINGREQ

↓

PINGRESP

↓

PUBLISH

不会频繁断开。


⑤ 双向通信

HTTP:

Client →

Server

MQTT:

Device ←→ Broker

Broker可以主动推送。

例如:

设备:

在线

↓

Broker:

立即发送:

升级命令

三、MQTT整体架构

                +----------------------+
                |   Application        |
                +----------------------+

          Publish           Subscribe

                 \          /

               MQTT Broker

         /         |         \

Sensor    Robot   APP   AI Agent

Broker就是整个系统核心。


四、MQTT核心角色

Publisher

发送消息。

例如:

机器人

上传位置

Publish

Subscriber

接收消息。

例如:

控制中心

订阅:

robot/location

收到:

机器人位置

Broker

MQTT服务器。

负责:

接收

存储

过滤

转发

所有消息。


五、Topic(主题)

MQTT没有URL。

而是:

Topic。

例如:

factory/temp

factory/humidity

robot/001/location

robot/001/camera

robot/002/status

Broker按照Topic转发。


Topic支持层级:

/

例如:

home

↓

home/livingroom

↓

home/livingroom/light

通配符

+

表示:

一层。

例如:

robot/+/status

可以收到:

robot/001/status

robot/002/status

robot/888/status

表示:

全部。

例如:

robot/#

收到:

robot/001/status

robot/001/location

robot/002/camera

六、MQTT数据流程

例如:

机器人上传坐标。

Robot

Publish

topic:

robot/001/location

↓

Broker

↓

AI平台

↓

地图系统

↓

监控系统

Publisher无需知道谁接收。


七、QoS(服务质量)

MQTT最大的特点之一。

有三个等级。


QoS 0

At most once

最多一次。

发送

结束

不确认。

可能丢。

适合:

GPS

温度

实时监控

因为:

下一秒还有数据。


QoS 1

至少一次

流程:

Publish

↓

PUBACK

如果没收到ACK:

重发

所以:

可能重复。

例如:

订单通知

报警

QoS 2

最高等级。

Exactly once

流程:

Publish

↓

PUBREC

↓

PUBREL

↓

PUBCOMP

四次握手。

绝不会重复。

适合:

支付

金融

设备控制

八、Retained Message(保留消息)

例如:

灯状态。

Light:

ON

Broker保存:

retain=true

以后:

新的Subscriber上线。

立即收到:

ON

不用等下一次发布。


九、Last Will(遗嘱消息)

设备异常断线:

Broker自动发布:

robot/001/offline

例如:

payload:

offline

监控平台立即知道:

机器人掉线。


十、Session(会话)

Clean Session:

true

断线:

所有订阅删除。


Persistent Session:

false

Broker保存:

订阅

离线消息

重新上线继续接收。

MQTT 5.0 中进一步演进为 Session Expiry Interval,可以设置会话过期时间,而不是简单的永久或立即删除。


十一、MQTT报文类型

MQTT 3.1.1 定义了 14 种控制报文:

报文作用
CONNECT建立连接
CONNACK连接确认
PUBLISH发布消息
PUBACKQoS1确认
PUBRECQoS2第一步
PUBRELQoS2第二步
PUBCOMPQoS2完成
SUBSCRIBE订阅
SUBACK订阅确认
UNSUBSCRIBE取消订阅
UNSUBACK取消确认
PINGREQ心跳请求
PINGRESP心跳响应
DISCONNECT主动断开

十二、MQTT Broker主流实现

Broker特点适用场景
EMQX高性能、高并发、支持集群,百万级连接企业物联网、AI设备平台
Eclipse Mosquitto轻量、易部署开发测试、小型项目
HiveMQ企业级、商业支持丰富金融、工业互联网
VerneMQErlang实现,支持分布式大规模IoT平台
RabbitMQ MQTT PluginRabbitMQ扩展协议已使用RabbitMQ生态的系统

十三、MQTT 与 Kafka、RabbitMQ 对比

对比项MQTTKafkaRabbitMQ
通信模式发布/订阅日志流队列+发布/订阅
面向对象IoT设备大数据流处理企业消息
是否长连接否(客户端按需拉取/消费)是(AMQP等协议)
消息持久化可选默认强持久化支持
吞吐量较高极高(百万级消息/秒)
延迟毫秒级毫秒~几十毫秒毫秒级
消费模型Broker主动推送Consumer主动拉取Broker推送
典型应用智能设备、机器人日志、实时数仓、事件流微服务、业务系统

经验法则:

  • MQTT:设备连接与设备控制。

  • Kafka:海量事件流、实时计算、数据平台。

  • RabbitMQ:业务消息、事务流程、异步解耦。


十四、MQTT 在 AI 数据平台中的应用

结合你关注的 AI 数据平台、机器人、动捕(Mocap)、Egocentric 智能穿戴设备,MQTT 非常适合作为边缘设备接入层

典型架构如下:

机器人 / Mocap设备 / AI眼镜 / 摄像头
              │
      MQTT Publish
              │
         MQTT Broker(EMQX)
              │
   ┌──────────┼──────────┐
   │          │          │
Kafka      实时控制    在线监控
   │
Flink
   │
Iceberg / Hudi / Delta Lake
   │
Feature Store
   │
模型训练 / AI Agent / RAG

例如:

  • 机器人通过 MQTT 上报位置、IMU、传感器状态。

  • EMQX 负责管理百万级设备连接。

  • Kafka 负责持久化和事件流转。

  • Flink 实时清洗、聚合、特征提取。

  • Iceberg/Hudi 存储训练数据。

  • Feature Store(如 Feast) 为在线推理提供特征。

  • AI Agent 或控制平台再通过 MQTT 向设备下发控制指令,实现双向通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值