导入
消费者与消费者组
本课程讲解了 Kafka 中消费者和消费者组的概念。
消费者(或称为读者)从 Kafka 主题中接收消息。表示消费者概念的类是 KafkaConsumer。消费者订阅主题后,即可接收生产者写入该主题的消息。通常情况下,每个消费者都属于一个消费者组。当单个或多个生产者向主题写入消息的速度超过单个消费者读取消息的速度时,消费者应用程序会逐渐落后于消息的生成速度。Kafka 通过允许消费者组中的多个消费者协同工作来读取主题中的消息,从而缓解这一问题。
以下是关于消费者与主题分区之间配置关系的几种情况说明:
- 主题中的分区数等于消费者组中的消费者数量:在这种情况下,每个消费者读取一个分区。
...
Consumers equal number of partitions
- 主题中的分区数多于消费者组中的消费者数量:在这种情况下,部分或全部消费者将从多个分区读取消息。
...
Partitions outnumbers consumers
- 单个消费者:在消费者组仅包含一个消费者的情况下,所有分区均由该消费者读取。
...
Single consumer reads all partitions
- 主题中的分区数少于消费者组中的消费者数量:在这种情况下,部分消费者将处于空闲状态。增加消费者组中的消费者数量超过主题分区数是没有意义的,因为总会有一些消费者无法分配到分区而保持闲置。
...
Consumers outnumber partitions
增加消费者组中的消费者数量是 Kafka 在主题消息量增加时实现扩展的主要机制。因此,通常建议在主题中设置足够多的分区,以便在负载上升时能够灵活增加消费者数量。
当多个应用程序从同一主题读取消息时,每个应用程序可以拥有自己的消费者组并订阅该主题。各个消费者组彼此独立,各自独立地读取主题中的所有消息,不受其他消费者组的状态或进度影响。