5

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

流具有以下形式

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

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

来自 jvisualvm 的快照

4

1 回答 1

12

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

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

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

因此,只有当消息在分区之间得到很好的平衡时,线程之间的工作才能得到很好的平衡。

要获取有关线程模型的更多信息,请查看Confluent 文档

于 2016-07-04T16:32:59.723 回答