Kafka Streams - 多个联接和单个实例中的线程数

时间:2017-07-20 14:12:09

标签: apache-kafka-streams

我有一个用例来对这两个主题进行多次连接,

让我们说,我有主题A(2个分区)和主题B(2个分区)并运行KafkaStreams应用程序的单个实例。

我有一个用例来查找两个主题之间的休息,遗漏和错过,所以我正在执行以下3个操作,

A.join(B)
B.leftJoin(A)
A.leftJoin(B)

根据文档,将为每个拓扑创建两个任务(max(2,2))和总共6个任务,即

 1. A.join(B)  - two tasks created - each task is assigned two
    partitions 
 2. B.leftJoin(A) - two tasks created - each task is assigned
    two partitions 
 3. A.leftJoin(B) - two tasks created - each task is
    assigned two partitions

由于我正在运行单个实例,为了扩展,我计划配置num.stream.threads = 6,并为每个线程分配一个任务。

我的上述理解是否正确?如果我错了,请纠正我。

先谢谢。

此致 Sathish

1 个答案:

答案 0 :(得分:1)

来自汇合文件:

  

Kafka Streams提供的默认实现是   DefaultPartitionGrouper,为每个任务分配最多一个   每个源主题分区的分区;因此,   生成的任务数等于最大分区数   在输入主题中。 [1]

因此,如果您没有覆盖partition.grouper配置,则任务数量应为2。

链接: [1] http://docs.confluent.io/current/streams/developer-guide.html#optional-configuration-parameters