消费者就是从Kafka集群消费数据的客户端,下图展示了一个消费者从主题中消费数据的模型。
上图展示的是单消费者模型。单消费者模型存在一些问题。如果Kafka上游生产的数据很快,超过了单个消费者的消费速度,那么就会导致数据堆积。视频讲解如下:
为了解决单消费者存在的问题,Kafka提出了消费者组的概念。所谓消费者组就是一组消费者的集合。消费者是以消费者组(Consumer Group)的方式工作,即一个消费者组由一个或者多个消费者组成,它们共同消费一个主题中的消息。在同一个时间点上,主题中分区的消息只能由一个消费者组中的一个消费者进行消费,而同一个分区的消息可以被不同消费者组中的消费者进行消费,如下图所示。
上图中的消费者组由三个消费者组成,并且主题由4个分区组成。其中消费者A消费读取一个分区的数据,消费者B消费读取两个分区的数据,而消费者C也消费读取一个分区的数据。在这种情况下,消费者可以通过水平扩展的方式同时读取大量的消息。另外,如果一个消费者失败了,那么其他的组成员会自动读取之前失败的消费者读取的分区数据。
Kafka使用消费者分组的概念来允许多个消费者共同消费和处理同一个主题中的消息。组中消费者成员是动态维护的,如果一个消费者处理失败了,那么之前分配给它的分区将被重新分配给分组中其他消费者;同样,如果分组中加入了新的消费者,也将触发整个分区的重新分配,每个消费者将尽可能的分配到相同数目的分区以达到新的均衡状态。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。