假设:我的代码使用扇出模型(单个分区多个消费者)
制作人将消息M1-M10插入kafka
我启动消费者1(C1),它开始处理消息。在M3上,我开始第二个消费者。
消费者2(C2)现在开始处理M1然后移动到下一条消息。同时C1继续。
因此C1总是领先C2,C2只是重新处理C1已经完成的相同消息。
因此,添加更多消费者对可扩展性没有任何帮助,或者看起来如此。我一定是误解了文档。
答案 0 :(得分:0)
因此,添加更多消费者对可扩展性没有任何帮助
这是正确的。如果有多个消费者从同一个分区读取,则无法实现任何并行性。
Kafka中的缩放单位是分区:
日志中的分区有多种用途。首先,它们允许日志扩展到超出适合单个服务器的大小。每个单独的分区必须适合托管它的服务器,但主题可能有许多分区,因此它可以处理任意数量的数据。其次,它们充当了并行性的单位 - 更多的是在一点上。 - Documentation
因此,为了扩展您描述的情况,您必须对消费者正在阅读的主题进行分区。然后,当您可以添加消费者时,您可以实现并行性。