Broker 选型对比
Broker 选型对比
Section titled “Broker 选型对比”本节对比两款最主流的 MQTT Broker——Eclipse Mosquitto 和 EMQX,帮助售前工程师在客户咨询时提供专业的选型建议。学习完成后,您将能够:
- 理解 Mosquitto 和 EMQX 的核心差异
- 根据不同场景推荐合适的 Broker
- 回答客户关于 Broker 选型的常见问题
- 掌握各 Broker 的部署和配置要点
在开始本节之前,请确保:
- 理解 MQTT Broker 的角色和功能
- 了解 Docker 基础操作
- 有基本的 Linux 命令行经验
Overview Comparison
Section titled “Overview Comparison”Market Position
Section titled “Market Position”| 维度 | Eclipse Mosquitto | EMQX |
|---|---|---|
| 开发者 | Eclipse 基金会 | 杭州映云科技 (EMQ) |
| 首次发布 | 2010 年 | 2017 年 |
| 许可证 | EPL-2.0 / EDL | Apache 2.0 (开源版) |
| 开发语言 | C | Erlang/OTP |
| 定位 | 轻量级嵌入式 Broker | 高性能分布式 MQTT 平台 |
| 社区活跃度 | 成熟稳定 | 快速增长 |
| 商业支持 | 无官方商业版 | 有企业版和商业支持 |
Quick Selection Guide
Section titled “Quick Selection Guide”你的需求是什么? │ ├── 设备 < 100,不需要集群 │ └── Mosquitto ✅ (最简单、最轻量) │ ├── 设备 100-1000,需要管理界面 │ ├── Mosquitto + 第三方工具 │ └── EMQX (内置 Dashboard) ✅ │ ├── 设备 1000+,需要高可用 │ └── EMQX 集群 ✅ │ ├── 需要规则引擎/数据桥接 │ └── EMQX ✅ │ └── 嵌入式/边缘/资源受限 └── Mosquitto ✅ (内存占用 < 5MB)Detailed Comparison
Section titled “Detailed Comparison”Performance Comparison
Section titled “Performance Comparison”| 指标 | Mosquitto 2.x | EMQX 5.x | 说明 |
|---|---|---|---|
| 最大并发连接 | ~10,000 | ~1,000,000+ | EMQX 优势在大规模场景 |
| 消息吞吐量 | ~50,000 msg/s | ~1,000,000+ msg/s | 单节点差异显著 |
| 消息延迟 | < 1ms (低负载) | < 1ms (低负载) | 低负载下差异不大 |
| 内存占用 | ~5-15 MB | ~100-500 MB | Mosquitto 更轻量 |
| CPU 占用 | 低 | 中 | Mosquitto 资源效率更高 |
| 启动时间 | < 1 秒 | ~5-10 秒 | Mosquitto 启动极快 |
Feature Comparison
Section titled “Feature Comparison”| 功能 | Mosquitto | EMQX | 说明 |
|---|---|---|---|
| 基础 MQTT (v3.1.1/5.0) | ✅ | ✅ | 都支持 |
| QoS 0/1/2 | ✅ | ✅ | 都支持完全实现 |
| 保留消息 | ✅ | ✅ | 都支持 |
| 遗嘱消息 | ✅ | ✅ | 都支持 |
| WebSocket 支持 | ✅ | ✅ | 都支持 |
| TLS/SSL | ✅ | ✅ | 都支持 |
| 内置 Web Dashboard | ❌ | ✅ | EMQX 开箱即用 |
| 集群能力 | 桥接模式 | 原生分布式 | 关键差异点 |
| 规则引擎 | ❌ | ✅ | EMQX 独有 |
| 数据桥接 | ❌ | ✅ | EMQX 独有 |
| HTTP API 管理 | ❌ | ✅ | EMQX 有 REST API |
| 认证授权(内置) | 密码文件 | 多种插件 | EMQX 更丰富 |
| 插件系统 | 有限 | 丰富 | EMQX 可扩展性强 |
| 共享订阅 | ❌ | ✅ | EMQX 支持负载均衡 |
Deployment Comparison
Section titled “Deployment Comparison”Mosquitto Docker 部署:
# docker-compose.yml (Mosquitto)version: '3'services: mosquitto: image: eclipse-mosquitto:2 container_name: mosquitto ports: - "1883:1883" - "9001:9001" volumes: - ./mosquitto/config:/mosquitto/config - ./mosquitto/data:/mosquitto/data - ./mosquitto/log:/mosquitto/log restart: unless-stoppedEMQX Docker 部署:
# docker-compose.yml (EMQX)version: '3'services: emqx: image: emqx/emqx:5.0 container_name: emqx ports: - "1883:1883" # MQTT TCP - "8083:8083" # MQTT WS - "8084:8084" # MQTT WSS - "18083:18083" # Dashboard volumes: - ./emqx/data:/opt/emqx/data - ./emqx/log:/opt/emqx/log restart: unless-stopped environment: - EMQX_DASHBOARD__DEFAULT_USER__LOGIN=admin - EMQX_DASHBOARD__DEFAULT_USER__PASSWORD=publicEMQX Unique Features
Section titled “EMQX Unique Features”Built-in Dashboard
Section titled “Built-in Dashboard”EMQX 内置 Web 管理界面(默认地址:http://localhost:18083):
Dashboard 功能:├── 监控概览:连接数、消息数、吞吐量实时图表├── 客户端管理:查看所有连接的客户端├── Topic 管理:查看所有 Topic 和消息流├── 订阅管理:查看和管理订阅关系├── 告警规则:设置触发条件和通知方式└── 插件管理:启用/禁用扩展功能Rule Engine (规则引擎)
Section titled “Rule Engine (规则引擎)”EMQX 的规则引擎可以直接在 Broker 中处理数据:
-- 创建规则:将温度超过 30°C 的数据写入 HTTP APICREATE RULE temp_alertASSELECT payload.temperature as temp, clientid as device_id, now_timestamp as tsFROM "factory/+/temperature"WHERE payload.temperature > 30DO web_hook('http://alert-api.factory.com/alarm') WITH(retry_count=3);Data Bridge (数据桥接)
Section titled “Data Bridge (数据桥接)”EMQX 支持直接桥接数据到外部系统,无需额外开发:
# 配置 MQTT → InfluxDB 桥接# 通过 Dashboard 或配置文件
bridges.mqtt { server = "influxdb:8086" enable = true}Mosquitto Advantages
Section titled “Mosquitto Advantages”极低资源占用
Section titled “极低资源占用”Mosquitto 非常适合边缘节点和资源受限环境:
Mosquitto 在 Raspberry Pi Zero 上的表现:- 内存占用:~3 MB- CPU 占用:< 1%- 磁盘占用:< 2 MB (二进制文件)- 支持 100+ 并发连接配置 Mosquitto 仅需一个配置文件:1. 安装(或拉取 Docker 镜像)2. 配置 mosquitto.conf(通常 5-10 行)3. 启动服务4. 完成 ✔
无数据库依赖 ❌无运行时依赖 ❌无需安装面板 ❌单一二进制文件 ✅Hybrid Architecture
Section titled “Hybrid Architecture”在某些场景下,可以组合使用两种 Broker:
┌──────────────────────────────────────────────────────┐│ 云平台 (EMQX 集群) ││ 管理 10000+ 设备 │├──────────────────────────────────────────────────────┤│ ↑ ││ MQTT Bridge (TLS) ││ ↑ │├──────────┬──────────┬──┴──┬──────────┬───────────────┤│ 工厂 A │ 工厂 B │ │ 工厂 C │ 工厂 D ││ Mosquitto│ Mosquitto│ ... │Mosquitto│ Mosquitto ││ (边缘节点)│ (边缘节点)│ │(边缘节点)│ (边缘节点) │└──────────┴──────────┘ └──────────┴───────────────┘优势:
- 边缘节点使用轻量 Mosquitto,降低硬件要求
- 云平台使用 EMQX 集群,实现集中管理
- 网络断开时边缘节点独立运行
- 网络恢复后数据自动同步到云端
Pre-sales FAQ
Section titled “Pre-sales FAQ”Q1: 为什么不用免费的 Mosquitto 而要选择 EMQX?
Section titled “Q1: 为什么不用免费的 Mosquitto 而要选择 EMQX?”A: 这取决于您的需求规模。如果:
- 设备少于 100 台,不需要集群——Mosquitto 完全够用
- 超过 100 台设备或需要高可用——建议 EMQX
- 需要数据清洗、桥接等高级功能——EMQX 内置规则引擎
Q2: EMQX 企业版比开源版多什么?
Section titled “Q2: EMQX 企业版比开源版多什么?”A: 企业版增加:
- 7×24 小时商业支持
- 监控和告警系统
- LDAP/AD 集成认证
- Kafka/Pulsar 等高级桥接
- 审计日志和合规报告
Q3: 从 Mosquitto 迁移到 EMQX 复杂吗?
Section titled “Q3: 从 Mosquitto 迁移到 EMQX 复杂吗?”A: 非常简单。EMQX 兼容标准 MQTT 协议,只需要:
- 修改客户端连接地址
- 导入 ACL 配置
- 测试核心功能
通常 1-2 小时即可完成迁移。
Summary
Section titled “Summary”本节要点总结:
- Mosquitto 优势:轻量(~5MB 内存)、简单、适合中小规模部署
- EMQX 优势:高并发(百万级连接)、集群能力、内置 Dashboard 和规则引擎
- 选型建议:< 100 设备用 Mosquitto,> 1000 设备用 EMQX,中间范围根据需求
- 混合架构:边缘 Mosquitto + 云端 EMQX,兼顾轻量和高性能
- 核心差异:Mosquitto 是轻量 Broker,EMQX 是分布式 MQTT 平台