Kafka Leader 和 Follower 故障

浩客2年前技术文章1165

前言:

      在kafka集群工作过程中,难免会碰到某个kafka服务实例宕机或挂掉的情况,服务一旦挂掉,意味着某个分区中的leader或follower将不能正常工作了

      具体来说,leader和follower出现故障时各自的处理细节是不同的,假设kafka集群中有3个服务实例,对应到ISR中存储的就是3个brokerid的信息,假如brokerid为0的服务是leader,其他两个是follower,在broker实际工作过程中,发往broker的数据在leader和follower上均维持着一个HW和LEO,从实际经验来看,由于leader对外提供读写服务,而follower同步leader的数据,所以follower的HW(高水位线)同步到的最后那个水位所在位置数要低于leader的HW,基于这种情况前提下,会造成当leader出现故障,以及follower出现故障时内部在数据同步上的两种不同的情况

ISR(In-Sync Replicas): (同步副本集),我们可以理解为和leader保持同步的所有副本的集合。

LEOLog End Offset):每个副本的最后一个offsetLEO其实就是最新的offset + 1

HW(High Watermark):所有副本中最小的LEO


6666666666.png


1、Leader 故障

(1) Leader发生故障之后,会从ISR中选出一个新的Leader

(2)为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据

注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复。

2、Follower 故障

(1) Follower发生故障后会被临时踢出ISR

(2) 这个期间Leader和Follower继续接收数据

(3)待该Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向Leader进行同步。

(4)等该Follower的LEO大于等于该Partition的HW,即Follower追上Leader之后,就可以重新加入ISR了。


相关文章

可观测未来OpenTelemertry-结构化数据价值

可观测未来OpenTelemertry-结构化数据价值

前言开源软件和云供应商的软件开发模式已经改变了我们构建和部署软件的方式。集成开源软件,我们可以在很短时间内构建和部署一个应用程序。但这并不意味着使用和维护它们也变得更简单,随着应用程序的扩充,程序的调...

RDS通过DMS管理登录处理

RDS通过DMS管理登录处理

问题描述无法通过DMS管理登录进入数据库,报错如下:问题处理方式一在RDS控制台新建账号 账号管理--创建账号将此数据库添加进DMS在DMS控制台--数据库实例--新增实例将新建的数据库账号信息进行录...

SLS日志采集 

SLS日志采集 

创建Pjoject创建日志库接入日志新建机器组数据接入Logtail配置--添加Logtail配置选择需要的日志文本格式按下列步骤完成即可编辑日志格式配置查询分析数据...

Golang new and make

Go  语言中 new 方法和 make 方法,都是用于分配相应类型内存空间。1、makemake 内置函数分配并初始化(仅)slice、map 或 chan 类型的对象,返回值是所创建的类型本身。与...

pg_restore

逻辑备份恢复PG提供了pg_restore的命令可以为通过pg_dump转储的数据进行逻辑恢复。对于SQL脚本可通过psql进行恢复语法pg_restore [connection_option] [...

clickhouse集群对接hive(三)

clickhouse集群对接hive(三)

前提:集群中已经部署了hive组件和clickhouse集群,clickhouse集群进行对接hive1、设置hdfs文件系统本地缓存<local_cache_for_remote_fs>...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。