kafka系列之(3)——Coordinator与offset管理和Consumer Rebalance

作者&投稿:潮劳 (若有异议请与网页底部的电邮联系)
~

consumer group是kafka提供的可扩展且具有容错性的消费者机制。组内可以有多个消费者或消费者实例(consumer instance),它们共享一个公共的ID,即group ID。组内的所有消费者协调在一起来消费订阅主题(subscribed topics)的所有分区(partition)。
consumer group下可以有一个或多个consumer instance,consumer instance可以是一个进程,也可以是一个线程
group.id是一个字符串,唯一标识一个consumer group
consumer group下订阅的topic下的每个分区只能分配给某个group下的一个consumer(当然该分区还可以被分配给其他group)

Coordinator一般指的是运行在broker上的group Coordinator,用于管理Consumer Group中各个成员,每个KafkaServer都有一个GroupCoordinator实例,管理多个消费者组,主要用于offset位移管理和Consumer Rebalance。

对于每个Consumer Group,Coordinator会存储以下信息:

consumer group如何确定自己的coordinator是谁呢? 简单来说分为两步:

消费者在消费的过程中需要记录自己消费了多少数据,即消费位置信息。在Kafka中这个位置信息有个专门的术语:位移(offset)。
(1)、很多消息引擎都把这部分信息保存在服务器端(broker端)。这样做的好处当然是实现简单,但会有三个主要的问题:
1. broker从此变成有状态的,会影响伸缩性;
2. 需要引入应答机制(acknowledgement)来确认消费成功。
3. 由于要保存很多consumer的offset信息,必然引入复杂的数据结构,造成资源浪费。
而Kafka选择了不同的方式:每个consumer group管理自己的位移信息,那么只需要简单的一个整数表示位置就够了;同时可以引入checkpoint机制定期持久化,简化了应答机制的实现。
(2)、Kafka默认是定期帮你自动提交位移的(enable.auto.commit = true),你当然可以选择手动提交位移实现自己控制。
(3)、另外kafka会定期把group消费情况保存起来,做成一个offset map,如下图所示:

上图中表明了test-group这个组当前的消费情况。

老版本的位移是提交到zookeeper中的,目录结构是:/consumers/<group.id>/offsets/<topic>/<partitionId>,但是zookeeper其实并不适合进行大批量的读写操作,尤其是写操作。

__consumers_offsets topic配置了compact策略,使得它总是能够保存最新的位移信息,既控制了该topic总体的日志容量,也能实现保存最新offset的目的。compact的具体原理请参见: Log Compaction
至于每个group保存到__consumers_offsets的哪个分区,如何查看的问题请参见这篇文章: Kafka 如何读取offset topic内容 (__consumer_offsets)

offset提交消息会根据消费组的key(消费组名称)进行分区. 对于一个给定的消费组,它的所有消息都会发送到唯一的broker(即Coordinator)
Coordinator上负责管理offset的组件是 Offset manager 。负责存储,抓取,和维护消费者的offsets. 每个broker都有一个offset manager实例. 有两种具体的实现:
ZookeeperOffsetManager: 调用zookeeper来存储和接收offset(老版本的位移管理)。
DefaultOffsetManager: 提供消费者offsets内置的offset管理。
通过在config/server.properties中的offset.storage参数选择。
DefaultOffsetManager
除了将offset作为logs保存到磁盘上,DefaultOffsetManager维护了一张能快速服务于offset抓取请求的 consumer offsets表 。这个表作为缓存,包含的含仅仅是”offsets topic”的partitions中属于leader partition对应的条目(存储的是offset)。
对于DefaultOffsetManager还有两个其他属性: “offsets.topic.replication.factor和”offsets.topic.num.partitions”,默认值都是1。这两个属性会用来自动地创建”offsets topic”。
offset manager接口的概要:

什么是rebalance?
rebalance本质上是一种协议,规定了一个consumer group下的所有consumer如何达成一致来分配订阅topic的每个分区。比如某个group下有20个consumer,它订阅了一个具有100个分区的topic。正常情况下,Kafka平均会为每个consumer分配5个分区。这个分配的过程就叫rebalance。Kafka新版本consumer默认提供了两种分配策略:range和round-robin。
rebalance的触发条件有三种:
组成员发生变更(新consumer加入组、已有consumer主动离开组或已有consumer崩溃了——这两者的区别后面会谈到)
订阅主题数发生变更——这当然是可能的,如果你使用了正则表达式的方式进行订阅,那么新建匹配正则表达式的topic就会触发rebalance
订阅主题的分区数发生变更

refer
http://www.cnblogs.com/huxi2b/p/6223228.html
http://zqhxuyuan.github.io/2016/02/18/Kafka-Consumer-Offset-Manager/
http://www.cnblogs.com/byrhuangqiang/p/6384986.html




如何确定Kafka的分区数,key和consumer线程数,以及不消费问题解决_百度...
三、降低高可用性 Kafka通过副本(replica)机制来保证高可用。具体做法就是为每个分区保存若干个副本(replica_factor指定副本数)。每个副本保存在不同的broker上。期中的一个副本充当leader 副本,负责处理producer和consumer请求。其他副本充当follower角色,由Kafka controller负责保证与leader的同步。如果leader所在...

盘点那些与日志位移、副本相关的重要概念|Kafka系列 四
在深入理解Kafka的复杂机制中,日志位移和副本管理是关键概念。Kafka的日志存储是分段的,每个段都有其独特的BaseOffset,这是该段内消息最小的位移值,且大于所有前段消息的位移。LogStartOffset则是每个日志文件的起始偏移,通常等于第一个日志段的BaseOffset。日志的保留策略基于LogStartOffset与下一个日志段...

请问哪位能提供关于由贵的东东?
1991-1994年《毒伯爵该隐》《情伤茱丽叶》《谁杀了知更鸟》《卡夫卡》《赤羊之刻印》 1994-2000年 《天使禁猎区》 1996年 《戒音》 1998年 《少年残像》 2000年底 《路易革命之白雪姬》 2001年2月 《路易革命之荆棘公主》 2001年4月 《螺子》 2001年5月始 《毒伯爵该隐》连载又开!《God Child》系列 由...

如何确定Kafka的分区数,key和consumer线程数
三、降低高可用性 Kafka通过副本(replica)机制来保证高可用。具体做法就是为每个分区保存若干个副本(replica_factor指定副本数)。每个副本保存在不同的broker上。期中的一个副本充当leader 副本,负责处理producer和consumer请求。其他副本充当follower角色,由Kafka controller负责保证与leader的同步。如果leader所在...

从零开始学Spring Boot系列-集成Kafka
Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,捐赠给了Apache软件基金会。主要用于构建实时数据管道和流应用,处理消费者网站的所有动作流数据,如页面浏览、搜索和其他用户的行动。Kafka具备分布式、高吞吐量的发布-订阅消息系统特性。在Ubuntu 22.04的wsl2环境下安装Kafka,需先安装...

大数据都是学什么软件?
Kafka:这是个比较好用的队列工具,队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来,你别怪他因为他不是搞大数据的,你可以跟他讲我把数据放在队列里你使用的时候一个个拿,这样他就不...

Kafka在美团数据平台的实践
然而,随着规模的扩大,Kafka面临的问题也日益严峻。具体来说,Kafka面临的挑战可以概括为两个方面:一是慢节点影响读写,即读写延迟TP99大于300ms的Broker;二是大规模集群管理的复杂性。慢节点的原因有三个,而大规模集群管理的问题则表现为四类问题。为了解决读写延迟问题,美团数据平台采取了一系列...

五种大数据处理架构
Samza依赖Kafka的语义定义流的处理方式。Kafka在处理数据时涉及下列概念:· Topic(话题):进入Kafka系统的每个数据流可称之为一个话题。话题基本上是一种可供消耗方订阅的,由相关信息组成的数据流。· Partition(分区):为了将一个话题分散至多个节点,Kafka会将传入的消息划分为多个分区。分区的划分将基于键(Key)进行...

filebeat采集日志到kafka配置及使用
由于我的预期目标是将filebeat收集的日志发送到kafka,所以配置output就选择了kafka。读者可根据自己的使用场景,配置output。例子中的配置将对\/var\/log目录下所有以.log结尾的文件进行采集。3.启动 本文中只是为满足需求对filebeat进行了最基本的配置。filebeat的很多重要的配置和特性并没有体现(例如:模块,...

(9)拦截器、序列化器、分区器处理顺序
2、Sender 线程: 从 RecordAccumulator 中 获取消息,发送 到 Kafka 一、拦截器: 发送前准备: 过滤、修改 消息,发送回调前: 统计 二、序列化器:对象 转换成 字节数组 发送给 Kafka 三、分区器:根据 key 计算 partition 1、作用 发送前准备: 过滤、修改 消息,发送回调前: 统计 2、实现 org...

左贡县13063219781: 生活垃圾可分为哪三类 -
赖海盐酸: 生活垃圾分为三类:可回收垃圾,不可回收垃圾,其他垃圾. 1、可回收垃圾 废纸:主要包括报纸、期刊、图书、各种包装纸等.但是,要注意纸巾和厕所纸由于水溶性太强不可回收. 塑料:各种塑料袋、塑料泡沫、塑料包装、一次性塑料餐...

左贡县13063219781: 金融学上的证券指是哪三大类 -
赖海盐酸: 证券是多种经济权益凭证的统称,也指专门的种类产品,是用来证明券票持有人享有的某种特定权益的凭证.它主要包括资本证券、货币证券和商品证券等.狭义上的证券主要指的是中的证券产品,其中包括产权市场产品如股票,债权市场产品如债券,衍生市场产品如、期权、利率期货等.

左贡县13063219781: 在探究电流、电压和电阻的关系时,同学们按照图甲所示的电路图连接电路,完成实验,并得到一系列的数据, -
赖海盐酸: (1)根据电路图:电流表与定值电阻串联、电压表与定值电阻并联,连接实物图,如图所示:(2)依照电路连接电路时,开关处于断开状态,据题目中的实物图可知,滑片左边的电阻丝接入电路,所以滑片在最右端是最大阻值处;(3)表二中数据中,导体两端电压均为6V,导体中电流随导体的阻值的增大而变小,可得结论:导体两端电压一定时,通过导体的电流与导体的电阻成反比;(4)要研究电流与电阻的关系,改变电阻的同时要通过滑动变阻器控制导体两端的电压不变. 故答案为:(1)实物电路如上图;(2)断开;最右端;(3)导体两端电压一定时,通过导体的电流与导体的电阻成反比;(4)电压.

左贡县13063219781: 太阳能热水器全智能测控仪怎么用? -
赖海盐酸: 使用方法: 1、水温水位设置:先按“预置”键,当前预置温度.预置水位快速跳动,然后按“上水、水位”键设置水位,按“加热、水温”键设置水温,请用户根据自己的需要设置到所需水位和水温;建议设置水温不超过60~C,可充分利用...

左贡县13063219781: 焊接分哪三大类? -
赖海盐酸: 焊接可分为熔化焊、加压焊、钎焊三大类. 1. 熔化焊接是利用外加热源使焊件局部加热至熔化状态,一般还同时溶入填充金属(可加可不加),然后冷却结晶成一体的焊接方法. 2. 钎焊一般都需要加入填充金属,与熔化焊的另一个区别是焊件不需要加热至熔化,只需要把填充材料加热至溶化,然后利用焊件和填充金属的毛细作用形成焊缝. 3. 而加压焊接一般不需要加入填充材料(一般称作焊料),在外加压力的作用下,使焊件发生明显的塑性变形,并且在电阻焊中,还利用电阻热使焊件局部熔化,冷却之后形成冶金作用的不可拆卸的焊接接头.

左贡县13063219781: 有一系列数,前两个数是1,2,从第三个数起,每个数都等于它前面相邻的两个数的和的个位数字,请回答: -
赖海盐酸: 1、不能,很明显,2+0=2,所以2,0之后只会出现2,不会出现12、1 2 3 5 8 3 1 4 5 9 4 3 7 0 7 7 4 1 5 6 1 7 8 5 3 8 1 9 0 9 9 8 7 5 2 7 9 6 5 1 6 7 3 0 3 3 6 9 5 4 9 3 2 5 7 2 9 1 0 1 1 2 ...开始循环60个数是周期,2012除以60余32 ,第32位是8

左贡县13063219781: 路非万兽无疆系列顺序 -
赖海盐酸: 路非万兽无疆系列顺序: 1、穿越绝色兽妃:凤逆天下. 2、凤舞江山:火爆狼妃太妖孽. 3、第一狂妃:绝色邪王宠妻无度. 姬玄殇,貌似是华曦和重夕的儿子,路大没有确切提过,直说了是两个神王,而且还有心情改变天气的能力(重夕有)而且还有魔族血统. 路非万兽剧情: 华曦的破命之人,逆天而行,因为墨莲救他的命,同时封印万兽无疆,所以在华曦神王要求凰北月在她大劫的时候帮她就可以提出一个要求后,要求在来世续北月和墨莲的情.重夕(前世是一颗不会开花的红莲,因为被华曦的前世死前的一口血喷了,然后就开花了,为了报恩所以当上神王,来抵挡劫,故意杀死华曦)在华曦的世世轮回中不得不看着华曦的转世受苦.

左贡县13063219781: 小游戏合集闪退黑屏如何解决 -
赖海盐酸: 启动游戏闪退的,说明该电脑硬件即将带不动游戏或已经带不动游戏,电脑硬件的性能已经接近阙值或小于带起游戏的阙值.解决方案:关闭占缓存、网络的软件,包括但不仅限于QQ、网页、音乐播放软件、视频播放软件、后台运行程序、开机自动运行程序等.如果依然异常再尝试重开电脑后登陆.依然闪退的,再重新下载并安装游戏,最后可尝试重做电脑系统.还异常的全盘深度杀毒、全盘重新分区、重新做系统、重新安装游戏.

左贡县13063219781: APPLE电脑系列分别 -
赖海盐酸: macbook是入门级的笔记本,air是轻便型的,pro顾名思义就是性能型的.imac台机入门型,mac pro台机性能型

左贡县13063219781: 哈利波特系列书籍 -
赖海盐酸: 1,《哈利·波特与魔法石》 《哈利·波特与魔法石》(英国版《Harry Potter and the Philosopher's Stone》,美国版《Harry Potter and the Sorcerer's Stone》),是英国女作家J.K.罗琳创作的长篇小说,《哈利·波特》系列小说的第一部. 该...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网