MQTT 消息服务器怎么选?EMQX vs Mosquitto vs HiveMQ
💡 设备上云用什么 MQTT 服务器?百万级设备连接选哪个?免费开源 MQTT Broker 到底怎么挑?
这三个是工业物联网最主流的 MQTT Broker:EMQX(国产,分布式,亿级连接)、Eclipse Mosquitto(C 写,极轻量,嵌入式首选)、HiveMQ(德国,企业级高可用)。这篇用 10 个维度说清楚,你的项目该上哪个。
大规模设备接入、要规则引擎和数据集成、做国产云原生——选 EMQX(国产,单集群亿级连接);几十台设备简单中转、跑在边缘网关或树莓派等资源受限环境——选 Mosquitto(C 写,极轻量);企业级高可用集群、严格遵循 MQTT 5.0、要德国厂商商业支持——选 HiveMQ。国内工业项目,EMQX 是默认首选。
01 MQTT Broker 在架构里站在哪
很多人刚上手时会问:设备直接连数据库不就行了,为什么中间还要一个 MQTT 服务器?因为工业现场的设备连接是"多变的":
- 设备不直连数据库:成百上千台设备如果各自直连 TDengine/MySQL,数据库连接数会被打爆,也无法鉴权和管理。
- Broker 做解耦:设备只管把消息发给 Broker,谁要数据谁订阅,设备和应用互相不认识。
- 弱网与缓存:现场网络不稳时,Broker 承担缓存、重传、遗嘱消息,应用不用关心连接细节。
- 统一出口:一个 MQTT 中枢,后面接时序库、看板、报警、MES,都从它订阅。
典型链路就是:设备 → 采集网关(Neuron/ThingsGateway)→ MQTT Broker(这里三选一) → TDengine/Grafana。
02 10 个维度逐项对比
| 对比维度 | EMQX | Mosquitto | HiveMQ |
|---|---|---|---|
| 厂商 / 出身 | EMQ 映云科技(杭州,国产) | Eclipse 基金会(开源社区) | HiveMQ GmbH(德国) |
| 授权方式 | 开源版免费,企业版订阅 | EPL/EDL,完全免费 | 社区版免费,企业版商业授权 |
| 开发语言 | Erlang(天生分布式) | C(极轻量) | Java |
| 集群能力 | 分布式集群,单集群亿级连接 | 以单机为主,集群能力弱 | 企业级集群,高可用成熟 |
| 资源占用 | 中等,功能全 | 极低,嵌入式/树莓派能跑 | 中高,JVM 开销 |
| MQTT 5.0 | 完整支持 | 支持 | 完整支持,标准遵循最好 |
| 内置集成 | 规则引擎 + 20+ 数据集成,最强 | 以转发为主,需外接 | 企业级桥接与集成 |
| 国产 / 信创 | 是(国产) | 中立(Eclipse 社区) | 否(德国商业) |
| 管理控制台 | 内置强大 Dashboard / 规则/监控 | 偏配置文件,界面简单 | 企业级控制台 |
| 典型规模 | 海量设备云平台 | 边缘/小项目/嵌入式 | 企业级高可用、大规模 IoT |
- 比"大规模、规则引擎、云原生、国产"→ EMQX 胜出;
- 比"轻、省资源、简单、嵌入式"→ Mosquitto 胜出;
- 比"企业级高可用、MQTT 5.0 严谨、商业 SLA"→ HiveMQ 胜出。
03 三种典型场景,直接对号入座
- 大规模设备接入(成百上千上万台)
- 要规则引擎和数据集成(直接写库/转发)
- 做国产替代 / 信创项目
- Docker/K8s 云原生部署
- 要中文社区和官方技术支持
- 几十台设备的简单 MQTT 中转
- 跑在边缘网关/树莓派等资源受限机器
- 嵌入式设备本地 Broker
- 只要稳定轻量,不需要花哨功能
- 追求最省内存、最简单部署
- 企业级高可用集群要求
- 严格遵循 MQTT 5.0 标准
- 已有欧洲/德国厂商技术栈
- 要成熟商业 SLA 和企业控制台
- 大规模工业 IoT 平台
04 丁丁的实战建议
我自己的项目里,中心层几乎都用 EMQX——国产、中文文档、规则引擎能直接把消息写进 TDengine,省掉再搭一个转发服务;边缘网关本地如果只是几台设备做中转,就用 Mosquitto,省资源。
真正要避免的坑:小项目硬上重型 Broker(多占内存、多一套运维),或者大项目用 Mosquitto 单机硬扛(连接数上来就顶不住)。先估设备规模和是否要集群,再选。
和采集层一样,这三者也不是互斥:边缘 Mosquitto/MQTT → 中心 EMQX 集群,是常见的云边组合。
常见问题 FAQ(选型时最常被问)
Q:MQTT 消息服务器(Broker)到底是干什么的?
A:它是设备和应用之间的"消息邮局":成千上万台设备把数据发给 Broker,应用/数据库按主题订阅,Broker 负责路由、缓存、转发和鉴权。设备不直接连数据库,而是连这个消息中间件,解耦之后才能接大规模设备、做云边协同。工业物联网里它几乎是标配。
Q:EMQX 和 Mosquitto 到底怎么选?
A:设备规模大(成百上千上万)、要规则引擎和数据集成、做云原生和国产替代,选 EMQX;只是几十台设备做简单中转、跑在资源受限的边缘网关或树莓派上,选 Mosquitto——C 写的极轻量,一台小机器就够。一句话:大平台选 EMQX,小中转选 Mosquitto。
Q:EMQX 是国产的吗?
A:是。EMQX 由杭州映云科技(EMQ)开发,是国产开源项目,在全球 MQTT Broker 市场份额领先,也有企业版提供商业 SLA。做信创、国产化项目时它是最主流的选择。
Q:小项目有必要上 EMQX 吗?
A:没必要。就几台设备、本地测试或简单中转,Mosquitto 几十兆内存就够,部署更简单。EMQX 的优势在大规模并发、规则引擎、集群和数据集成,小项目用它属于高射炮打蚊子。设备数上到几十上百、要接数据库/做云边协同时再上 EMQX。
Q:这三个都支持 MQTT 5.0 吗?
A:都支持 MQTT 5.0。其中 HiveMQ 对 MQTT 5.0 标准的遵循最完整,EMQX 也完整支持并在此基础上加了大量企业级能力,Mosquitto 2.0 起支持 5.0。做新协议特性(共享订阅、消息过期、主题别名)时三者都够用。
Q:HiveMQ 和 EMQX 企业版有什么区别?
A:两者都是企业级 MQTT Broker,都支持集群和高可用。HiveMQ 是德国商业产品,在欧洲汽车/工业 IoT 用得多,标准遵循严谨;EMQX 是国产,云原生和数据集成生态更活跃、中文社区友好、私有化部署成本更低。国内项目、要中文支持和国产化,EMQX 更顺。