Kafka Stream:发生REBALANCE时处理器对象发生什么

时间:2020-03-03 10:53:02

标签: apache-kafka apache-kafka-streams

1)我们使用低级处理器API。当发生重新平衡时, 处理器对象被重新初始化并再次调用init方法?

2)REBALANCE分区是否特定(单个应用程序具有多个 消耗不同分区的线程)或整个Kafka流, 我认为稍后是因为它是Stream状态?

1 个答案:

答案 0 :(得分:2)

1)我们使用低级处理器API。当发生重新平衡时, 处理器对象被重新初始化并再次调用init方法?

基本上,在旧版本(2.3.x或更早版本)中,启动StreamThread时,它将首先触发重新平衡,并在分配分区后创建任务并进行相应的init()调用。对于现有的StreamThread,当触发重新平衡时,所有任务都将挂起(即,对close()进行了调用)并重新分配,并重新启动了新任务。

在较新的版本(2.4.x和更高版本)中,将完成增量重新平衡,因此在重新平衡期间不再暂停任务。

2)REBALANCE分区是否特定(单个应用程序具有多个 消耗不同分区的线程)或整个Kafka流, 我认为稍后是因为它是Stream状态?

你是对的!正如在此blog中引用的:

Kafka Streams使用它来分配任务和分区给 应用程序流实例。

此博客讨论了Kafka重新平衡及其在分配给应用程序流实例方面的用途。

让我知道是否有帮助!