如果消费者不仅仅是分区,那么 kafka 消费者如何工作

Sen*_*hil 1 apache-kafka

任何人都可以解释并指导我链接或资源来阅读有关卡夫卡消费者在以下场景中如何工作的信息。

  1. 一个消费者组有5个消费者,主题有3个分区(kafka如何决定)

  2. 一个Consumer group有5个consumer,topic有10个partition(kafka如何分担负载)

  3. 两个消费者组,每个消费者组有 1 个消费者,kafka 集群有 2 个服务器,其中一个主题在节点 1 和节点 2 之间进行分区,当来自不同组的消费者订阅一个分区时,如何避免重复。

上述可能不是配置 kafka 时的最佳实践,但我需要知道它是如何处理的。

提前致谢。

ppa*_*rno 7

分配分区的不是Kafka本身,而是消费者之一。第一个加入消费者组的消费者将被选为“领导者”,我们将开始将分区分配给其他消费者。当然,每次有新的消费者加入该组时,Kafka“控制器”都会让领导者消费者知道这一点,并开始重新平衡重新分配分区。消费者离开消费组也是一样的。

为了确认消费者参与其中,分区分配的策略由partition.assignment.strategy消费者配置中的属性指定。默认值为 ,RangeAssignor其他值为RoundRobinAssignorStickyAssignor。您可以在这里找到有关它们如何工作的更多信息:

https://kafka.apache.org/21/javadoc/org/apache/kafka/clients/consumer/RangeAssignor.html https://kafka.apache.org/21/javadoc/org/apache/kafka/clients/consumer /RoundRobinAssignor.html https://kafka.apache.org/21/javadoc/org/apache/kafka/clients/consumer/StickyAssignor.html

话说回来,在你的场景中具体会发生什么?

  1. 3 个消费者每人将获得一个分区。另外2个将闲置。
  2. 每个消费者将获得 2 个分区
  3. 使用不同的消费者组意味着纯粹的发布/订阅,其中消费者组获得相同的消息。在您有 1 个主题和 2 个分区(在 2 个代理上)的情况下,位于不同消费者组中的两个消费者将从所有 2 个分区获取相同的消息。如果消费者属于不同消费者群体,那么你就无法避免重复,这就是 Kafka 的工作原理。