与Kafka Streams一起分发工作

时间:2016-07-04 09:36:44

标签: apache-kafka apache-kafka-streams

我正在使用Kafka Streams对Kafka主题进行并发工作。

该流具有以下形式

stream(topic)
 .map(somefunction)
 .through(secondtopic)

我已经将KStreams设置为有15个工作线程,但似乎线程之间的工作没有正确平衡(或根本没有)。我的设置可能有问题吗?我期待工作将在工作线程中均匀分布,但似乎情况并非如此。

snapshot from jvisualvm

1 个答案:

答案 0 :(得分:12)

您只能拥有与输入Kafka主题分区一样多的线程。

一个分区内的消息由单个线程处理,以提供消息传递的总订单。

实际上,在KafkaStreams中,输入主题分区在任务而不是消息中均匀分布。

因此,只有当消息在分区之间保持平衡时,才能在线程之间平衡工作。

要获得有关线程模型的更多信息,请查看Confluent documentation