我正在使用Kafka Streams对Kafka主题进行并发工作。
该流具有以下形式
stream(topic)
.map(somefunction)
.through(secondtopic)
我已经将KStreams
设置为有15个工作线程,但似乎线程之间的工作没有正确平衡(或根本没有)。我的设置可能有问题吗?我期待工作将在工作线程中均匀分布,但似乎情况并非如此。
答案 0 :(得分:12)
您只能拥有与输入Kafka主题分区一样多的线程。
一个分区内的消息由单个线程处理,以提供消息传递的总订单。
实际上,在KafkaStreams中,输入主题分区在任务而不是消息中均匀分布。
因此,只有当消息在分区之间保持平衡时,才能在线程之间平衡工作。
要获得有关线程模型的更多信息,请查看Confluent documentation