【问题标题】:Scaling up kafka consumer applications扩展 kafka 消费者应用程序
【发布时间】:2018-04-12 01:53:13
【问题描述】:

假设我有一个消费者组订阅了 4 个主题,每个主题的分区是:-

已编辑:

  1. 第一个主题 => 5 个分区
  2. 第二个主题 => 3 个分区
  3. 第三个主题 => 2 个分区
  4. 第四个主题 => 1 个分区

分区总数 = 11。我总共可以运行多少个应用程序。

5(max number of partitions in input topics) or 11?

【问题讨论】:

  • 你的意思是每个主题可以并行读取多少消费者?
  • 是的,我可以运行多少个应用程序
  • 每个应用程序有多少线程/消费者?假设 1,答案是分区的总和,而不是主题
  • 是的,只有一个线程。在 kafka 流中也是如此吗?

标签: apache-kafka kafka-consumer-api


【解决方案1】:

在 kafka 中,扩展消费者取决于分区号。

假设您有一个包含 3 个分区的主题。而且您有 2 个不同的消费者应用程序(不同的消费者群体),它们执行不同的工作。

您可以将每个消费者组的消费者数量扩展到最多 3 个。

  • 单个消费者(消费者组A)可以消费来自3个的消息 分区。
  • 两个消费者(同一个消费组)不能单消费 分区。

看图:https://hadoopabcd.files.wordpress.com/2015/04/consumer-group.png

阅读有关消费者群体博客系列的更多信息:https://dzone.com/articles/understanding-kafka-consumer-groups-and-consumer-l

【讨论】:

    【解决方案2】:

    在理想情况下,消费者组中消费者的数量应该等于分区的数量。如果不是这种情况,那么您可以拥有多个消费者组 kafka 提供来自不同消费者组的 2 个消费者可以从同一分区读取的功能。这完全取决于你的资源,你有多少资源来运行消费者。

    假设您有一个应用程序需要从 Kafka 主题读取消息,对它们运行一些验证,并将结果写入另一个数据存储。在这种情况下,您的应用程序将创建一个消费者对象,订阅适当的主题,并开始接收消息,验证它们并写入结果。这可能会在一段时间内运行良好,但是如果生产者向主题写入消息的速度超过了您的应用程序可以验证它们的速度怎么办?如果您仅限于单个消费者读取和处理数据,您的应用程序可能会越来越落后,无法跟上传入消息的速度。显然,需要从主题中扩展消费。就像多个生产者可以写入同一个主题一样,我们需要允许多个消费者从同一个主题中读取数据,从而在它们之间拆分数据。

    Kafka 消费者通常是消费者组的一部分。当多个消费者订阅同一个主题并属于同一个消费者组时,组中的每个消费者将接收来自主题中不同分区子集的消息。

    请参考这个https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多