KafKa - 分区副本ISR选举机制

article/2025/9/13 19:34:07

一、KafKa分区副本ISR选举机制

kafka 中每一个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的,每个分区配置有多若干个副本。

所谓的副本,本质上就是一个只能追加写消息的提交日志,根据kafka副本机制的定义,同一个分区下的所有副本保存着相同的消息序列,这些副本分散的保存在不同的Broker上,从而能够对抗部分Broker宕机带来的数据不可用。

如下图,在3节点的 kafka 集群中,对 topic:主题1 分了三个分区三个副本。
在这里插入图片描述
kafka 分区中的副本机制中,又分了 Leader 节点 和 Follower 节点,消息会写到Leader 节点中,由Leader 节点将数据同步给 Follower 节点,每个副本都可以进行读操作,从而减轻读的压力。

既然存在 LeaderFollower 节点,肯定需要一个 Leader 选举机制,谁也不能确保 Leader 节点可以一直正常存活,有可能因为某些原因导致 Leader 节点宕机或 网络异常,这种情况下就需要在剩下的节点中选举出一个Follower 节点升级为 Leader 节点,继续提供服务。

注意:分区的副本选举问题,不是Broker的选举,而是分区中副本选举的问题,在一个Broker 中,不同的 topic 的分区下,有可能存在有的是 Leader而有的又是 Follower ,因此Broker的选举和分区的选举需要区分开来,会在本专栏后面的文章中继续讲解 BrokerLeader节点的作用和选举机制。

ISR选举机制:

kafka 中分区副本选举机制采用的ISR的机制,全称为 In-Sync Replicas,挑选出Leader节点,而 ISR 其实就是一个存放分区副本ID的集合,如果某个副本所在的 Broker 正常的和 zookeepeer能够建立连接的情况下,那这个副本的ID就会存放到该集合中,如果某个副本节点宕机之后,该副本数据就会从该ISR集合中剔除。

Leader 收到消息数据同步给Follower 节点时,如果 Follower 节点一直阻塞,长时间不给Leader 节点发送 ack ,这种情况也会从ISR集合中剔除。

如果 Leader 节点宕机之后,其他副本就会将ISR中的 Leader 节点移除,而ISR列表中最前面的副本就被选举为一个新的Leader 节点。

假如三分区,三副本的情况信息,Leader 节点发生宕机,就如下图的过程:

在这里插入图片描述
从上面这种方式可以看出,当 Leader 副本宕机之后,会从ISR同步副本列表中剔除,然后取剩下的ISR列表中第一个为Leader 副本,显然有可能还有些副本数据没有及时同步完成,当选择为Leader副本之后有可能数据会丢失。

相关配置讲解:

## 默认10s,isr中的follow没有向isr发送心跳包就会被移除
replica.lag.time.max.ms = 10000## 根据leader 和副本的信息条数差值决定是否从isr 中剔除此副本,此信息条数差值根据配置参数,在broker数量较少,或者网络不足的环境中,建议提高此值.
replica.lag.max.messages = 4000## follower与leader之间的socket超时时间
replica.socket.timeout.ms=30*1000## 数据同步时的socket缓存大小
replica.socket.receive.buffer.bytes=64*1024## replicas每次获取数据的最大大小
replica.fetch.max.bytes =1024*1024## replicas同leader之间通信的最大等待时间,失败了会重试
replica.fetch.wait.max.ms =500## fetch的最小数据尺寸,如果leader中尚未同步的数据不足此值,将会阻塞,直到满足条件
replica.fetch.min.bytes =1## leader进行复制的线程数,增大这个数值会增加follower的IO
num.replica.fetchers=1## 每个replica检查是否将最高水位进行固化的频率
replica.high.watermark.checkpoint.interval.ms = 5000## leader的不平衡比例,若是超过这个数值,会对分区进行重新的平衡
leader.imbalance.per.broker.percentage = 10## 检查leader是否不平衡的时间间隔
leader.imbalance.check.interval.seconds = 300

http://chatgpt.dhexx.cn/article/SZCYScx3.shtml

相关文章

Kafka 设计原理——副本与ISR设计

目录 副本与ISR设计Follower副本同步ISR设计 副本与ISR设计 一个Kafka分区本质就是一个备份日志,即利用多份相同的备份共同提供冗余机制来保持系统高可用性。 这些备份在Kafka中被称为副本(replica)。Kafka把分区的所有副本均匀地分配到所有broker上。 并从这些副本…

ISR吞吐性能问题

ISR大致可以分几类: Cisco 860、880、890 ISR1800 (fixed)、1800 (modular)、2800、3800 Series ISR1900、2900、3800、3900 Series ISR4K 每一代的设备,设备的性能肯定都不一样,本摘要,将主要记录ISR的吞吐性能问题。 1、下图主要…

生产故障|Kafka ISR频繁伸缩缩引发性能急剧下降原因分析

本文是笔者双十一系列第二弹,源于一个双十一期间一个让笔者猝不及防的生产故障,本文将详细剖析Kafka的副本机制,以及ISR频繁变更(扩张与伸缩)为什么会导致集群不可用。 1、Kafka副本机制 Kafka数据组织方式是topic-parition的结构&#xff…

关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解

kafka中的ISR、AR又代表什么?ISR伸缩又是什么? ​ 分区中的所有副本统称为AR(Assigned Repllicas)。所有与leader副本保持一定程度同步的副本(包括Leader)组成ISR(In-Sync Replicas&#xf…

c4isr系统有无服务器,什么是C4ISR系统?

C4ISR是指挥、控制、通信、计算机、情报、侦察与监视系统的英文简称,是美国各军兵种作战系统的大脑和神经。其主要功能是把作战系统各部分连接起来,构成一个灵活、机动、可靠、无缝的网络,确保各参战部队能依靠网络进行以网络为中心的现代化战…

Next.js性能优化之ISR渲染入门和原理探索

前言 术语说明: SSR —— 服务端渲染SSG —— 静态生成ISR —— 增量静态化Date Fetch 函数 —— 本文特指服务端数据获取的几种函数 getStaticProps 、 getServerSideProps 、 getInitialProps 、 getStaticPaths 。 Next.js 中最突出的莫过于它的渲染模式&…

Kafka之分区副本与ISR

概念 什么是副本 Kafka的Topic分区本质是一个用于存储Topic下的消息的日志,但是只存一份日志会因为机器损坏或其他原因导致消息丢失不可恢复, 因此需要多个相同的日志作为备份,提高系统可用性,这些备份在kafka中被称为副本(rep…

Kafka的ISR收缩机制

ISR什么时候收缩ISR什么时候扩展ISR的传播机制Broker宕机之后怎么ISR的收缩? Kafka在启动的时候,会启动一个副本管理器ReplicaManager,这个副本管理器会启动几个定时任务。 ISR过期定时任务isr-expiration,每隔replica.lag.time.max.ms/2毫秒就执行一次。ISR变更的…

Kafka ISR

ISR(in-sync replica) 就是 Kafka 为某个分区维护的一组同步集合,即每个分区都有自己的一个 ISR 集合,处于 ISR 集合中的副本,意味着 follower 副本与 leader 副本保持同步状态,只有处于 ISR 集合中的副本才…

kafka中的ISR、AR又代表什么?ISR伸缩又是什么?

kafka中的ISR、AR又代表什么?ISR伸缩又是什么? ​ 分区中的所有副本统称为AR(Assigned Repllicas)。所有与leader副本保持一定程度同步的副本(包括Leader)组成ISR(In-Sync Replicas&#xff09…

Kafka之ISR机制的理解

Kafka对于producer发来的消息怎么保证可靠性? 每个partition都给配上副本,做数据同步,保证数据不丢失。 副本数据同步策略 和zookeeper不同的是,Kafka选择的是全部完成同步,才发送ack。但是又有所区别。 所以&…

中断ISR技术架构

架构一 ISR采用立即响应思路,技术架构如下图: 优点:简单。 缺点:处理性能不高,中断优先级规划性不高(仅仅区分CPU的32个优先级别,针对不同类型中断优先级不支持)。 选型:对于硬件支持多级中断…

【Java面试】什么是 ISR,为什么需要引入 ISR

Hi,大家好,我是Mic。 一个工作5年的粉丝,在简历上写精通Kafka。 结果在面试的时候直接打脸。 面试官问他:“什么是ISR,为什么需要设计ISR” 然后他一脸懵逼的看着面试官。 下面看看普通人和高手的回答。 需要高手面试文…

2022年正式赛题网络系统管理Linix模块 NFS部分

共享/webdata/目录;用于存储AppSrv主机的WEB数据;仅允许AppSrv主机访问该共享;考虑安全,不论登入NFS 的使用者身份为何,都将其设置为匿名用户访问。

NXP迅为i.MX8Mmini开发板Linix固件编译下

4 编译 Ubuntu20 桌面版本 1 如果大家想要编译 Ubuntu20 桌面版本,首先要将光盘资料“iTOP-i.MX8MM 开发板\01-i.MX8MM 开发板光盘资料\20210830\07-Ubuntu20 系统源码\Ubuntu20 桌面版本” 下的压缩包拷贝到 Linux 源码的根目录下,解压压缩包得到 ubunt…

Linix(CentOS6.5)详细安装

CentOS6.5的安装(Minimal) 点击CentOS6镜像文件下载 点击CentOS7镜像文件下载 1.点击创建新的虚拟机 2.选择自定义模式 3.选择VMware Workstation的版本 4.选择稍后安装 5.选择合适操作系统(64位OR32位) 6.更改默认的安装…

Linix环境搭建及概述

linux环境搭建及概述 前言 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用!废话不多说直接开整 一、安装CentOS(虚拟机安装…

Linux系统常用命令--LInix系统随笔(四)

前言:虽然一直在用linux但是一直没有系统的学习过,趁着暑假花了几天看着鸟哥的书学习了一下。下面是我记录的一些笔记,本人属于入门的小白所以难免有不足之处,还望发现的表哥们多多指正。 ①命令格式与目录处理命令ls ls--list…

util-linix 实用程序包中包含了许多系统管理员常用的其它命令

util-linix 实用程序包中包含了许多系统管理员常用的其它命令。这些实用程序是由 Linux 内核组织发布的,这 107 条命令中几乎每一个都来自原本是三个单独的集合 —— fileutils、shellutils 和 textutils,2003 年它们被合并成一个包:util-lin…

LINIX 通过进程号查端口、通过端口查进程号

可以通过 netstat -nlp|grep pid或port,来查询端口、进程号 1.通过进程查PORT 2.通过PORT查进程 netstat命令参数说明 n 直接使用ip地址,而不通过域名服务器 -l 显示监控中的服务器的 Socket -p 显示正在使用 Socket 的程序识别码和程序名称