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节点故障恢复原理的更多相关文章

  1. kafka集群原理介绍

    目录 kafka集群原理介绍 (一)基础理论 二.配置文件 三.错误处理 kafka集群原理介绍 @(博客文章)[kafka|大数据] 本系统文章共三篇,分别为 1.kafka集群原理介绍了以下几个方 ...

  2. kafka知识体系-kafka设计和原理分析

    kafka设计和原理分析 kafka在1.0版本以前,官方主要定义为分布式多分区多副本的消息队列,而1.0后定义为分布式流处理平台,就是说处理传递消息外,kafka还能进行流式计算,类似Strom和S ...

  3. 《转载》仅需3分钟,你就能明白Kafka的工作原理

    仅需3分钟,你就能明白Kafka的工作原理 周末无聊刷着手机,某宝网 App 突然蹦出来一条消息“为了回馈老客户,女朋友买一送一,活动仅限今天!”. 买一送一还有这种好事,那我可不能错过!忍不住立马点 ...

  4. Kafka高性能的原理

    Kafka高性能的原理 高性能,高并发,高可用 使用了NIO技术.高并发. 顺序读写.硬盘的顺序读写性能要高于内存的随机读写. 跳表设计. 稀疏索引.index文件里面有部分offset的位置. 使用 ...

  5. 【转载】kafka的工作原理

    http://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/index.html 消息队列 消息队列技术是分布式应用间交换信息的一种技术.消 ...

  6. 深入剖析kafka架构内部原理

    1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...

  7. Kafka 的这些原理你知道吗

    如果只是为了开发 Kafka 应用程序,或者只是在生产环境使用 Kafka,那么了解 Kafka 的内部工作原理不是必须的.不过,了解 Kafka 的内部工作原理有助于理解 Kafka 的行为,也利用 ...

  8. kafka 教程(四)-原理进阶

    kafka 最初由 Linkedin 公司开发,是一个 分布式.支持分区.多副本的,基于 zookeeper 协调的分布式发布订阅消息系统,该公司在 2010 年将 kafka 贡献给 apache ...

  9. Kafka内部实现原理

    Kafka是什么 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. 1)Apache Kafka是一个开源消息系统,由Scala写成.是由Apache软件基金会开 ...

  10. Kafka 的这些原理你懂吗

    如果只是为了开发 Kafka 应用程序,或者只是在生产环境使用 Kafka,那么了解 Kafka 的内部工作原理不是必须的.不过,了解 Kafka 的内部工作原理有助于理解 Kafka 的行为,也利用 ...

随机推荐

  1. [转帖]linux,wget 的证书不可信,证书使用不安全的算法签名

    centos wget 的证书不可信,证书使用不安全的算法签名 wget wget https://www.php.net/distributions/php-7.4.28.tar.gz 出现错误: ...

  2. [转帖]【redis】redis各稳定版本特性(更新到6.0版本)

    1.Redis2.6 Redis2.6在2012年正是发布,经历了17个版本,到2.6.17版本,相对于Redis2.4,主要特性如下: 1)服务端支持Lua脚本. 2)去掉虚拟内存相关功能. 3)放 ...

  3. vim 复制代码的方法

    之前vim 复制代码 总是格式变错乱了 尤其是yaml文件 有的还带注释 非常痛苦 今天早上查了下 原来处理的方式非常简单  增加一个参数就可以了 方法为 1. vim 打开一个文件 2.输入 :se ...

  4. 【小测试】fastcgo 调用 c 代码

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 找到了一个项目 https://github.com/pe ...

  5. C# 理解委托与事件(烧水壶例子)

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  6. 使用Lua做为MMOARPG游戏逻辑开发脚本的一点体会

    项目背景 目前在一个大型MMOARPG游戏中使用Lua做为逻辑开发语言,Lua占整体代码量的80%. 我们这个MMO游戏开发近2年,客户端8人,项目组总体人数在100人(美术占70%),目前代码量很大 ...

  7. TienChin 渠道管理-删除渠道

    更改一下菜单权限,将删除渠道的 delete 改为 remove: ChannelController.java @PreAuthorize("hasPermission('tienchin ...

  8. 基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回

    基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回 语义索引(可通俗理解为向量索引)技术是搜索引擎.推荐系统.广告系统在召回阶段的核心技术之一.语义索引模型的 ...

  9. Markdown常用书写语法合集

    1. 文字设置 1.1 文字颜色 中常用的文字颜色有: 红色文字:<font color="red">红色文字</font> 浅红色文字:<font ...

  10. Linux 统计Web服务日志命令

    本人在Linux运维中收集的一些通用的统计,Apache/Nginx服务器日志的命令组合. Apache日志统计 # 列出当天访问次数最多的IP命令 [root@lyshark.cnblogs.com ...