当一个新的Consumer加入组时,Partition rebalance需要多长时间?什么因素会影响这一点?
在我的理解中,这些因素起作用:
- 消费者需要完成对上次轮询数据的处理。
- 协调器等待消费者发送JoinGroup请求-等待多长时间?
- 消费者发送同步组请求(接收JoinGroup响应和发送同步组请求之间是否有延迟)
在正常情况下,假设消费者立即处理数据,分区再平衡应该发生多长时间?
- Coordinator最多等待rebalance.timeout.ms(默认为1分钟)。如果消费者在此期间没有加入,则认为它已死亡。但是如果所有的消费者在此之前重新加入,协调器将不会再等待(我的假设)。 消费者在收到JoinGroup响应后立即发送同步组。Leader需要更多的时间(执行分区分配逻辑)。
来源:https://www.confluent.io/online-talks/everything-you-always-wanted-to-know-about-kafkas-rebalance-protocol-but-were-afraid-to-ask-on-demand/