【发布时间】:2020-03-03 19:53:32
【问题描述】:
1) 我们使用低级处理器 API。当重新平衡发生时 处理器对象被重新初始化并再次调用 init 方法?
2) 特定于 REBALANCE 分区(单个应用程序具有多个 消耗不同分区的线程)或整个 Kafka 流, 我稍后假设,因为它是 Stream 状态?
【问题讨论】:
标签: apache-kafka apache-kafka-streams
1) 我们使用低级处理器 API。当重新平衡发生时 处理器对象被重新初始化并再次调用 init 方法?
2) 特定于 REBALANCE 分区(单个应用程序具有多个 消耗不同分区的线程)或整个 Kafka 流, 我稍后假设,因为它是 Stream 状态?
【问题讨论】:
标签: apache-kafka apache-kafka-streams
1) 我们使用低级处理器 API。当重新平衡发生时 处理器对象被重新初始化并再次调用 init 方法?
在旧版本(2.3.x 或更早版本)中,基本上,当 StreamThread 启动时,它首先会触发重新平衡,分配分区后,会创建任务并进行相应的 init() 调用。对于现有的 StreamThreads,当触发重新平衡时,所有任务都会暂停(即调用 close())并重新分配,并重新启动新任务。
在较新的版本(2.4.x 和更新的版本)中,增量重新平衡已完成,因此在重新平衡期间任务不再暂停。
2) 特定于 REBALANCE 分区(单个应用程序具有多个 消耗不同分区的线程)或整个 Kafka 流, 我稍后假设,因为它是 Stream 状态?
你是对的!正如blog中所引用的:
Kafka Streams 使用它来分配任务和分区到 应用程序流实例。
此博客讨论 Kafka 重新平衡以及分配给应用程序流实例的用法。
如果有帮助请告诉我!!
【讨论】: