kakfa的基准测试
-
- 创建一个topic : 在实际上生产中, 可以创建多个 拥有不同数量的分片和副本topic
./kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --topic test02 --partitions 3 --replication-factor 1
-
- 测试写入效率:
./kafka-producer-perf-test.sh --topic test02 --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1 属性说明: --num-records : 测试消息的条数 --throughput : 是否需要限流 -1 不指定 --record-size : 每条数据的字节大小 acks : 消息确认方案
-
- 测试读取效率:
./kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test02 --fetch-size 1048576 --messages 5000000 属性说明: --fetch-size 每次拉取的数量大小 --messages : 消息总条数
总结
前提: 假设broker数量是无限的
1) 当topic分片的数量越多, 读写效率越高
2) topic的副本数量越多, 对读写效率影响越大
kafka的javaAPI操作
-
- 创建maven项目, 并导入相关的依赖
<repositories><!--代码库--> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version