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