kafka引入消费组的原因剖析

一、消费者与消费组概念

消费者(cunsumer)负责订阅kafka中的主题(topic),并且从主题上拉取消息。与其他的一些消息中间件不同的是:在kafka的消费理念中还有一层消费组的概念,每个消费者都有一个对应的消费组。当消息发布到主题后,只会被投递给订阅它的每个消费组中一个消费者。

在这里插入图片描述

消费者与消费组

下面我们来看下消费组内的消费者个数变化时对应的分区分配演变。假设目前消费组内只有一个消费者c0,订阅了一个主题,该主题包含7个分区,也就是说c0订阅了该7个分区:分配图如下:

在这里插入图片描述

一个消费者分配图

此时当消费组内新增了一个消费者c1后,分配图如下所示:

在这里插入图片描述

两个消费者的情况

消费者与消费组的这种模型可以让整体的消费能力具备横向伸缩性。我们可以增加消费者数量来提升整体消费能力,但是分区数固定情况下,如果消费者数量大于分区数时,将会出现有消费者分配不到分区。如下图所示7个分区8个消费的情况下,就必定会有一个消费者无法消费任何消息。其中消费者c7就没法进行数据的消费

在这里插入图片描述

二、为什么kafKa要引入消费组

对于中间件而言,一般有两种投递模式:点对点模式和发布订阅模式。

点对点模式是基于队列的,生产者发送消息到队列,消费者从队列中获取消息。但是消息一旦被消费,就会从队列中删除,而且只能被下游的一个Consumer消费。

发布订阅模式:发布订阅模式定义 了如何向一个内容节点发布和订阅消息,这个内容节点称为主题,主题可以认为是消息传递的中介,消息发布者将消息发布某个主题上,而消息订阅者从主题中订阅消息。

  • 1、引入消费组,一个消费者负责消费一个或者多个分区消息。增减消费者数量可以提升\降低整体消费的能力。

  • 2、通过消费组,kafka可以同时支持点对点模式和发布订阅模式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值