kafka中组和分区的区别和联系(九)

组这个也就是group.id是从消费者的角度看的
分区是对主题(topic)而言的,对生产者和消费者都有很大的关系,当然最麻烦的是消费者
我感觉特别有必要整理整理这方面的思路,要不又要把我绕进去,
当然推荐大家看Kafka核心API——Consumer消费者,这里面讲的比我都详细

在生产者角度的分区

这个是最简单理解的,哈哈

在创建主题的时候我们会选择创建几个备份,几个分区,在这说一下分区,关于备份节点如果学到这还不懂那你可以放弃了。

(1)直接上图

一个主题单个分区
在这里插入图片描述
生产者生产的消息直接发送到唯一的分区

一个主题多个分区

和上面图不一样的两个关键点:
1,生产者的箭头不是直接指向分区的:因为先要知道你是哪个分区才能往分区里送
2,连接线长有分区和key:这是生产者指定分区发送或者指定key进行hash(key)运算发送到哪个分区,或者kafka随机分配

在这里插入图片描述
其实上面两个图就是一个,因为只有一个分区,你指定key或者分区也没用,还是往那个唯一的分区里发送消息
注意:发送的消息是往一个分区里发,就是如果分区一有消息了,其他分区就没有此消息,消费者去有消息的分区去接收

而对于分区里面的省略了,下面给的这张图是分区主题里分区的布置,这也是备份的设置,其实备份就是把主题里Leader里的信息备份到follower中,这样就会有相同的信息,日志等等
在这里插入图片描述
这里都以分区1、2来统一概括了上面Leaderfollower,这样画的简单些

消费者角度的分区

你是否想过Leade节点,备份节点能构成一个思维导图,但是又出现消费者和group.id来给消费者分组又构成一个思维导图,那这两个又是怎么联系起来的呢?

第一种情况,集群中所有的消费者都是单独的组

可能你会问,为什么不单独分一个区或者多个区,我想说没必要

在这里插入图片描述
上面这幅图形象的描述了当每个消费者单独一个组时,那这个消费者将接收主题所有分区的消息,

第二种情况,集群中所有的消费者不全是单独的组

有的消费者组里只有一个,有的有多个
这以一个组里有一个,和一个组里有两个的消费者举例

在这里插入图片描述
可能会说右边这个组里怎么消息是给的组呢,而不是直接给消费者呢?
因为不清楚怎么你是怎么分配的,有很多的分配方法,默认的,自己定义的…
例如: 分区1给消费者2,分区2给消费者3
在这里插入图片描述
例如: 分区1和分区2都给消费者2
在这里插入图片描述
还有一种就不画了,就是上图中消费者2的箭头都指向了消费者3
这是三种分配只有第一种推荐
第二种和第三种让消费者3或者消费者2荒废了,不推荐

这你就可能有疑问了,为什么不能分区1,2都分别给消费者2,3呢,而只能选一个?
这就是消费者分组的作用,上面你可以看到那些有颜色的线可以认为是消息队列组内成员对于来自一个分区的消息队列只能组内一个成员消费,消费完就没了,其他成员是没办法消费被同组内成员消费消息的

这就是我的理解,如果有什么不对的地方请告诉我一声,我一定修改过来

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值