kafka

狂风中的少年 提交于 2020-12-11 17:48:59

故障与恢复[消费端] kafka_2.13-2.6.0

: 有三个broker[a,b,c] 创建topic:notice 分配了三个 partition[1,2,3] ,且副本数量为3,创建mygroup分组消费者为3个:consumer1,consumer2,consumer3

? 如何消费

写[控制台/脚本]
kafka-console-producer.bat --bootstrap-server 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 --topic notice --property parse.key=true

key msg
1 a1
2 b1
4 c1

读[控制台/脚本]
kafka-console-consumer.bat --bootstrap-server 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 --topic notice --group mygrop
三个消费者分别消费不同的 partition

消费者 msg
consumer1 b1
consumer2 a1
consumer3 c1

? 如果consumer1挂了,如何消费

写[控制台/脚本]

key msg
1 a2
2 b2
4 c2

读[控制台/脚本]
有两个 partition1 和 partition2 分配到了 consumer2 中,此时 consumer2 消费两条数据,注意 consumer2 会先消费完 partition1 再去消费 partition2 并不会去轮询消费partition 中的数据,这种情况下可能会造成乱序

消费者 msg
consumer2 a2
consumer2 c2
consumer3 b2

? 如果consumer1恢复了,如何消费

写[控制台/脚本]

key msg
1 a3
2 b3
4 c3

读[控制台/脚本]

此时三个消费端分别消费一个partition 中的数据。但相较与第一次,消费端消费的key 变了:最初key=2 的消息会被consumer1 消费,现在 key=2 被 consumer3 消费

消费者 msg
consumer1 c3
consumer2 a3
consumer3 b3

? 如果consumer1,consumer2挂了,如何消费

写[控制台/脚本]

key msg
1 a4
2 b4
4 c4

读[控制台/脚本]
三个partition 中的数据都被 consumer3 消费了

消费者 msg
consumer3 a4
consumer3 b4
consumer3 c4

? 如果consumer1,consumer2恢复,如何消费

写[控制台/脚本]

key msg
1 a5
2 b5
4 c5

读[控制台/脚本]
此时三个消费端分别消费一个partition 中的数据。但相较与第一次,消费端消费的key 变了

消费者 msg
consumer1 a5
consumer2 c5
consumer3 b5

最后看下kafka 三个partition 中的数据

Partition msg list
Partition 0 a1,a2,a3,a4,a5
Partition 1 c1,c2,c3,c4,c5
Partition 2 b1,b2,b3,b4,b5

结论: 看到生产者向 partition 中放入的数据一直没变, 变的是消费端它们自己完成对partition 的分配

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!