- 性能测试环境
- kafka集群环境
IP | CPU | 网卡 | 备注 |
192.168.x.106 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;8核 | 1000Mb/s |
|
192.168.x.107 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;8核 | 1000Mb/s |
|
192.168.x.109 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;8核 | 1000Mb/s |
|
- zookeeper集群环境
IP | CPU | 网卡 | 备注 |
192.168.x.130 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;12核 | 1000Mb/s |
|
192.168.x.139 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;12核 | 1000Mb/s |
|
192.168.x.144 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;12核 | 1000Mb/s |
|
- 客户端环境(消费者)
IP | CPU | 网卡 | 备注 |
192.168.x.146 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;10核 | 1000Mb/s |
|
192.168.x.147 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;10核 | 1000Mb/s |
|
192.168.x.108 | Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz;单CPU;8核 | 1000Mb/s |
|
- 性能测试方案
该实时数据交换性能测试主要围绕单分区单客户端、多分区单客户端和多分区多客户端三个方面进行测试。数据格式为:
{"name": "heres","age": "10","address": "hefei"}
kafka-mysql和kafka-HBase都采用了批量插入的方式,分别为6000条/1次和2000条/1次,具体测试方案如下:
2.1、基于单分区单客户端测试方案
在kafka集群新建一个topic,topic为1个Partitions,1个Replication,通过producer程序为该topic生产1000万条消息。
在一个客户端上执行实时数据交换程序,消费者组为group1,分别统计kafka Stream实时数据转化十万级、百万级和千万级数据转化效率(msg/sec)。
2.2、基于多分区单客户端测试方案
在kafka集群新建一个topic,topic为3个Partitions,1个Replication,通过producer程序为该topic生产1000万条消息,同时需要保证消息能够均分分布在3个partitions上,防止数据倾斜现象。
在一个客户端上执行实时数据交换程序,消费者组为group1,分别统计kafka Stream实时数据转化十万级、百万级和千万级数据转化效率(msg/sec)。
2.3、基于多分区多客户端测试方案
在kafka集群新建一个topic,topic为3个Partitions,1个Replication,通过producer程序为该topic生产1000万条消息,同时需要保证消息能够均分分布在3个partitions上,防止数据倾斜现象。
在3个客户端上同时启动实时数据交换程序,消费者组为group1,观察kafka stream任务分布情况,分别统计kafka Stream实时数据转化十万级、百万级和千万级数据转化效率(msg/sec)。
- 结果与分析
3.1、方案一
实时数据转化 | 十万级(msg/sec) | 百万级(msg/sec) | 千万级(msg/sec) | 备注 |
Kafka->mysql | 50000 | 71428 | 72992 |
|
Kafka->HBase | 10000 | 12195 | 11876 |
|
基于kafka stream的单分区单客户端测试方案,启动测试程序后,客户端会启动一个task,在kafka到mysql的数据交换过程,会达到每秒50000条消息;在kafka到HBase的数据交换过程,会达到每秒11000条消息。
3.2、方案二
实时数据转化 | 十万级(msg/sec) | 百万级(msg/sec) | 千万级(msg/sec) | 备注 |
Kafka->mysql | 41428 | 41666 | 37174 |
|
Kafka->HBase | 11111 | 11494 | 10893 |
|
基于kafka stream的多分区单客户端测试方案,启动测试程序后,客户端会启动3个task,在kafka到mysql的数据交换过程,会达到每秒40000条消息;在kafka到HBase的数据交换过程,会达到每秒11000条消息,并没有看到明显的性能提升。
3.3、方案三
实时数据转化 | 十万级(msg/sec) | 百万级(msg/sec) | 千万级(msg/sec) | 备注 |
Kafka->mysql | 100000 | 120000 | 140625 |
|
Kafka->HBase | 38028 | 40000 | 40909 |
|
基于kafka stream的多分区多客户端测试方案,分别在3台客户端启动测试程序,kafka stream会根据消费者组重新进行rebalance,将任务依次分布在IP为192.168.129.146,192.168.129.147,192.168.129.108三台物理服务器上。在kafka到mysql的数据交换过程,会达到每秒100000条消息;在kafka到HBase的数据交换过程,会达到每秒38000条消息,IP为192.168.129.108的物理机器实时数据转化效率明显高于另外两台机器,故实时数据转化效率约为方案二的3倍多。
特此说明:涉及Mysql数据量,这块是程序处理的记录数,不是提交Mysql入库记录数。仅供参考。