MQTT Broker技术选型

技术需求

  • 完整的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脚本
# 消费者
./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 数据包大小

参考资料

  • MQTT 5.0
  • EMQ官方文档
  • EMQ GitHub仓库
  • RabbitMQ官方文档
  • RabbitMQ GitHub仓库
  • Mosquitto官方文档
  • Mosquitto GitHub仓库
  • ActiveMQ 5官方文档
  • ActiveMQ GitHub仓库

你可能感兴趣的:(MQTT Broker技术选型)