kafka入门(3)-基础操作和基准测试

kafka入门(3)-基础操作和基准测试

基础操作

image-20200916064442700

创建topic

创建一个topic(主题)。Kafka中所有的消息都是保存在主题中,要生产消息到Kafka,首先必须要有一个确定的主题。

# 创建名为test的主题
bin/kafka-topics.sh --create --bootstrap-server node1.itcast.cn:9092 --topic test
# 查看目前Kafka中的主题
bin/kafka-topics.sh --list --bootstrap-server node1.itcast.cn:9092

生产消息到Kafka

使用Kafka内置的测试程序,生产一些消息到Kafka的test主题中

bin/kafka-console-producer.sh --broker-list node1.itcast.cn:9092 --topic test

从Kafka消费消息

使用下面的命令来消费 test 主题中的消息。

bin/kafka-console-consumer.sh --bootstrap-server node1.itcast.cn:9092 --topic test --from-beginning

使用Kafka Tools操作Kafka

连接Kafka集群

安装Kafka Tools后启动Kafka

image-20200916065429999

image-20200916141434978

image-20200916141453109

创建topic

image-20200916141524933

image-20200916141603113

image-20200916141617795

Kafka基准测试

基准测试

基准测试(benchmark testing)是一种测量和评估软件性能指标的活动。我们可以通过基准测试,了解到软件、硬件的性能水平。主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。

基于1个分区1个副本的基准测试

测试步骤:

  1. 启动Kafka集群

  2. 创建一个1个分区1个副本的topic: benchmark

  3. 同时运行生产者、消费者基准测试程序

  4. 观察结果

创建topic
bin/kafka-topics.sh --zookeeper node1.itcast.cn:2181 --create --topic benchmark --partitions 1 --replication-factor 1
生产消息基准测试

在生产环境中,推荐使用生产5000W消息,这样会性能数据会更准确些。为了方便测试,课程上演示测试500W的消息作为基准测试。

bin/kafka-producer-perf-test.sh --topic benchmark --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1

参数详解:

输入kafka-producer-perf-test.sh命令可以查看参数详情

–topic topic的名字
–num-records 总共指定生产数据量(默认5000W)
–throughput 指定吞吐量——限流(-1不指定)
–record-size record数据大小(字节)
–producer-props bootstrap.servers=192.168.1.20:9092,192.168.1.21:9092,192.168.1.22:9092 acks=1 指定Kafka集群地址,ACK模式

查看测试结果:

吞吐量93092.533979 records/sec 每秒9.3W条记录
吞吐速率(88.78 MB/sec) 每秒约89MB数据
平均延迟时间346.62 ms avg latency
最大延迟时间1003.00 ms max latency
消费消息基准测试
bin/kafka-consumer-perf-test.sh --broker-list node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 --topic benchmark --fetch-size 1048576 --messages 5000000

参数详解:

输入kafka-producer-perf-test.sh命令可以查看参数详情

–broker-list 指定kafka集群地址 --topic 指定topic的名称 --fetch-size 每次拉取的数据大小

–messages 总共要消费的消息个数

查看测试结果:

data.consumed.in.MB 共计消费的数据4768.3716MB
MB.sec 每秒消费的数量445.6006 每秒445MB
data.consumed.in.nMsg 共计消费的数量5000000
nMsg.sec 每秒的数量467246.0518 每秒46.7W条
基于3个分区1个副本的基准测试

被测虚拟机:

node1node2node3
inter i5 8th 4G内存inter i5 8th 2G内存inter i5 8th 2G内存
创建topic
bin/kafka-topics.sh --zookeeper node1.itcast.cn:2181 --create --topic benchmark --partitions 3 --replication-factor 1
生产消息基准测试
bin/kafka-producer-perf-test.sh --topic benchmark --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1

测试结果:

指标3****分区1个副本单分区单副本
吞吐量68755.930199 records/sec93092.533979 records/sec 每秒9.3W条记录
吞吐速率65.57 MB/sec(88.78 MB/sec) 每秒约89MB数据
平均延迟时间469.37 ms avg latency346.62 ms avg latency
最大延迟时间2274.00 ms max latency1003.00 ms max latency

在虚拟机上,因为都是共享笔记本上的CPU、内存、网络,所以分区越多,反而效率越低。但如果是真实的服务器,分区多效率是会有明显提升的。

消费消息基准测试
bin/kafka-consumer-perf-test.sh --broker-list node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 --topic benchmark --fetch-size 1048576 --messages 5000000

测试结果:

还是一样,因为虚拟机的原因,多个分区反而消费的效率也有所下降。

指标单分区3个副本单分区单副本
data.consumed.in.MB 共计消费的数据4768.3716MB4768.3716MB
MB.sec 每秒消费的数量265.8844MB445.6006 每秒445MB
data.consumed.in.nMsg 共计消费的数量50000005000000
nMsg.sec 每秒的数量278800.0446 每秒27.8W467246.0518 每秒46.7W
基于1个分区3个副本的基准测试
创建topic
bin/kafka-topics.sh --zookeeper node1.itcast.cn:2181 --create --topic benchmark --partitions 1 --replication-factor 3
生产消息基准测试
bin/kafka-producer-perf-test.sh --topic benchmark --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1

测试结果:

指标单分区3个副本单分区单副本
吞吐量29899.477955 records/sec93092.533979 records/sec 每秒9.3W条记录
吞吐速率28.51 MB/sec(88.78 MB/sec) 每秒约89MB数据
平均延迟时间1088.43 ms avg latency346.62 ms avg latency
最大延迟时间2416.00 ms max latency1003.00 ms max latency

同样的配置,副本越多速度越慢。

消费消息基准测试
bin/kafka-consumer-perf-test.sh --broker-list node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 --topic benchmark --fetch-size 1048576 --messages 5000000

测试结果:

指标单分区3个副本单分区单副本
data.consumed.in.MB 共计消费的数据4768.3716MB4768.3716MB
MB.sec 每秒消费的数量265.8844MB 每秒265MB445.6006 每秒445MB
data.consumed.in.nMsg 共计消费的数量50000005000000
nMsg.sec 每秒的数量278800.0446 每秒27.8W467246.0518 每秒46.7W
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值