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

流具有以下形式

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

我已将KStreams设置为具有15个工作线程,但似乎工作在线程之间的平衡不正确(或根本不平衡)。我的设置可能有问题吗?我原以为工作将平均分布在工作线程之间,但事实并非如此。

snapshot from jvisualvm

最佳答案

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

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

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

因此,只有在分区之间的消息平衡良好的情况下,工作才能在线程之间平衡良好。

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

关于apache-kafka - Kafka Streams的工作分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38181395/

10-16 12:50
查看更多