kafka节点故障恢复原理
Kafka的LEO和HW
LEO
LEO是Topic每一个副本的最后的偏移量offset+1
HW(高水位线)
High WaterMark是所有副本中,最小的LEO
Follower副本所在节点宕机
由于数据同步的时候数据是先写入Leader,然后Follower副本向Leader同步
只要Leader和其他的Follower副本继续往前存储数据,挂掉的节点在replica.lag.time.max.ms之内没有追上,就会掉出ISR从ISR集合中剔除,如果此时挂掉的Follower又重启了,他会从上次挂掉的时候的HW开始向Follower同步数据,直到追上最新的数据,就会重新回到ISR集合
Leader副本所在节点宕机
(1)情况1:Leader副本宕机时存在同步的Follower副本
如果存在同步Follower副本,此时就保障了在故障时的数据完整性,会被Controller选举为新的Leader副本(如果是多个完全同步的Follower副本,需看谁在ISR集合里靠前),为保证多个副本之间的数据一致性,其余Follower副本会将各自log文件中高于HW的部分截掉,然后从新的Leader副本同步数据;此时宕机的Leader副本重启后会从宕机前的HW开始向新的Leader副本拉取同步数据,直到追上最新的数据,就会回到ISR集合中
(2)情况2:Leader副本宕机时不存在同步的Follower副本
如果不存在同步的Follower副本,此时由Broker的配置来决定unclean.leader.election.enable
unclean.leader.election.enable参数如果设置为false,就是指Leader副本所在的节点宕机时ISR集合里为空,不允许进行Leader副本的副本,如果设置为true表示不存在完整的Follower副本也可以参与Leader副本的选举,这时候会选举出一个新的Leader副本,为保证多个副本之间的数据一致性,其余Follower副本会将各自log文件中高于HW的部分截掉,然后从新的Leader副本同步数据;
注意:这种情况一定会导致数据的丢失,为了保障数据的可靠性和一致性,可以考虑ACK应答机制
相关参数为offsets.commit.required.acks,设置为-1,这是最可靠的模式,则表示在Leader副本和Follower副本都确认成功写入消息后,生产者才会收到确认,缺点是会导致更长的延迟
kafka节点故障恢复原理的更多相关文章
- kafka集群原理介绍
目录 kafka集群原理介绍 (一)基础理论 二.配置文件 三.错误处理 kafka集群原理介绍 @(博客文章)[kafka|大数据] 本系统文章共三篇,分别为 1.kafka集群原理介绍了以下几个方 ...
- kafka知识体系-kafka设计和原理分析
kafka设计和原理分析 kafka在1.0版本以前,官方主要定义为分布式多分区多副本的消息队列,而1.0后定义为分布式流处理平台,就是说处理传递消息外,kafka还能进行流式计算,类似Strom和S ...
- 《转载》仅需3分钟,你就能明白Kafka的工作原理
仅需3分钟,你就能明白Kafka的工作原理 周末无聊刷着手机,某宝网 App 突然蹦出来一条消息“为了回馈老客户,女朋友买一送一,活动仅限今天!”. 买一送一还有这种好事,那我可不能错过!忍不住立马点 ...
- Kafka高性能的原理
Kafka高性能的原理 高性能,高并发,高可用 使用了NIO技术.高并发. 顺序读写.硬盘的顺序读写性能要高于内存的随机读写. 跳表设计. 稀疏索引.index文件里面有部分offset的位置. 使用 ...
- 【转载】kafka的工作原理
http://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/index.html 消息队列 消息队列技术是分布式应用间交换信息的一种技术.消 ...
- 深入剖析kafka架构内部原理
1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...
- Kafka 的这些原理你知道吗
如果只是为了开发 Kafka 应用程序,或者只是在生产环境使用 Kafka,那么了解 Kafka 的内部工作原理不是必须的.不过,了解 Kafka 的内部工作原理有助于理解 Kafka 的行为,也利用 ...
- kafka 教程(四)-原理进阶
kafka 最初由 Linkedin 公司开发,是一个 分布式.支持分区.多副本的,基于 zookeeper 协调的分布式发布订阅消息系统,该公司在 2010 年将 kafka 贡献给 apache ...
- Kafka内部实现原理
Kafka是什么 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. 1)Apache Kafka是一个开源消息系统,由Scala写成.是由Apache软件基金会开 ...
- Kafka 的这些原理你懂吗
如果只是为了开发 Kafka 应用程序,或者只是在生产环境使用 Kafka,那么了解 Kafka 的内部工作原理不是必须的.不过,了解 Kafka 的内部工作原理有助于理解 Kafka 的行为,也利用 ...
随机推荐
- PMC相关RAID卡信息查看方法
PMC相关RAID卡信息查看方法 摘要 昨天简单整理了LSI相关设备的信息 今天计划学习下PMC相关的RAID卡信息. 也就是偶昨天storcli 查看 controller为0 的情况. 感觉部分服 ...
- 将自签名创建的ca证书 添加到linux的授信证书列表的办法
第一步: 将ca 证书 从cert 格式转换成pem格式 openssl x509 -in ca.crt -out ca.pem -outform PE 第二步: 将ca 证书导入至系统中来 cat ...
- 18.3 NPCAP自定义数据包过滤
NPCAP 库是一种用于在Windows平台上进行网络数据包捕获和分析的库.它是WinPcap库的一个分支,由Nmap开发团队开发,并在Nmap软件中使用.与WinPcap一样,NPCAP库提供了一些 ...
- Python 实现Ping命令状态检测
ping 是一种因特网包探索器,用于测试网络连接量的程序,Ping是工作在TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的主机发送 ICMP 请求报文,测试目的站是否可达及了解其有关 ...
- C# 实现对网站Get与Post请求
C# 是一种面向对象的编程语言,提供了强大的Web请求库和API来执行 HTTP GET 和 POST 请求.在C#中,我们可以使用 System.Net 命名空间下的 WebRequest 和 We ...
- Linux的守护进程 [补档-2023-08-10]
12-1守护进程 12-1-1介绍 Daemom是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或者事件.这些进 程一般不直接和用户交互,不受用户的登录,注销等影响.没 ...
- MySQL拓展知识
一:视图 1:创建视图 1 --格式:CREATE VIEW 视图名称 AS SQL语句 2 CREATE VIEW v1 AS 3 SELET nid, 4 name 5 FROM 6 A 7 WH ...
- 山泽Typec扩展坞M.2移动固态硬盘盒拓展 - 我的硬件配置
- 基于Python的用户登录和密码强度等级测试|Python小应用
前言 那么这里博主先安利一些干货满满的专栏了! 这两个都是博主在学习Linux操作系统过程中的记录,希望对大家的学习有帮助! 操作系统Operating Syshttps://blog.csdn.ne ...
- BZOJ3364 Distance Queries 距离咨询 题解
原题 简化题意:有一棵 \(n\) 个点的树, \(q\) 组询问,每次询问回答两点间的距离. 令 \(dis[i][j]\) 表示 \(i\) 到 \(j\) 的距离,根节点为 \(rt\) ,则有 ...