基于消费者滞后的卡夫卡油门生产商

时间:2019-01-14 11:03:44

标签: apache-kafka kafka-consumer-api kafka-producer-api

是否有任何方法可以根据消费者滞后或其他消费者问题来暂停或限制Kafka生产商?生产者是否需要确定自己是否存在消费者滞后,然后自行节流?

3 个答案:

答案 0 :(得分:1)

生产者和消费者分离。

生产者将数据推送到存储在Kafka Brokers中的Kafka主题(分区主题)。生产者不知道谁和多久消费一次消息。

消费者使用来自Brokers的数据。消费者不知道有多少生产者产生这些消息。甚至相同的消息也可以被不同组中的多个使用者使用。例如,某些消费者可以比其他消费者更快地消费。

您可以在Apache Kafka网页上详细了解ProducerConsumer

答案 1 :(得分:1)

Kafka是基于Pub / Sub设计的。生产者将消息发布到集中主题。多个消费者可以订阅该主题。由于涉及多个消费者,因此您无法决定生产者的速度。一个消费者可能会很慢,其他消费者可能会很快。这也违反了设计原则,否则两个系统将紧密耦合。如果您有节流的用例,则应该评估其他框架,例如直接调用。

答案 2 :(得分:1)

不可能限制生产者对消费者表现的权衡。

  

在我的情况下,如果磁盘大小为   在消费消息之前已超出

要解决您的问题,您必须依靠Kafka提供的并行性。您的Kafka主题应具有多个分区,生产者必须使用不同的键来填充主题。因此,您的数据将分布在多个分区中,并带来一个使用者组,您可以在一组使用者中管理负载。分区中的所有数据都可以按顺序处理,这可能是相关的,因为您正在处理事件处理。