发生的情况:
1.消费组订阅了新的主题
2.消费组增加或减少了消费者
3.消费组订阅的主题修改了分区数量
如何判断有没有发生Rebalance呢?
检查消费组对应的broker日志,有没有类似于"(Re)join group" 之类的日志
如何给消费者分配分区呢
1.每个broker都有一个协调者组件,由协调者组件来分配,分配的策略可以配置在消费者参数里。
2.根据消费组id的hashcode来对位移主题分区数取余,得到的分区所在的broker即为这个消费组的协调者。
当kafka有第一个消费者时会自动创建位移主题:__consumer_offsets
broker端参数:
- Kafka 自动创建的分区数
offsets.topic.num.partitions 默认50- Kafka 自动创建的副本数
offsets.topic.replication.factor 默认3如果是自动提交位移,enable.auto.commit = true;consumer会根据 auto.commit.interval.ms这个配置一直写消息。会有一个Log Cleaner的线程去定期的Compact这些消息,即只保留最新的偏移量。
网友评论