《二十二kfaka集群controller,Reblance和HW》

kafka集群中的broker在zk中创建历史临时节点,序号最小的节点(最先创建的节点)将作为集群的controller,负责管理整个集群的所有分区和副本的状态:
1.当某个分区的leader出现故障时,由控制器负责为该分区选举新的leader副本。选举的规则是从isr集合中最左侧获得。
2.当检测某个分区的ISR集合发生变化时,由控制器通知所有breoker更新其元数据信息。
3.当时用kafka-topics.sh脚本为某个topic增加分区数量时,同样还是由控制器负责让新分区被其他节点感知到。
Reblance机制
前提是:消费者没有指明分区消费。消费组里面的消息和分区的关系变化,那么就会触发reblance机制。
这个机制会重新调整消费者消费哪个分区。
在触发reblance机制之前,消费者消费哪个分区有三种策略:
1.range:通过公式计算摸一个某个消费者消费哪个分区:(前面的消费者是以分区总数/消费者数量+1,之后的消费者是以分区总数/消费者数量)
2.轮询:大家轮着消费
3.sticky:在触发了reblance后,在消费者消费的原分区不变的基础上进行调整。如果这个策略没有开,那么就要进行全部的重新分配,建议开启。

 

 

 

hw(消费者最大可见偏移量,需leader同步完成以后消费者才能消费到这条消息)leo(消费者最后消息的消息位置log-end-offset)

 

leo那条线维持在4的位置,
leader在5的位置被称为HW,but这个位置数据还没同步给后面两个分区
等leader为5同步给后面两个后,才能被消费者消费

 

posted @ 2022-02-02 16:51  余生请多指教ANT  阅读(31)  评论(0编辑  收藏  举报