gpt4 book ai didi

multithreading - Kafka流中通过线程分配的策略是什么?

转载 作者:行者123 更新时间:2023-12-03 13:16:00 25 4
gpt4 key购买 nike

我在代码中少做这样的设置:

// loop over the inTopicName(s) {

KStream<String, String> stringInput = kBuilder.stream( STRING_SERDE, STRING_SERDE, inTopicName );
stringInput.filter( streamFilter::passOrFilterMessages ).map( processor_i ).to( outTopicName );

// } end of loop

streams = new KafkaStreams( kBuilder, streamsConfig );
streams.cleanUp();
streams.start();

如果有num.stream.threads> 1,如何将任务分配给已准备和分配的线程(在循环中)?

我想(不确定)有线程池,并且使用某种循环策略将任务分配给线程,但是它可以在运行时完全动态地完成,也可以在开始时通过创建过滤/映射来一次完成。结构体。

特别是当一个主题正在处理大量计算任务而另一个主题却没有计算任务时,我感到非常有趣。应用程序是否会因为所有线程都分配给处理器而浪费时间,这很耗时。

让我们玩一下场景: num.stream.threads=2,每个主题的 no. partitions=4no. topics=2(huge_topic和slim_topic)
我的问题中的循环在应用启动时完成了一次。如果在循环中定义了2个主题,并且我从一个主题知道消息是权重消息(huge_topic),而从另一个主题是轻量级消息(slim_topic)。
来自num.stream.threads的两个线程是否可能仅忙于来自huge_topic的任务?来自slimm_topic的消息必须等待处理?

最佳答案

If there is e.g. num.stream.threads > 1, how tasks are assigned to the prepared and assigned (in the loop) threads?



使用分区分组程序将任务分配给线程。您可以阅读有关 here的信息。 AFAIK是在重新平衡后调用的,因此它不是一个非常动态的过程。就是说,我认为没有饥饿的选择。

关于multithreading - Kafka流中通过线程分配的策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643038/

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