Kafka-stream线程模型

时间:2019-07-09 08:51:42

标签: apache-kafka-streams

可以肯定地说,在Kafka Stream中,所有任务都代表分区的订阅,而线程代表使用者?

也就是说,如果有8个分区,则总会有8个任务。但是,使用者的数量取决于可用线程的数量。这些分布在整个Application实例中。因此,一个应用程序实例可以表示2个使用者,只要它具有2个与之关联的线程。

对于完全并行性,对于一个具有8个分区的主题,我们可以有2个应用程序实例,每个实例具有4个线程,或者一个应用程序实例具有8个线程,依此类推。

1 个答案:

答案 0 :(得分:1)

是的,任务数将等于任何Kafka流应用中的最大分区数

如果有两个主题“ A”和“ B”,每个主题有8个分区。所以不行。最大任务数将为max(8,8)=8。现在每个使用者代表一个线程。如果将线程设置为2,那么2个线程将在彼此之间分配任务。每个线程将处理4个任务。

  

对于完全并行性,对于具有8个分区的主题,我们可以有2个   每个具有4个线程或一个应用程序的应用程序实例   具有8个线程的实例,依此类推。

您应该始终使用线程数到最大分区数,以实现完全并行。您可以在多个应用程序实例中执行一个,也可以一个。

这是一个很好解释的Kstream线程模型。

https://docs.confluent.io/current/streams/architecture.html#parallelism-model