大数据开发——消息队列Kafka入门与应用(四)

205 阅读2分钟

「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战」。

3.  基础操作

图片.png

3.1  创建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

3.2  生产消息到Kafka

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

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

4.  Kafka基准测试

4.1  基准测试

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

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

测试步骤:

1. 启动Kafka集群

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

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

4. 观察结果

4.1.1.1  创建topic

bin/kafka-topics.sh --zookeeper node1.itcast.cn:2181 --create --topic benchmark --partitions 1 --replication-factor 1

4.1.1.2  生产消息基准测试

在生产环境中,推荐使用生产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

bin/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模式

测试结果:

吞吐量——93230.531231 records/sec每秒9.3W条记录

吞吐速率——(86.64 MB/sec)每秒约89MB数据

平均延迟时间——352.12 ms avg latency

最大延迟时间——1001.00 ms max latency

4.1.1.3  消费消息基准测试

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

bin/kafka-consumer-perf-test.sh

  • --broker-list 指定kafka集群地址

  • --topic 指定topic的名称

  • --fetch-size 每次拉取的数据大小

  • --messages 总共要消费的消息个数

data.consumed.in.MB共计消费的数据4723.3716MB
MB.sec每秒消费的数量443.1206每秒443MB
data.consumed.in.nMsg共计消费的数量5000000
nMsg.sec每秒的数量462146.0518每秒46.2W条