扩展kafka消费者应用程序

时间:2018-04-08 17:49:25

标签: apache-kafka kafka-consumer-api

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

编辑:

  1. 第一个主题=> 5个分区
  2. 第二个主题=> 3个分区
  3. 第三个主题=> 2个分区
  4. 第四个主题=> 1个分区
  5. 分区的总数= 11 。所以我可以运行多少个应用程序。

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

2 个答案:

答案 0 :(得分:0)

在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

答案 1 :(得分:0)

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

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

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

  

请参阅此https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html