MQTT Broker技术选型
2020-10-13 本文已影响0人
centychen
技术需求
- 完整的MQTT协议支持;
- 支持设备认证、发布订阅ACL;
- 消息能够持久化存储到数据库;
- 支持集群部署,支持10w+设备连接;
- 最好能够提供规则引擎;
- 文档丰富,方便使用和解决问题。
- 社区活跃,Issue有人关闭;
MQTT Broker对比
对比项 | EMQ | RabbitMQ | Mosquitto | ** ActiveMQ 5** |
---|---|---|---|---|
开源机构 | 杭州映云科技有限公司 | Rabbitmq团队 | Eclipse | Apache |
语言 | Erlang | Erlang | C/C++ | Java |
GitHub Star | 6.7k | 7.6k | 4k | 1.8k |
Last Commit | 一个月内 | 一个月内 | 一个月内 | 一个月内 |
Closed issue | 2191 | 1094 | 1103 | 507 |
文档丰富程度 | 优秀 | 良好 | 一般 | 良好 |
管理界面 | 提供,功能全面 | 提供,功能较全面 | 无 | 无 |
支持MQTT版本 | 3.1/3.1.1/5.0 | 3.1.1 | 3.1/3.1.1/5.0 | 3.1 |
服务质量 | QoS0/QoS1/QoS2 | QoS0/QoS1(QoS2只支持Publish) | QoS0/QoS1/QoS2 | QoS0/QoS1/QoS2 |
遗嘱(遗愿)消息 | 支持 | 支持 | 支持 | 无 |
消息持久化 | 支持(多种方式,部分商业化) | 支持(磁盘文件) | 支持(磁盘文件) | 支持 |
客户端认证 | 支持 | 支持 | 支持 | 支持 |
发布订阅ACL | 支持 | 支持 | 支持 | 支持 |
规则引擎 | 支持(多种方式,部分商业化) | 不支持 | 不支持 | 不支持 |
TCP | 支持 | 支持 | 支持 | 支持 |
TCP/SSL | 支持 | 支持 | 支持 | 支持 |
Websocket | 支持 | 支持(插件) | 支持 | 不支持 |
Websocket/SSL | 支持 | 支持(插件) | 支持 | 不支持 |
集群 | 支持 | 支持 | 支持 | 支持 |
压力测试
-
Client
- 数量:2台,1台作为生产者,1台作为消费者
- 配置:2核CPU*4GB内存
-
Broker
- 数量:1台
- 配置:4核CPU*8GB内存
- 测试结果
测试场景 | 发布速率(单个生产者) | EMQ | Mosquitto |
---|---|---|---|
10个生产者10个消费者* | 100msg/sec | speed:1000msg/sec cpu:21% |
speed:1000msg/sec cpu:4% |
10个生产者10个消费者* | 250msg/sec | speed:2500msg/sec cpu:48% |
speed:2500msg/sec cpu:5% |
100个生产者10个消费者* | 1msg/sec | speed:100msg/sec cpu:4% |
speed:100msg/sec cpu:2% |
1000个生产者10个消费者* | 1msg/sec | speed:1000msg/sec cpu:27% |
speed:1000msg/sec cpu:6% |
10000个生产者10个消费者* | 1msg/sec | speed:10000msg/sec cpu:83% |
speed:6300msg/sec cpu:30% |
15000个生产者10个消费者* | 1msg/sec | speed:13552msg/sec cpu:96% |
speed:4170msg/sec cpu:31% |
20000个生产者10个消费者* | 1msg/sec | speed:0msg/sec cpu:99% |
speed:2190msg/sec cpu:32% |
30000个生产者10个消费者* | 1msg/min (500msg/sec) |
speed:500msg/sec cpu:24% |
speed:500msg/sec cpu:25% |
30000个生产者10个消费者* | 2msg/min (1000msg/sec) |
speed:1000msg/sec cpu:29% |
speed:1000msg/sec cpu:26% |
30000个生产者10个消费者* | 10msg/min (5000msg/sec) |
speed:5000msg/sec cpu:70% |
speed:4900msg/sec cpu:28% |
# 消费者
./emqtt_bench sub -t '$share/group/t' -h 172.18.32.12 -p 1883 -c 10 -q 1 -V 3
# 生产者
./emqtt_bench pub -t t -h 172.18.32.12 -p 1883 -s 1024 -c 10 -I 1000 -q 1 -V 3
# -t 订阅Topic
# -h 主机
# -p 端口号
# -c 客户端
# -q QoS
# -V MQTT版本
# -s 数据包大小