New
EMQX 6.1.0 新特性:可回放的 MQTT 消息流、增强的多租户能力与更多数据集成 →

EMQX 桥接 Kafka 性能测试报告(车联网)

基准报告2021-11-4

测试目的

验证 EMQX 单集群可支撑 100 万并发连接,并通过规则引擎桥接方式每秒转发 100 万消息至 Kafka 集群,为某车联网客户上线做准备。

测试分为以下几个阶段:

  1. 百万 TPS 直连 ELB 内网,无桥接
  2. 百万 TPS 直连 ELB 内网,桥接 Kafka
  3. 百万 TPS 直连域名加桥接,查看带宽占用情况

测试架构

测试环境、机器配置及测试工具

测试环境

客户华为云 VPC

EMQX 集群、Kafka 集群、HA 配置

服务数量版本操作系统CPU内存云主机型号内网网卡数量开放端口
SLB 配置域名118083 1883 8883 8081
HA42.4.3Centos 7.616核32Gc6.4xlarge.2 存储:普通81883 8883
EMQX10企业版v4.3.3Centos 7.664核128Gc6.16xlarge.2 存储:普通118083 1883 8883 8081
Kafka 云服务42.3.0Centos 7.616核32Gc6.4xlarge.2 存储: 超高I/O1

测试工具:emqtt_bench

Emqtt_bench 压力机配置: 10 台,每台配置相同。

服务数量版本操作系统CPU内存云主机型号内网网卡数量开放端口
测试机10Centos 7.616核32Gc6.4xlarge.2 存储:普通21883 8883

测试场景

如测试架构图中所示,10 个压力机使用 emqtt_bench 模拟 100 万 MQTT 客户端,通过 TLS(8883端口)连接华为云 ELB,TLS 终结在 Haproxy。ELB 和 Haproxy 的分配策略均为不加权轮询。客户端心跳间隔(keep alive)60秒。每个客户端连接成功后随即开始每秒发送一条 QoS 为 0、payload 为 1kB 的消息(测试初期 payload 为 100B),所有消息通过规则引擎桥接转发至 Kafka。

Kafka 资源设置

Kafka 规则设置

规则引擎配置如下:

  • Produce 类型:异步,ACK 策略:learder only,缓存模式:Memory
  • payload 为 1kB 时使用了数据压缩 gzip,100B 时使用 no_compression。
  • Kafka 主题为 12 个分区,3 个副本

测试结果

本次 PoC 共完成了以下测试:

  • 内网:
    • 百万连接百万 TPS,payload 100B,桥接 Kafka,2 小时稳定
    • 百万连接百万 TPS,payload 1kB,桥接 Kafka,2 小时稳定
  • 公网域名:
    • 公网带宽设置 800M,百万连接百万 TPS,payload 1B,桥接 Kafka

具体测试结果及 EMQX 资源使用截图如下:

内网,百万连接百万TPS,payload 1kB,桥接 Kafka

  • EMQX 集群 Dashboard 统计:
  • EMQX 规则引擎统计:
  • Kafka 管理界面统计:

公网域名,百万连接百万TPS,payload 1B,桥接Kafka

带宽使用 800M 的 50%。

测试总结

如以上结果所示,在目前的部署架构下,可以满足客户对于百万并发连接、百万 1k 字节大小的消息桥接转发至 Kafka 的验证需求。

详细测试结果

详细测试结果请填写右侧表单获取完整版 PDF 文件。

相关资源