news 2026/6/23 19:14:52

车企需求验证:smart - mqtt 高可用比性能更重要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
车企需求验证:smart - mqtt 高可用比性能更重要

突发!车企需求验证:smart - mqtt 高可用比性能更重要

在维护 [smart - mqtt] 的这些年,常有人问:“这个 Broker 单机能支撑多少连接?”说实话,这问题不好答,不同业务场景和硬件配置,结果不同。

但前段时间,一位国内头部车企技术人员的问题让我印象深刻:“单机已经够用了,但我们还是要做集群”。沟通中我询问业务规模,对方称大概几万,单机轻松顶住,但有单点故障问题,且有高可用部署要求。

这让我意识到,对真正的生产系统,性能是工程问题,高可用才是业务问题。比如 Broker 所在服务器宕机、系统升级重启服务、节点异常退出,这些比“单机能扛多少连接”更重要。于是我决定本地复现高可用架构,验证“当 Broker 真正发生故障时,smart - mqtt 是否还能正常工作”。

其实这次验证不意外,设计 [cluster - plugin] 时,我就在想,若 smart - mqtt 用于企业生产环境,最先遇到的问题是什么?答案不是性能,而是高可用,如设备连不同 Broker 后消息跨节点投递、节点故障后业务持续运行、不停机完成系统升级等问题。基于这些预判,smart - mqtt 设计之初预留集群扩展能力,演化出 `cluster - plugin`,当初像面向未来的准备,这次车企真实需求让我明白,那些“暂时用不上”的设计,终会体现价值。

为模拟实际生产环境,我本地搭建环境:3 个 smart - mqtt Broker 节点、1 个 HAProxy 负载均衡实例、多个 MQTTX 客户端。整体架构如下:

MQTT Client │ ▼ SLB / HAProxy │ ┌────────┼────────┐ ▼ ▼ ▼ Broker Broker Broker ╲ │ ╱ ╲ │ ╱ cluster - plugin
需说明,生产环境常用云厂商 SLB,本次用 HAProxy 仅本地模拟负载均衡。很多人初接触 MQTT 集群,以为加负载均衡、多部署 Broker 就行,实则不然。假设 Client - A 连 Broker - 1 订阅 `car/+/status`,Client - B 连 Broker - 2 发布 `car/001/status`,若 Broker 独立,Broker - 2 不知 Broker - 1 有匹配订阅,Client - A 收不到消息。所以真正可用的 MQTT 集群需连接高可用和消息高可用,HAProxy(SLB)负责客户端接入,cluster - plugin 负责跨节点消息同步,即 SLB 送客户端进来,cluster - plugin 送消息过去。

为保证实验可复现,我将 `docker - compose.yaml` 和 `haproxy.cfg` 提交到 smart - mqtt 官方仓库。用 Docker Compose 启动 3 个独立 Broker 节点,但它们还是“孤岛”。接着登录各 Broker 管理后台启用 `cluster - plugin`,因实验在 Docker 内部网络,节点通过容器名称通信。完成配置保存生效后,各 Broker 节点建立集群连接,3 个独立节点组成 MQTT 集群。

环境准备好后,我用 MQTTX 创建多个客户端连接,HAProxy 分发连接到不同 Broker 节点,系统看似正常。但真正的高可用是故障发生时仍能服务。于是我执行 `docker restart mqtt - broker - 1` 模拟 Broker 节点异常退出。几秒内,HAProxy 识别故障节点,新连接不进 Broker - 1,MQTT 客户端重连,cluster - plugin 跨节点投递消息,其他 Broker 节点服务。Broker - 1 恢复后重新加入集群,业务未因单节点故障中断。

这次验证让我确信,对企业用户,MQTT Broker 价值不只在性能指标,几万级连接对现代 Broker 不难,真正决定能否进生产环境的是面对故障的表现,如节点下线时业务是否中断、客户端能否恢复、消息能否送达,这些比“单机能支撑多少连接”更重要。

正如车企用户所说:“单机也能轻松顶住,只不过有单点故障问题。”这也是很多企业推进 MQTT 落地的问题。性能决定系统上限,高可用决定系统能否承载业务。做开源项目常如此,很多能力诞生时无明确场景,但方向正确,总会遇到需要它的人。`cluster - plugin` 对 smart - mqtt 或许就是提前准备。希望这次验证能为评估 MQTT 高可用方案的团队提供参考,真正值得信赖的系统是故障时仍可用。

如果你的团队正在评估 MQTT 技术选型,或者面临高可用、集群部署、性能优化等问题,也欢迎与我们交流。

社区资源
-官方文档
-GitHub 仓库
-Gitee 仓库

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:11:01

使用Gemini显示“出了点问题”又或者“Somethingwent wrong”出错?

不妨在网址栏输入↘️https://gemini.google.com/gems/create?hlen-US 此方法转与油管一位博主分享的,自己试了试的确可行几乎能解决百分之八九十的问题。(输入后左上↖️状态栏新开一个聊天框就可以和gemini正常对话了)刷新网页或者重新访…

作者头像 李华
网站建设 2026/6/23 19:09:40

客服机器人什么算好?电商AI客服系统选型,90%的商家都踩过这7个坑!

市面上的电商AI客服系统五花八门,宣传话术一个比一个响亮。可真到了大促节点,系统卡死、答非所问、转人工率居高不下——这些问题,只有用过的人才知道有多痛。选错一套智能客服系统,损失的不仅是采购费用,更是大促期间…

作者头像 李华
网站建设 2026/6/23 18:57:04

扣子(Coze)(1):零基础入门指南

第一部分 1. 一句话核心总结 扣子(Coze)是字节跳动旗下的一站式AI应用平台,其核心是低代码的AI智能体(Agent)搭建能力,让普通人无需编程也能通过可视化工作流快速创建自己的AI工具。 2. 核心概念定义 扣子&…

作者头像 李华
网站建设 2026/6/23 18:56:43

进程的五态模型

在三态基础上增加 新建 (New) 与 终止 (Terminated) 状态,有时还包含 挂起 (Suspend) 相关状态(图中涉及中级调度与挂起):状态说明新建进程刚被创建,尚未进入就绪队列就绪同三态模型运行同三态模型阻塞同三态模型终止进…

作者头像 李华
网站建设 2026/6/23 18:56:12

现场停线没人理?这套安灯管理系统经验,让响应速度直接翻倍

在制造工厂的生产线上,设备停机、物料短缺、质量异常几乎是家常便饭。但你有没有遇到过这样的情况:设备停了,工人扯着嗓子喊班长,班长打电话找维修,维修工还在别处忙;等维修到了现场,发现缺备件…

作者头像 李华
网站建设 2026/6/23 18:52:00

Django毕设选题推荐:基于 Django-Vue 架构的试题库管理系统设计与开发【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华