
当有新的消费者加入到消费者组时,原本的分区就需要重新分配;比如一个topic有30个分区,原本只有两个消费者,每人负责15个分区,当新加入一个消费者时,并没有分区可以给他消费,只能是将30个分区重新分配。
每个消费者组都会有一个broker负责协调(称为group coordinator),各个消费者通过发送心跳的方式向组协调者同步状态,当有消费者一定时间没有给组协调者发送心跳或者有新的消费者加入到消费者组时,就会触发消费组的重平衡 *** 作。
新加入消费者触发重平衡:1.新加入消费者向组协调者发送joinGroup请求,携带订阅的topic信息2.此后组协调者收到组内其他消费者的心跳请求时,在响应中告诉消费者要重平衡3.组内原有消费者会重新发送joinGroup请求到组协调者4.组协调者根据发送joinGroup请求的先后选出消费者leader,将topic和分区信息响应给各个消费者5.被选为leader的消费者将分区分配好6.各消费者发送SyncGroup请求给组协调者请求新分配好的分区信息,其中消费者leader会携带分配好的分区信息7.组协调者将各个消费者负责的分区信息响应给消费者,重平衡完成消费者主动离开导致重平衡1.消费者发送leaveGroup请求给组协调者2.此后组协调者收到组内其他消费者的心跳请求时,在响应中告诉消费者要重平衡3.消费者会重新发送joinGroup请求到组协调者4.组协调者根据发送joinGroup请求的先后选出消费者leader,将topic和分区信息响应给各个消费者5.被选为leader的消费者将分区分配好6.各消费者发送SyncGroup请求给组协调者请求新分配好的分区信息,其中消费者leader会携带分配好的分区信息7.组协调者将各个消费者负责的分区信息响应给消费者,重平衡完成消费者失去心跳导致重平衡1.消费者一定时间内没有发送心跳信息给组协调者2.此后组协调者收到组内其他消费者的心跳请求时,在响应中告诉消费者要重平衡3.消费者会重新发送joinGroup请求到组协调者4.组协调者根据发送joinGroup请求的先后选出消费者leader,将topic和分区信息响应给各个消费者5.被选为leader的消费者将分区分配好6.各消费者发送SyncGroup请求给组协调者请求新分配好的分区信息,其中消费者leader会携带分配好的分区信息7.组协调者将各个消费者负责的分区信息响应给消费者,重平衡完成
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)