首页 > 其他分享 >kafka节点故障恢复原理

kafka节点故障恢复原理

时间:2024-02-29 15:24:00浏览次数:17  
标签:副本 宕机 HW 节点 故障 Follower 同步 kafka Leader

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副本都确认成功写入消息后,生产者才会收到确认,缺点是会导致更长的延迟

标签:副本,宕机,HW,节点,故障,Follower,同步,kafka,Leader
From: https://www.cnblogs.com/iamxiaofu/p/18044254

相关文章

  • 故障分析 | linux 磁盘io利用率高,分析的正确姿势
    一、背景简介作为一个DBA难免不了会遇到性能问题,那么我们遇到性能问题该如何进行排查呢?例如我们在高并发的业务下,出现业务响应慢,处理时间长我们又该如何入手进行排查,本篇文章将分析io高的情况下如何分析及定位。二、环境复现环境配置:本次测试使用128C_512G_4TSSD服务器配置,MyS......
  • 对 vCenter Server 中的性能数据间断或性能数据缺失进行故障排除 (1003878)
    SymptomsGapsinperformancedataMissingperformancedata ResolutionValidatethateachtroubleshootingstepbelowistrueforyourenvironment.Eachstepprovidesinstructionsoralinktoadocument,inordertoeliminatepossiblecausesa......
  • FastAPI系列:路由之节点元数据参数说明
    节点元数据参数说明#拿app.get()方法的参数来说明,其他的差不多类似defget(self,path:str,*,response_model:Optional[Type[Any]]=None,status_code:Optional[int]=None,tags:Optional[List[Union[str,Enum]]]......
  • BOSHIDA DC电源模块如何故障排除与维修
    BOSHIDADC电源模块如何故障排除与维修首先,进行故障排查前,需要了解DC电源模块的工作原理和基本构造。DC电源模块通常由输入端子、输出端子、电感、电容、变压器、整流电路等组成。常见的故障包括输出电压异常、输出电流异常、过载保护触发、短路保护触发、输入电压异常等。 ......
  • SQL Server隐藏实例会导致Alwasy on手动故障转移时报error 26
    SQLServer的配置管理器(SQLServerConfigurationManager)下,你可以隐藏数据库实例,设置了隐藏实例后,SQLServerBrowser不会对此服务器实例的相关信息做出响应,(当SQLServer客户端请求SQLServer资源时,客户端将使用1434端口向服务器发送一条UDP消息。SQLServer浏览器将......
  • 在K8S中,worke节点启动阶段包括什么?
    在Kubernetes(K8S)中,Worker节点启动阶段大致包括以下几个关键步骤:系统初始化:Worker节点操作系统启动,加载基础系统服务和配置。安装必备软件,如Docker或containerd作为容器运行时环境。kubelet启动:kubelet是Kubernetes在每个节点上的代理程序,它会在启动时加载其配置文件(通......
  • 代码随想录 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.0
    LeetCode:24.两两交换链表中的节点-力扣(LeetCode)思路:第一步:两两交换要考虑循环什么时候退出,当cur指针.next是null是就到尾部了,同理,链表不是奇数就是偶数,cur.next.next是空也是。第二步循环条件判断完了接下来要实现交换,如图所示,按步骤来就好,提前将1,2,3存好,接下来按图......
  • ELKF日志系统搭建(二)进阶——使用 Kafka 作为日志消息缓存
    说明:在一些比较大的业务使用场景中,因为应用繁多,需要收集的日志也很多,通过filebeat或者logstash收集上来的日志如果全都直接发送给ES,那么就会对ES集群产生一定的压力,为了避免出现日志接收不过来的问题,于是引入了消息队列作为缓存,比如常见的使用Redis或Kafka作为消息缓存......
  • Kafka安装与使用入门
    写在前面,本文重点介绍Kafka的安装与使用入门。Kafka是一款什么样的产品,具体是作什么用的,大致看这里:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。这种动作(......
  • 在K8S中,worke节点如何加入K8S高可用集群?
    在Kubernetes(K8S)中,将一个Worker节点加入到高可用集群的过程与加入单Master集群大体相似,但需要注意的是,高可用集群中的Master通常是通过负载均衡器暴露服务端点的,这样无论哪个Master节点宕机,Worker节点都可以连接到活跃的Master节点。以下是加入高可用Kubernetes集群的具体步骤:1.......