1 创集topic
./kafka-topics.sh --create --zookeeper 10.3.70.109:2181 --replication-factor 1 --partitions 1 --topic test
2 通过kafka-producer-perf-test.sh模拟生产数据, 此时我调用了两次,总共生产了10000000万数据
./kafka-producer-perf-test.sh --topic test --throughput -1 --num-records 5000000 --record-size 100 --producer-props bootstrap.servers=10.3.70.109:9092 ack=-1
3 通过kafka-console-consumer.sh 建立两个消费者
./kafka-console-consumer.sh --bootstrap-server=10.3.70.109:9092 --topic test --from-beginning --consumer-property group.id=test-group1 当kafka-producer-perf-test.sh模拟的500万数据生产完后, 准备调用第二次时创建test_group2从最新位移开始消费, 这样就是从5000000开始消费, test_group2最终只能消费5000000, 而test-group1会消费10000000万数据. ./kafka-console-consumer.sh --bootstrap-server=10.3.70.109:9092 --topic test --consumer-property group.id=test_group2
test-group1最终的消费个数:可以看到消费了1000万数据
image.png
test_group2最终消费的个数:可以看到只消费了500万数据
image.png
4 查看消费者组情况:
./kafka-consumer-groups.sh --bootstrap-server 10.3.70.109:9092 --describe --group test-group1
image.png
image.png
./kafka-consumer-groups.sh --bootstrap-server 10.3.70.109:9092 --describe --group test_group2
image.png
image.png
展示的几个参数:
TOPIC: 该消费者组消费的是哪些topic, 本例是只创建了一个topic, test, 所以只消费了test
PARTITION: 表示该消费者消费的是哪些分区, 本例创建topic时只有一个分区, 所以输出只有一行, 分区号为0
CURRENT-OFFSET: 表示消费者组最新消费的位移值, 此值在消费过程中是变化的
LOG-END-OFFSET: 表示topic所有分区当前的日志终端位移值, 因为我们生产了1000万数据, 所以此处是1000万
LAG: 表示滞后进度, 此值为LOG-END-OFFSET 与 CURRENT-OFFSET的差值, 代表的是滞后情况, 此值越大表示滞后严重, 本例最终LAG为0 说明没有消费滞后.
作者:kason_zhang
链接:https://www.jianshu.com/p/58276dd6e0e8