Kafka是一个异步消息传递队列。 Kafka使用者,使用来自Kafka的消息并进行一些处理,例如更新数据库或进行网络呼叫。 如果您刚接触Kafka概念,请阅读我的有关Kafka基本概念的博客。
如我们所见,Kafka消费者可能会花一些时间进行操作。 这意味着消费者可能无法跟上消息生成的速度,从而增加了延迟。 滞后是尚未读取的新消息的数量。
我们使用Kafka等异步消息传递队列获得的好处之一是,生产者和消费者可以以自己的速度进行读写。 但是,处理速度慢的消费者可能会导致卡夫卡的滞后时间过长。 卡夫卡(Kafka)解决此问题的方法是利用消费者群体。
什么是消费者组?
消费者群是一个小组中多个消费者的分组机制。 数据在组的所有使用者之间平均分配,组中没有两个使用者接收相同的数据。 让我们查看有关它的更多详细信息。
从Kafka消费时,消费者可以向Kafka注册一个特定的组ID。 使用相同组ID注册的消费者将属于一个组。 组ID在卡夫卡消费中起着至关重要的作用。 消费者将只能从Kafka分配给该主题的分区中消费。
Kafka如何将分区分配给使用者?
在将分区分配给使用者之前,Kafka首先会检查是否存在具有给定组ID的现有使用者。
如果不存在具有给定组ID的现有使用者,它将为该新使用者分配该主题的所有分区。 如果已经有两个使用给定组ID的消费者,而第三个消费者想使用相同的组ID消费。 它将在所有三个使用者之间平均分配分区。 不会将具有相同组ID的两个使用者分配到同一分区。
假设有一个包含4个分区和两个使用者的主题,使用者A和使用者B希望通过组ID" app-db-updates-consumer"从中使用。