消费者组数量对Kafka性能有影响吗

Ale*_*vic 9 message-queue publish-subscribe bigdata messagebroker apache-kafka

在试图深入了解 Kafka 分发模型时,StackOverflow 的一句话让我兴奋不已,我无法得到确认或否认。

因此,订阅者组越多,性能就越低,因为 kafka 需要将消息复制到所有这些组并保证总​​顺序。

据我从 Kafka 文档中了解到,多个消费者组的行为与单个消费者类似。代理内不会进行复制,因为每个消费者对于某个分区都有自己的偏移量。那么,组的数量不应产生任何显着的开销,所有数据都位于一个位置,只是偏移量不同。那是对的吗?

如果这是正确的,那么实际上无法在不影响吞吐量的情况下引入多个不相交的消费者,因为所有消费者总是查询所有分区,并且引入了某种复制。请注意,这与消费者线程的数量无关,线程只会提高消费者性能,据我所知,它们不会干扰代理操作。

Ale*_*vic 7

我自己找到了答案,它位于Kafka 0.9 及更高版本的新消费者API 文档中:

从概念上讲,您可以将消费者组视为恰好由多个进程组成的单个逻辑订阅者。作为一个多订阅者系统,Kafka 自然支持给定主题拥有任意数量的消费者组,而无需复制数据(额外的消费者实际上相当便宜)。

底线:不,多个消费者组不会降低性能,至少不会显着降低性能。


hal*_*lil 2

它不会影响 kafka 进程的性能,但由于 2 个或更多消费者组意味着从 kafka 服务器读取的数据增加了 2 倍或更多,因此如果您有大量消费者组,它会影响传出流量的网络利用率。此外,数据主要是从内存中读取的,不会影响性能,因为内存比网络通信快得多。