gpt4 book ai didi

apache-kafka - Kafka Streams线程号

转载 作者:行者123 更新时间:2023-12-04 22:03:07 25 4
gpt4 key购买 nike

我是Kafka Streams的新手,目前对Kafka Streams应用程序的最大并行性感到困惑。我经过以下链接,但没有得到我想要找到的答案。
https://docs.confluent.io/current/streams/faq.html#streams-faq-scalability-maximum-parallelism

如果我有2个输入主题,一个有10个分区,另一个有5个分区,并且只有一个Kafka Streams应用程序实例正在运行以处理这两个输入主题,在这种情况下,我可以拥有的最大线程数是多少? 10或15?

最佳答案

If I have 2 input topics, one have 10 partitions and the other have 5 partitions



听起来不错。因此,您总共有15个分区。假设您有一个简单的处理器拓扑,没有联接和聚合,因此所有15个分区都只是无状态转换。

然后,这15个输入分区中的每个分区都将映射到单个Kafka Streams“任务”。如果您有1个线程,则这15个任务的输入将由该1个线程处理。如果您有15个线程,则每个任务将有一个专用线程来处理其输入。因此,您可以运行具有15个线程的1个应用程序或具有1个线程的15个应用程序,这在逻辑上是相似的:您可以在15个线程中处理15个任务。唯一的区别是15个具有1个线程的应用程序使您可以将负载分散到整个JVM中。

同样,如果启动该应用程序的15个实例,每个实例具有1个线程,则将为每个应用程序分配1个任务,并且每个应用程序中的每个1个线程将处理其给定的1个任务。

what is the maximum thread number I can have in this case? 10 or 15?



您可以将最大线程数设置为任何值。如果所有任务的线程数都超过任务总数,那么某些线程将保持空闲状态。

我建议您阅读 https://docs.confluent.io/current/streams/architecture.html#parallelism-model,如果您还没有的话。另外,研究应用程序启动时生成的日志。每个线程都会记录它分配的任务,如下所示:
[2018-01-04 16:45:26,859] INFO (org.apache.kafka.streams.processor.internals.StreamThread:351) stream-thread [entities-eb9c0a9b-ecad-48c1-b4e8-715dcf2afef3-StreamThread-3] partition assignment took 110 ms.
current active tasks: [0_0, 0_2, 1_2, 2_2, 3_2, 4_2, 5_2, 6_2, 7_2, 8_2, 9_2, 10_2, 11_2, 12_2, 13_2, 14_2]
current standby tasks: []
previous active tasks: []

关于apache-kafka - Kafka Streams线程号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48106568/

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