如何添加更多的消费者来增加kafka处理的可扩展性

时间:2018-02-23 00:20:23

标签: apache-kafka

假设:我的代码使用扇出模型(单个分区多个消费者)

制作人将消息M1-M10插入kafka

我启动消费者1(C1),它开始处理消息。在M3上,我开始第二个消费者。

消费者2(C2)现在开始处理M1然后移动到下一条消息。同时C1继续。

因此C1总是领先C2,C2只是重新处理C1已经完成的相同消息。

因此,添加更多消费者对可扩展性没有任何帮助,或者看起来如此。我一定是误解了文档。

1 个答案:

答案 0 :(得分:0)

  

因此,添加更多消费者对可扩展性没有任何帮助

这是正确的。如果有多个消费者从同一个分区读取,则无法实现任何并行性。

Kafka中的缩放单位是分区:

  

日志中的分区有多种用途。首先,它们允许日志扩展到超出适合单个服务器的大小。每个单独的分区必须适合托管它的服务器,但主题可能有许多分区,因此它可以处理任意数量的数据。其次,它们充当了并行性的单位 - 更多的是在一点上。 - Documentation

因此,为了扩展您描述的情况,您必须对消费者正在阅读的主题进行分区。然后,当您可以添加消费者时,您可以实现并行性。