MQTT Broker存在的必要性
为什么需要 MQTT Broker直接通信不行吗这是一个非常好的架构设计问题让我用对比分析的方式帮你理解中间件的价值。一、假设没有 Broker直接通信会怎样1.1 方案对比方案 A直接通信Client-to-Client ┌─────────────────────┐ ┌─────────────────────┐ │ 远程驾驶控制节点 │ ◄────────────────► │ 视频推流节点 │ │ (Publisher) │ │ (Subscriber) │ └─────────────────────┘ └─────────────────────┘ 需要知道对方的 IP 地址和端口 需要处理连接管理、断线重连 需要定义通信协议方案 B通过 Broker 通信 ┌─────────────────────┐ ┌──────────────┐ ┌─────────────────────┐ │ 远程驾驶控制节点 │ ──► │ MQTT Broker │ ──► │ 视频推流节点 │ │ (Publisher) │ │ │ │ (Subscriber) │ └─────────────────────┘ └──────────────┘ └─────────────────────┘ 只需要知道 Broker 地址 消息路由中心 不需要知道对方存在1.2 直接通信的问题问题说明点对点耦合控制节点必须知道视频节点的 IP/端口一个节点变更影响另一个无法扩展如果需要增加状态监控节点也想接收视频状态必须修改控制节点代码断线处理复杂需要自己实现心跳检测、断线重连、消息缓存协议定义需要自己定义消息格式、序列化/反序列化广播困难一条指令要发送给多个节点时需要维护多个连接二、Broker 的核心价值解耦2.1 什么是解耦没有解耦 (耦合): 控制节点 ──► 必须知道 ──► 视频节点的 IP/端口 │ │ │ 视频节点挂了 │ 视频节点换IP了 ▼ ▼ 控制节点必须处理 控制节点必须重新配置 有解耦 (通过 Broker): 控制节点 ──► 只知道 ──► Broker 地址 │ │ │ 视频节点挂了 │ 视频节点换IP了 ▼ ▼ 控制节点无感知 控制节点无感知2.2 实际场景远程驾驶系统假设系统中有以下节点① 远程驾驶控制节点发送 start/stop 指令② 视频推流节点接收指令推流到 RTSP③ 状态监控节点接收推流状态展示给运维④ 故障诊断节点接收异常告警记录日志如果没有 Broker控制节点 ── 指令 ──► 视频节点 控制节点 ── 指令 ──► 视频节点 (要维护连接) 视频节点 ── 状态 ──► 状态监控节点 视频节点 ── 状态 ──► 故障诊断节点 (要维护连接) 视频节点 ── 告警 ──► 故障诊断节点 视频节点 ── 告警 ──► 状态监控节点 (要维护连接) 每个节点都要知道其他所有节点的存在 新增节点时所有相关节点都要修改代码有了 Broker控制节点 ── 发布 /video_stream/cmd ──► Broker 视频节点 ── 订阅 /video_stream/cmd ◄── Broker 视频节点 ── 发布 /stream_status ──► Broker 状态监控 ── 订阅 /stream_status ◄── Broker 故障诊断 ── 订阅 /stream_status ◄── Broker 故障诊断 ── 订阅 /abnormal_status ◄── Broker 每个节点只关心自己的 Topic互不干扰三、类比理解快递系统场景没有 Broker有 Broker比喻你亲自把快递送到每个收件人通过快递公司中转发送方需要知道每个收件人的地址只需要知道快递公司地址接收方需要认识每个发件人只需要关注自己的收件箱新增收件人通知所有发件人发件人无感知失败处理亲自处理重发快递公司保证送达四、MQTT Broker 提供的核心能力4.1 消息路由Publisher 发布到 Topic A │ ▼ Broker 查找订阅了 A 的所有 Subscribers │ ▼ 转发给所有订阅者4.2 消息持久化// 代码中的设置connOpts.set_clean_session(false);// 持久会话作用: 如果视频节点暂时断线Broker 会保留消息节点重连后自动补发。4.3 QoS 保障mqtt_client_-subscribe(/video_stream/cmd,1);// QoS 1QoS 级别说明0最多一次Fire and Forget1至少一次确保送达适合控制指令2恰好一次保证只送达一次4.4 过滤匹配// 支持通配符subscribe(/vehicle//video_stream/#,1)// 可以匹配:// /vehicle/VIN001/video_stream/status// /vehicle/VIN002/video_stream/status// /vehicle/VIN001/video_stream/cmd五、对比其他通信方案方案优点缺点适用场景MQTT轻量、Pub/Sub、QoS、持久化需要部署 Broker物联网、远程驾驶、消息型数据ROS2 Topic实时性好、同机器高效仅限同机器、不跨语言机器人内部节点通信HTTP REST通用、标准化同步阻塞、无推送Web API、配置下发gRPC高性能、强类型复杂、无原生 Pub/Sub微服务间通信直接 TCP灵活需要自己实现协议定制化场景六、总结问题答案能直接通信吗技术上可以但会导致强耦合为什么用 Broker解耦、可扩展、可靠传输Broker 的成本需要额外部署一个服务Mosquitto/EMQX带来的收益新增节点无需修改现有代码、断线自动恢复、多播天然支持一句话总结Broker 是消息邮局让每个节点只需关心往哪发和收什么而不需要关心谁收和谁发。这种设计是大型分布式系统的基础模式。

相关新闻

Logisim-evolution时序仿真完整指南:掌握数字电路设计的5个关键技巧

Logisim-evolution时序仿真完整指南:掌握数字电路设计的5个关键技巧

Logisim-evolution时序仿真完整指南:掌握数字电路设计的5个关键技巧 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution Logisim-evolution是一款强大的数字逻辑电…

2026/9/23 14:06:51 阅读更多 →
国内知名的企业级 Agent 智能体厂商有哪些?2026年主流厂商盘点与技术选型深度解析

国内知名的企业级 Agent 智能体厂商有哪些?2026年主流厂商盘点与技术选型深度解析

2026年被公认为智能体(AI Agent)规模化落地的元年。根据行业公开信息显示,预计今年国内市场规模将突破130亿元人民币,同比增速超过70%。随着《人工智能 智能体互联》等7项国家标准在7月底正式发布,行业正从早期的“单点…

2026/9/21 20:56:01 阅读更多 →
如何高效管理小红书收藏:3种简单方法实现内容永久保存

如何高效管理小红书收藏:3种简单方法实现内容永久保存

如何高效管理小红书收藏:3种简单方法实现内容永久保存 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接&…

2026/9/22 9:41:04 阅读更多 →

最新新闻

3分钟搞定中文文言文转换器:图解原理与源码避坑指南

3分钟搞定中文文言文转换器:图解原理与源码避坑指南

3分钟搞定中文文言文转换器:图解原理与源码避坑指南 刚把项目里的 zhcn2en 库从 1.0 升到 2.0,直接炸了。报错信息长得像天书, AttributeError: module 'zhon' has no attribute…

2026/9/23 18:11:26 阅读更多 →
Javaweb酒店客房管理系统课设:源码+数据库跑通与避坑指南

Javaweb酒店客房管理系统课设:源码+数据库跑通与避坑指南

简介:这份资源是面向高校计算机相关专业学生的Javaweb课程设计完整项目,以酒店客房管理系统为主题,适合作为期末大作业或课程设计参考,下载后无需修改即可运行,属于高分必过级别的实战案例。压缩包共73个文件&#xff…

2026/9/23 18:11:26 阅读更多 →
田字笔顺开发避坑指南:保姆级教程解析Python与Rust实现差异

田字笔顺开发避坑指南:保姆级教程解析Python与Rust实现差异

田字笔顺开发避坑指南:保姆级教程解析Python与Rust实现差异 官方文档翻了三遍,核心逻辑还是没跑通?别急,这篇保姆级教程直接切入要害,带你用代码拆解田字笔顺算法的底层逻辑。很多开发者卡在“笔顺数据结构”和“渲染时序”上,其实问题往往出…

2026/9/23 18:11:25 阅读更多 →
Dubbo与Zookeeper深度解析:注册中心原理、集群选举与生产调优

Dubbo与Zookeeper深度解析:注册中心原理、集群选举与生产调优

微服务架构在国内的落地实践中,Dubbo 和 Zookeeper 这对组合几乎是绕不开的经典搭配。虽然近些年 Nacos、Consul 这些后起之秀在服务注册与发现领域抢了不少风头,但如果你手上维护的是一套有一定历史沉淀的分布式系统,或者你正在准备面试中那…

2026/9/23 18:11:25 阅读更多 →
垃圾分类图像分类实战:从数据清洗到模型部署全流程

垃圾分类图像分类实战:从数据清洗到模型部署全流程

简介:一份面向图像分类入门与垃圾分类实战的完整项目资源,基于TensorFlow与OpenCV,适合希望自主搭建神经网络模型并完成数据训练与预测的开发者。项目以干垃圾、湿垃圾、可回收垃圾、有害垃圾四分类为任务,覆盖数据集制作、模型构…

2026/9/23 18:11:25 阅读更多 →
vCluster 项目中的 camelcase 包:Go 语言 CamelCase 分词规则、源码剖析与 Kubernetes 实践应用

vCluster 项目中的 camelcase 包:Go 语言 CamelCase 分词规则、源码剖析与 Kubernetes 实践应用

vCluster 项目中的 camelcase 包:Go 语言 CamelCase 分词规则、源码剖析与 Kubernetes 实践应用 【免费下载链接】vcluster vCluster creates tenant clusters: fully isolated environments delivered as managed Kubernetes, or as the foundation for Slurm, Ray…

2026/9/23 18:10:25 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →