首页/网络/工控与物联网速查/MQTT发布订阅模型与角色划分
物联网协议60 条

MQTT发布订阅模型与角色划分

MQTT 用发布订阅模型把消息生产者和消费者彻底解耦:客户端只与代理建立连接,按主题发布与订阅,由代理负责匹配与转发。理解空间、时间与同步三种解耦,是理解 MQTT 其余特性的前提。

工控与物联网速查网络更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌‌​‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​​‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌​‌‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

三向解耦

MQTT 是客户端、代理、客户端组成的三方结构:发布者把消息发到某个主题,订阅者提前声明关心哪些主题,由代理完成匹配与转发。这样换来三种解耦——空间上双方不需要知道对方地址,时间上不需要同时在线,同步上发布者发完即可继续、不必等待处理结果。代价是代理成为必须高可用的中间节点。

基本信息

角色划分发布者、订阅者、客户端、代理(服务端)
寻址方式主题,按斜杠分层的 UTF-8 字符串
消息语义一对多、多对多,一条消息可被多个订阅者收到
连接方式TCP 长连接,也可承载于 TLS 或 WebSocket 之上
与请求响应的差别默认没有响应语义,需要时用响应主题与关联数据自行实现

与其他模型对照

维度发布订阅请求响应
耦合度发布者不知道订阅者是谁、有几个调用方必须知道服务地址与接口
在线要求双方可异步在线,代理可缓存会话请求时双方必须同时可用
扩展方式增加订阅者不影响发布者增加消费者需要服务发现与负载均衡
故障影响代理不可用则全链路中断单个服务不可用只影响其调用方
实时性代理转发即可送达,天然适合推送依赖轮询或长连接升级

典型使用场景

  • 设备遥测上云:大量设备向各自主题发布数据,平台按通配符订阅汇聚
  • 指令下发:平台向设备指令主题发布,设备只需订阅自己的主题
  • 多消费者共享数据:监控大屏、告警引擎、存储服务同时订阅,互不影响
  • 弱网与移动网络:长连接加心跳,避免反复建连的开销
代理是单点,生产环境需要按连接数、吞吐与可用性要求做集群或桥接。不同集群实现对持久会话、共享订阅的支持程度差别很大,选型前要确认。
发布订阅默认没有端到端确认:发布者无法判断设备是否真的收到并执行。关键指令要结合应答主题或平台侧状态回执一起设计。

易错点

  • 把发布订阅当作请求响应使用:等不到返回值就判定指令失败,实际是模型不匹配
  • 代理单点部署:一次代理重启导致全部设备同时掉线
  • 发布者默认只有一个订阅者:新增消费者时消息语义被无意改变
  • 没有背压设计:订阅者处理不过来时消息在服务端堆积,最终触发丢弃或断连

数据来源与参考

  • OASIS MQTT Version 3.1.1 规范
  • OASIS MQTT Version 5.0 规范
  • MQTT 官方站点 mqtt.org 规范索引

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/ics/mqtt-publish-subscribe-model.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌‌​‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​​‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌​‌‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​