gpt4 book ai didi

java - 流处理器的 close() init() 方法 : Behaviour of Stream thread when rebalance happens?

转载 作者:行者123 更新时间:2023-12-02 08:57:52 25 4
gpt4 key购买 nike

我想知道 Kafka 流 的行为(我使用的是低级 Java API)。我通过实现接口(interface) org.apache.kafka.streams.processor.Processor 来实现流处理器。

org.apache.kafka.streams.processor.Processor 有以下方法:

void init(ProcessorContext 上下文);

无效关闭();

假设 kafka 主题有 6 个分区,在我的流应用程序中,它有 num.stream.threads=1 并且有 6 个流应用程序实例 在不同的机器上运行。因此,这意味着每个流线程将仅分配一个分区。

假设其中一台机器崩溃,那么我们只剩下五台机器。现在,这将触发重新平衡,当它发生时,我有以下问题:

  • 重新平衡发生时 StreamThread 是否会死亡?由于 StreamThread 是一个线程,因此在重新平衡期间它们是保持“Activity ”状态还是所有 Stream 线程都被“杀死”并再次创建?

  • 创建 StreamProcessor 实例时或每次重新平衡时或创建 StreamThread 时是否调用 init()/close() ?基本上想知道在什么阶段调用这些方法以及在创建处理器实例或创建流任务时重新平衡/创建流线程/的关系。

  • 如何让客户端以编程方式离开群组?然而,我确实对此进行了搜索,但得到了无关的结果。

最佳答案

Does StreamThread die when a re-balance happens? As StreamThread is a thread, so during rebalancing do they remain "alive" or all Stream threads are "killed" and created again?

不,线程保持 Activity 状态。 (显然只有来自崩溃机器的线程才会死掉。)

Are init() / close() called when creating StreamProcessor instance OR for each re-balancing OR when StreamThread is created? Basically want to know at what stage these methods are called and relationship w.r.t rebalance/ creation of stream thread / while a processor instance is created or when creating stream-tasks.

这取决于版本。在旧版本(2.3.x 或更旧)中,在重新平衡期间,所有任务都会挂起(即暂停),因此将调用 close()。如果恢复(或迁移并因此重新创建)现有任务,则调用 init()。因此,基本上当 StreamThread 启动时,它首先触发重新平衡,分配分区后,创建任务并进行相应的 init() 调用。对于现有的 StreamThreads,当触发重新平衡时,所有任务都会暂停(即调用 close())并重新分配,并且重新启动新任务.

在较新的版本(2.4.x 及更高版本)中,完成了增量重新平衡,因此任务在重新平衡期间不再暂停。仅当任务从一个 StreamThread 迁移到另一个 StreamThread 时,该任务才会在一个线程上关闭并在新线程上重新初始化。

How can I make client leave group programmatically? I did search on this, however, getting irrelevant results.

不知道你到底是什么意思。但是,您可以调用 KafkaStreams#close() 来停止其所有本地 StreamThreads,因此这些线程最终会离开组。

关于java - 流处理器的 close() init() 方法 : Behaviour of Stream thread when rebalance happens?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60375829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com