畅联云平台丨MQTT系列(一):协议核心机制详解

2026年8月12日
畅联云平台丨MQTT系列(一):协议核心机制详解

MQTT 协议核心机制详解:发布订阅、Topic 与 QoS

本文是「美畅物联」MQTT 5.0 系列文章的第一篇。本系列将从协议基础到平台实践,系统分享我们的技术经验。

前言

物联网平台的核心挑战之一,是在低带宽、高延迟、不稳定的网络环境下,实现海量设备与云端之间可靠、高效的消息通信。MQTT  协议凭借其轻量级、发布/订阅模式和 QoS 保障机制,已成为物联网领域事实上的标准通信协议。

畅云云平台在选型之初对比了 HTTP  轮询、WebSocket、CoAP 和 MQTT 四种方案,最终选择 MQTT 作为核心通信协议,主要基于以下几点考量:

  • 协议轻量,固定头部仅 2 字节,适合资源受限的物联网设备
  • 发布/订阅模式天然解耦设备与云端,支持灵活的消息路由
  • 三级 QoS 保障机制,适应不同可靠性要求的业务场景
  • 完善的生态支持,主流语言均有成熟客户端库

本文将从 MQTT 协议最核心的三个机制讲起:发布/订阅模型、Topic 主题与通配符、QoS 服务质量等级。


一、发布/订阅模型

MQTT 采用发布/订阅(Publish/Subscribe)模式,设备与设备之间不直接通信,而是通过 Broker(消息代理)作为中间节点进行消息路由。核心角色包括:

  • 发布者(Publisher):向特定主题(Topic)发布消息的一方,通常是设备或应用服务
  • 订阅者(Subscriber):订阅特定主题、接收消息的一方,可以是设备或后端服务
  • Broker(代理):负责接收发布者的消息,并根据订阅关系将消息分发给匹配的订阅者

这种解耦模式带来三个关键优势:

1. 空间解耦

发布者和订阅者不需要知道彼此的网络地址,只需通过 Topic 关联。在平台中,一个温度传感器只需发布到 factory/workshop1/deviceA/temperature,无需知道谁在消费这个数据——可能是实时大屏 、可能是告警引擎、也可能是一台执行器。

2. 时间解耦

发布者发送消息时,订阅者不一定在线。Broker 可通过 QoS 和会话保持机制缓存消息,等订阅者上线后再投递。这在物联网场景中至关重要——设备经常因网络波动而短暂离线。

3. 同步解耦

发布者发送消息后无需等待订阅者处理,可以立即继续后续操作。一个传感器每秒上报 10 条数据,完全不用等待后端处理完毕。

二、Topic 主题与通配符

Topic 是 MQTT 消息路由的核心标识,采用层级化的字符串表示,用 / 分隔。这种设计类 似于文件系统路径,天然支持层级化的数据组织。

2.1 命名示例

factory/workshop1/deviceA/temperature
factory/workshop1/deviceA/humidity
factory/workshop1/deviceB/temperature
factory/workshop2/deviceA/status

2.2 通配符机制

MQTT 支持两种通配符,但只能出现在订阅端,发布者不能使用通配符:

平台的 Topic 设计实践

我们采用 {租户ID}/{产品类型}/{设备ID}/{功能类型}/{数据维度} 的命名规范,例如:

tenant001/thermostat/devA001/property/temperature
tenant001/thermostat/devA001/event/overheat_alarm
tenant001/thermostat/devA001/command/set_threshold

这种设计的好处是:

  • 第一层做租户隔离,配合 ACL 实现租户间数据隔离
  • 层级从粗到细,方便通配符订阅
  • 功能类型清晰区分属性上报、事件告警、指令下发

三、QoS 服务质量等级

QoS(Quality of Service)是 MQTT 消息可靠性的核心保障机制,定义了三个等级。在平台的实际业务中,三种 QoS 都有明确的使用场景。

QoS 0 — 最多一次(At most once)

消息最多被发送一次,不保证到达。

  • 发送方 PUBLISH 消息后即完成,不等待任何确认
  • 消息可能丢失,但不会重复
  • 适用场景:温湿度传感器周期性上报,单条丢失可接受,下一周期会补上

QoS 1 — 至少一次(At least once)

消息保证至少到达一次,但可能重复。这是物联网中最常用的 QoS 等级。

  • 发送方发送 PUBLISH 后等待接收方返回 PUBACK
  • 若超时未收到 PUBACK,发送方会重发
  • 接收方可能收到重复消息,业务侧需做幂等处理
  • 适用场景:告警事件上报,必须送达,偶发重复不影响业务

QoS 2 — 恰好一次(Exactly once)

消息保证只到达一次,不丢失也不重复,通过四次握手实现:

发送方                        接收方
  │  PUBLISH (Packet ID)  →     │
  │  ←   PUBREC               │
  │  PUBREL                 →    │
  │  ←   PUBCOMP               │
  • QoS 2 开销最大(4 次报文交互)
  • 适用场景:控制指令下发,重复执行可能导致设备异常

QoS 选型建议

在平台中,约 80% 的消息使用 QoS 1(遥测和告警),约 15% 使用 QoS 0(高频低价值数据),仅约 5% 的关键控制指令使用 QoS 2。

小结

本文介绍了 MQTT 协议的三大核心机制:发布/订阅模型实现了通信解耦,Topic 与通配符提供了灵活的消息路由能力,QoS 等级保障了不同场景下的消息可靠性。

下一篇,我们将深入 MQTT 5.0 的关键新特性,包括原因码、会话过期间隔、主题别名和消息过期间隔,看看这些新特性如何解决 MQTT 3.1.1 在物联网平台实践中的痛点。

美畅美畅物联畅联畅联云平台视频监控云平台云视频监控视频云平台视频开放平台视频感知云视频接入网关AIoT综合接入网关视频中台物联网中台视频上云网关EhomeI连锁行业智慧交通AI算法