1)我们使用低级处理器API。当发生重新平衡时, 处理器对象被重新初始化并再次调用init方法?
2)REBALANCE分区是否特定(单个应用程序具有多个 消耗不同分区的线程)或整个Kafka流, 我认为稍后是因为它是Stream状态?
答案 0 :(得分:2)
1)我们使用低级处理器API。当发生重新平衡时, 处理器对象被重新初始化并再次调用init方法?
基本上,在旧版本(2.3.x或更早版本)中,启动StreamThread时,它将首先触发重新平衡,并在分配分区后创建任务并进行相应的init()调用。对于现有的StreamThread,当触发重新平衡时,所有任务都将挂起(即,对close()进行了调用)并重新分配,并重新启动了新任务。
在较新的版本(2.4.x和更高版本)中,将完成增量重新平衡,因此在重新平衡期间不再暂停任务。
2)REBALANCE分区是否特定(单个应用程序具有多个 消耗不同分区的线程)或整个Kafka流, 我认为稍后是因为它是Stream状态?
你是对的!正如在此blog中引用的:
Kafka Streams使用它来分配任务和分区给 应用程序流实例。
此博客讨论了Kafka重新平衡及其在分配给应用程序流实例方面的用途。
让我知道是否有帮助!