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 的行为,也利用 ...
随机推荐
- [转帖]linux,wget 的证书不可信,证书使用不安全的算法签名
centos wget 的证书不可信,证书使用不安全的算法签名 wget wget https://www.php.net/distributions/php-7.4.28.tar.gz 出现错误: ...
- [转帖]【redis】redis各稳定版本特性(更新到6.0版本)
1.Redis2.6 Redis2.6在2012年正是发布,经历了17个版本,到2.6.17版本,相对于Redis2.4,主要特性如下: 1)服务端支持Lua脚本. 2)去掉虚拟内存相关功能. 3)放 ...
- vim 复制代码的方法
之前vim 复制代码 总是格式变错乱了 尤其是yaml文件 有的还带注释 非常痛苦 今天早上查了下 原来处理的方式非常简单 增加一个参数就可以了 方法为 1. vim 打开一个文件 2.输入 :se ...
- 【小测试】fastcgo 调用 c 代码
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 找到了一个项目 https://github.com/pe ...
- C# 理解委托与事件(烧水壶例子)
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...
- 使用Lua做为MMOARPG游戏逻辑开发脚本的一点体会
项目背景 目前在一个大型MMOARPG游戏中使用Lua做为逻辑开发语言,Lua占整体代码量的80%. 我们这个MMO游戏开发近2年,客户端8人,项目组总体人数在100人(美术占70%),目前代码量很大 ...
- TienChin 渠道管理-删除渠道
更改一下菜单权限,将删除渠道的 delete 改为 remove: ChannelController.java @PreAuthorize("hasPermission('tienchin ...
- 基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回
基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回 语义索引(可通俗理解为向量索引)技术是搜索引擎.推荐系统.广告系统在召回阶段的核心技术之一.语义索引模型的 ...
- Markdown常用书写语法合集
1. 文字设置 1.1 文字颜色 中常用的文字颜色有: 红色文字:<font color="red">红色文字</font> 浅红色文字:<font ...
- Linux 统计Web服务日志命令
本人在Linux运维中收集的一些通用的统计,Apache/Nginx服务器日志的命令组合. Apache日志统计 # 列出当天访问次数最多的IP命令 [root@lyshark.cnblogs.com ...