gpt4 book ai didi

apache-kafka - Kafka Streams 线程模型在同一实例和 JVM 上具有多个流

转载 作者:行者123 更新时间:2023-12-04 01:57:30 24 4
gpt4 key购买 nike

您好,我正在尝试对 kafka 流线程模型有更多的了解,我正在 confluent 文档中查看此示例 https://docs.confluent.io/current/streams/architecture.html#example

据我了解,此示例适用于单个“kafka 流应用程序”,在第一个图中,该应用程序部署在一台机器上并允许使用两个线程(可配置)。它将自身拆分为两个线程,导致 3 个独立的“任务”,我认为,它们彼此做同样的事情,它们只是并行化。我想我明白了。

我的问题是,如果我在同一台机器和同一 jvm 中部署第二个完全不同的“kafka 流应用程序”,它有自己唯一的客户端 ID 会怎么样。第二个 kafka 流应用程序是否能够使用与第一个相同的两个(共享)线程,或者第一个流是否独占它被允许使用的线程。

问这个问题的另一种方式可能是所需的最小线程数,等于机器上运行的独立 Kafka 流应用程序的数量?

最佳答案

线程由 KafkaStreams 实例拥有。因此,如果您创建并启动多个 KafkaStreams,每个实例都有自己的线程——它们不是共享的。

顺便说一句:任务的数量与 KafkaStreams 实例的数量和线程的数量无关。任务的数量取决于输入主题的分区数量以及拓扑 DAG 的结构。

此外,任务的数量有效地限制了整体并行度。每个任务都由一个线程执行。如果线程多于任务,一些线程将空闲,因为没有任务可以分配给它们。

还有一点:从并行的角度来看,启动一个 KafkaStreams 实例并将其配置为 3 个线程,或者启动三个 KafkaStreams,都没有区别> 每个实例都有一个线程。所有可用任务将均匀分布在所有可用线程上。

关于apache-kafka - Kafka Streams 线程模型在同一实例和 JVM 上具有多个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579555/

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