1. 性能测试环境
  2. 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

 

 

  1. 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

 

 

  1. 客户端环境(消费者)

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

 

 

  1. 性能测试方案

该实时数据交换性能测试主要围绕单分区单客户端、多分区单客户端和多分区多客户端三个方面进行测试。数据格式为:

{"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)。

 

 

  1. 结果与分析

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入库记录数。仅供参考。