聊一下kafka的消费组

介绍
消费组使kafka中很重的概念,只有弄清楚消费组的概念,才能在项目中把它运用好,在kafka中,每个消费者都对应一个消费组,消费者可以是一个线程,一个进程,一个服务实例,如果kafka想要消费消息,那么需要指定消费那个topic的消息以及自己的消费组id(groupId),也可以直接指定那个主题的哪些分区,不然无法消费消息,消费组是一个逻辑上的概念,如下图是主题,分区,消费组,消费者的关系图。

从上图看出都两个消费组,分别为消费组a和消费组b,消费组a有三个消费者c1,c2,c3,其中c1消费分区1,c2消费分区2,c3消费分区3和分区4,消费组b有c4和恶c5两个消费者,c4消费分区1和分区2,c5消费分区3和分区4,我们可以看出,一个消费组内的消费者可以同时消费一个或者几个分区,反之,一个分区只能被同一个消费组内的消费者消费。
消费组增加消费者
此时我们在消费组a中添加了一个消费者c6,我们看到,原来的c3消费分区3和分区4,现在c3只消费分区4,把分区4让给了c6去消费,由此可以看出kafka会使消费者平均消费分区。

继续在消费组a中增加一个消费者c7,如下图,那么由于消费组a中的每个消费者都订阅了一个分区,因为秉承一个分区只能被同一个消费组内的一个消费者消费的原则,四个分区刚好对应4个消费者,所以c7消费者就只能空闲下来。

消费模式
从上面的消费组的一些介绍,我们就可以引申出消息中间件的消费模式,我们知道消息中间件的消费模式有发布订阅模式和点对点模式,在不同的场景下使用的消费模式也不一样,这样根据我们的业务需求去选择,下面我们消息介绍一下这两种模式。
发布订阅模式
发布订阅模式顾名思义就是生产者发布消息以后,消费者订阅对应的主题分区,然后进行消费,它是一对多的,就像学校的在广播里面通知,所有的学生都能听到,还有微信的订阅号,一个订阅号会有很多人关注,当订阅号的号主发布一篇文章,关注的人都能收到。
那么在kafka中,怎么做发布订阅模式呢?很简单,就是不同的消费组就能实现发布订阅模式,在上面我们说了一个分区只能被同一个消费组内的消费者消费,那么我们使用不同的消费组的消费者消费同一个分区就行了,这就实现了发布订阅模式,如下图,有三个消费组a,b,c的消费者c1,c2,c3消费同一个分区,在kafka中使用groupId来表示消费组,如果所有的消费者的groupId都设置一样,那么他们就属于同一个消费组。

发布订阅模式的应用场景有很多,比如下游有很多服务都需要使用同一份数据,如果通过编码的方式来实现的话,可以通过RPC方式来调用,但是就会造成系统的耦合,使用消息中间件的话,上游只管投递消息,下游服务订阅后,就可以消费到消息,大大降低了耦合。
点对点模式
点对点模式就是一对一模式,现实生活中我们打电话,私聊都属于点对点模式,在kafka中要使用点对点模式,那么我们还是要回到一个分区只能被同一个消费组内的消费者消费这个问题,那么我们就创建一个消费组,每个分区的数据只能被这个消费组内的消费者消息,就实现了点对点模式。

点对点的应用场景也很多,因为它的数据只能被一个消费者使用,比如可以削峰,比如上游服务发送了很多数据过来,如果下游服务的就只有一个消费者实例,那么就可能造成消息的积压,这时候就可以多开几个消费者实例一起消费,就加快了消息的消费速度,不过也得考虑一些因素,比如消息的顺序。
总结
上面对消费组和消费者进行了详细的图文介绍,也引申出了消费模式的发布订阅模式,点对点模式,并说了一些应用场景,在实际使用的时候,我们需要根据自己的业务去衡量需要多少消费者,消费者与主题分区之间的数量规划等等,对于kafka的参数调优啊,消息的顺序消费,消息的丢失,重复消费等问题,后续我们再继续。
感谢你的观看,我们下期见,如果文中有说得不合理或者不正确的地方,希望你能进行指点!
聊一下kafka的消费组的更多相关文章
- kafka 消费组功能验证以及消费者数据重复数据丢失问题说明 3
原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 背景 上一篇文章记录了kafka的副本机制和容错功能的说明,本篇则主要在上一篇文章的基础上 ...
- Kafka消费组(consumer group)
一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本,笔者也觉得时 ...
- Kafka 0.11新功能介绍:空消费组延迟rebalance
Kafka 0.11新功能介绍:空消费组延迟rebalance 在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer inst ...
- Kafka技术内幕 读书笔记之(五) 协调者——消费组状态机
协调者保存的消费组元数据中记录了消费组的状态机 , 消费组状态机的转换主要发生在“加入组请求”和“同步组请求”的处理过程中 .协调者处理“离开消费组请求”“迁移消费组请求”“心跳请求” “提交偏移量请 ...
- Kafka技术内幕 读书笔记之(五) 协调者——消费者加入消费组
消费者客户端轮询的3个步骤:发送拉取请求,客户端轮询,获取拉取结果 . 消费者在发送拉取请求之前,必须首先满足下面的两个条件.- 确保消费者已经连接协调者, 即找到服务端中管理这个消费者的协调者节点 ...
- kafka中的消费组
一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本,笔者也觉得时 ...
- Kafka 0.11版本新功能介绍 —— 空消费组延时rebalance
在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer instance启动的时间不可控,很有可能超出coordinator确定 ...
- Kafka设计解析(十三)Kafka消费组(consumer group)
转载自 huxihx,原文链接 Kafka消费组(consumer group) 一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka ...
- kafka消费组、消费者
consumer group consumer instance 一个消费组可能有一个或者多个消费者.同一个消费组可以订阅一个或者多个主题.主题的某一个分区只能被消费组的某一个消费者消费.那么分区和消 ...
- Kafka 消费组消费者分配策略
body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...
随机推荐
- vulnhub靶场渗透实战13-driftingblues3
靶机下载地址:https://download.vulnhub.com/driftingblues/driftingblues3.ova vbox导入,网络模式桥接,靶机模式为简单. 一:信息收集 ...
- 简单易用的监控告警系统 | HertzBeat 在 Rainbond 上的使用分享
在现有的监控告警体系中 Prometheus + AlertManger + Grafana 一直是主流,但对于中小团队或个人来说,这种体系显的较为复杂.而 HertzBeat 能让中小团队或个人很快 ...
- 认识一下 Mobx
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序(掘金) 前言 在之前的文章中,我们讲述了 React ...
- python 小球碰撞游戏
#小球和挡板要自己找照片,放在一个单独文件夹,音乐也是一样的import pygame pygame.init()#游戏资源加载 a = 700#x轴为700 b = 800#y抽为800 sceee ...
- JavaScript:this指针
this指针,存储的是一个内存地址,如同变量一样,指向一块内存区域: 而这个内存区域,保存的就是一个对象的数据,那么这个对象是什么呢? 通常来说,this指针,主要是用在方法(函数)中,用来指向调用方 ...
- [seaborn] seaborn学习笔记12-绘图实例(4) Drawing example(4)
文章目录 12 绘图实例(4) Drawing example(4) 1. Scatterplot with varying point sizes and hues(relplot) 2. Scat ...
- BBS项目功能编写逻辑思路汇总
BBS项目功能编写逻辑思路汇总 一.BBS创数据表 二.BBS注册功能 三.BBS登录功能 四.BBS首页搭建 五.BBS修改密码 六.BBS个人站点 七.BBS文章详情 八.BBS导入模块 九.BB ...
- 过年必备!亲戚计算器「GitHub 热点速览 v.23.02」
过完这周大家就要开始为期 7 天的春节长假了,当然有些 HG 小伙伴拥有了 10+ 天的长假就低调点不要告诉他人,以免招人妒忌.春节必经的事情可能就是走亲戚了,所以本周特推选取了一个研究亲戚关系的资深 ...
- 一个关于sum over的疑问
参考: http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html select * from bitest.tmp_0222_zym ; ...
- 在GCP的Kubernetes上安装dapr
1 简介 我们之前使用了dapr的本地托管模式,但在生产中我们一般使用Kubernetes托管,本文介绍如何在GKE(GCP Kubernetes)安装dapr. 相关文章: dapr本地托管的服务调 ...