Apache kafka Kafka在重新分区时流式处理线程数
我有一个Kafka Streams应用程序,从一个Kafka主题中读取5个分区 然后对数据进行多次聚合/重新分区 我试图找到这个场景中线程数量的建议,但发现很难理解。报告内容如下:Apache kafka Kafka在重新分区时流式处理线程数,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我有一个Kafka Streams应用程序,从一个Kafka主题中读取5个分区 然后对数据进行多次聚合/重新分区 我试图找到这个场景中线程数量的建议,但发现很难理解。报告内容如下: 只要有输入,就可以启动应用程序的任意多个线程 卡夫卡主题分区 这意味着在我的例子中,5个线程是有效线程的最大数量 但是,声称重新分区会使最大有效线程数加倍: 。。。此主题是使用相同的主题自动创建的 作为源主题的分区数,这意味着我们的应用程序 现在从16个分区读取8个线程,从而创建某种 争论的焦点 这对我来说也是合理的
只要有输入,就可以启动应用程序的任意多个线程 卡夫卡主题分区 这意味着在我的例子中,5个线程是有效线程的最大数量 但是,声称重新分区会使最大有效线程数加倍: 。。。此主题是使用相同的主题自动创建的 作为源主题的分区数,这意味着我们的应用程序 现在从16个分区读取8个线程,从而创建某种 争论的焦点 这对我来说也是合理的,因为卡夫卡流也必须从它创建的内部主题中阅读
那么,有效线程的最大数量是5个分区还是5*(重新分区)?您可以启动任意数量的线程。但是,只有一定数量的线程将被利用,而所有其他线程将处于空闲状态 最大使用线程数是创建的任务数 拓扑分为子拓扑,每个子拓扑的输入主题分区数决定了每个子拓扑创建的任务数。如果您配置了备用任务,那么您也可以获得可以利用线程的其他任务 一般来说,很难预先知道创建了多少任务卡夫卡流。您可以通过
拓扑#descripe()
获取子拓扑。如果所有主题都有相同数量的分区,那么任务的数量将是\numPartition*\numsubtologies
文档是特意简化的,因为任务的确切数量很难提前确定,因为存在许多依赖项。此外,通常每个任务不需要一个线程,经验法则足以让您开始。谢谢您的回答。在文件系统中,我在/tmp/kafka streams/MY_APP/中有很多dir,比如0_0。。9_4. 这些目录的计数是任务的数量(因此是使用的线程的最大数量)?是。这些是任务目录。太好了。谢谢