Kafka throttle producer 基于消费者滞后

Kafka throttle producer based on consumer lag

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

生产者和消费者是解耦的。

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

Consumer 从 Brokers 消费数据。消费者不知道有多少生产者生产消息。即使是相同的消息也可以由不同组中的多个消费者使用。例如,一些消费者可以比另一个消费者消费得更快。

您可以在 Apache Kafka 网页上阅读有关 Producer and Consumer 的更多信息

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

无法抑制 producer/producers 对消费者性能的影响。

In my scenario I don't want to loose events if the disk size is exceeded before a message is consumed

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