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/10/6 15:31:53 阅读更多 →
国内知名的企业级 Agent 智能体厂商有哪些?2026年主流厂商盘点与技术选型深度解析

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

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

2026/10/7 1:33:37 阅读更多 →
如何高效管理小红书收藏:3种简单方法实现内容永久保存

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

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

2026/10/12 0:09:17 阅读更多 →

最新新闻

从零搭建能干活儿的机器人:平台选型、核心逻辑与部署维护实战

从零搭建能干活儿的机器人:平台选型、核心逻辑与部署维护实战

1. 从零搭建一个能干活儿的机器人:先想清楚你要它做什么很多人一听到“Bot”这个词,脑子里第一反应就是那种在群里自动回复“你好,有什么可以帮您”的客服机器人。但真正玩过一阵子的人都知道,一个能“干活”的机器人,…

2026/10/14 7:55:45 阅读更多 →
UE4反射系统深度解析:从UHT编译期代码生成到运行时注册机制

UE4反射系统深度解析:从UHT编译期代码生成到运行时注册机制

1. 为什么值得花时间啃反射系统如果你写过一段时间的UE4 C,大概率遇到过这种场景:在编辑器里给某个UCLASS加了一个UPROPERTY,编译完打开编辑器,属性面板里就自动出现了这个字段,还能被蓝图读写、被序列化、被GC正确管理…

2026/10/14 7:55:45 阅读更多 →
架构经济学:技术决策中的成本与价值平衡

架构经济学:技术决策中的成本与价值平衡

1. 架构经济学的本质思考第一次读到"架构经济学"这个概念时,我正坐在杭州西溪湿地旁的一家咖啡馆里调试微服务链路追踪。咖啡师拉花的动作突然让我意识到:架构设计和咖啡制作竟如此相似——都需要在有限的资源条件下,通过合理的组合…

2026/10/14 7:55:45 阅读更多 →
HyperFrames:为AI代理打造确定性视频渲染管线

HyperFrames:为AI代理打造确定性视频渲染管线

视频渲染这件事,过去几年一直有个尴尬的定位:它要么是剪辑软件里的手工活,要么是后端服务里跑得慢、结果还不稳定的黑盒。尤其是当"AI 代理"这个概念火起来之后,问题变得更尖锐——代理需要批量、自动、可复现地生成视频…

2026/10/14 7:55:45 阅读更多 →
游戏推荐系统开发:从架构设计到核心算法实现

游戏推荐系统开发:从架构设计到核心算法实现

1. 项目背景与核心价值网游推荐网站是当前游戏爱好者获取最新游戏资讯的重要渠道。这类平台需要解决的核心痛点是:如何从海量游戏作品中筛选出真正值得玩家投入时间的高质量作品。我们开发的这个推荐系统,不仅包含常规的游戏列表展示,更重要的…

2026/10/14 7:55:45 阅读更多 →
动态图训练实战:图像识别模型可调试、可复现的端到端训练方法

动态图训练实战:图像识别模型可调试、可复现的端到端训练方法

1. 项目概述:为什么动态图训练正在成为图像识别的默认工作流“图像识别实战(四)——动态图&模型训练”这个标题里藏着一个关键信号:它不是在讲“怎么用现成模型跑个demo”,而是在直击当前工业级图像识别落地最核心的环节——如何让模型真…

2026/10/14 7:54:45 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →