多个主题的一个 kafka 消费者与每个主题/分区的一个消费者

raj*_*ota 5 apache-kafka

我正在研究数据摄取用例,其中数据来自多个 主题,并且必须根据主题名称推送到多个表。我试图理解为所有主题拥有 一个消费者与为每个主题/分区拥有一个消费者有什么性能差异

Mic*_*son 2

这两种方案之间的性能差异取决于代理、分区的数量和预期吞吐量。

当代理、分区和吞吐量的数量很高时,如果所有分区只有一个消费者,则很可能无法处理所有流量。

例如,如果您有 5 个代理,每个代理有 5 个分区,每个分区的流量为 5MB/s:

  • 如果您有一个消费者:它将需要与每个代理建立连接,并且必须处理 5 x 5 x 5 MB/s = 125MB/s。根据您的消费者配置,这可能不可行。即使您可以处理 125MB/s,如果您最终添加更多分区,也无法很好地扩展。

  • 如果您有多个消费者:每个消费者将获取分区的子集。如果有 5 个消费者,每个消费者只需处理 25MB/s,这对于标准 VM 来说很容易实现。

Kafka 的消费者组功能使得动态添加消费者变得非常容易。因此,您可以从一个消费者开始,然后在吞吐量增加时添加更多消费者。