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

article/2025/9/13 20:18:41

Hi,大家好,我是Mic。

一个工作5年的粉丝,在简历上写精通Kafka。

结果在面试的时候直接打脸。

面试官问他:“什么是ISR,为什么需要设计ISR”

然后他一脸懵逼的看着面试官。

下面看看普通人和高手的回答。

需要高手面试文档(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以扫描下方二维码

普通人:

ISR好像是Kafka里面的一个机制吧。

为什么要引入,应该是跟数据同步有关系。

高手:

好的,关于这个问题,我需要从几个方面来回答。

首先,发送到Kafka Broker上的消息,最终是以Partition的物理形态来存储到磁盘上的。

而Kafka为了保证Parititon的可靠性,提供了Paritition的副本机制,然后在这些Partition副本集里面。

存在Leader Partition和Flollower Partition。

生产者发送过来的消息,会先存到Leader Partition里面,然后再把消息复制到Follower Partition,

这样设计的好处就是一旦Leader Partition所在的节点挂了,可以重新从剩余的Partition副本里面选举出新的Leader。

然后消费者可以继续从新的Leader Partition里面获取未消费的数据。

在Partition多副本设计的方案里面,有两个很关键的需求。

  • 副本数据的同步

  • 新Leader的选举

这两个需求都需要涉及到网络通信,Kafka为了避免网络通信延迟带来的性能问题,

以及尽可能的保证新选举出来的Leader Partition里面的数据是最新的,所以设计了ISR这样一个方案。

ISR全称是 in-sync replica,它是一个集合列表,里面保存的是和Leader Parition节点数据最接近的Follower Partition

如果某个Follower Partition里面的数据落后Leader太多,就会被剔除ISR列表。

简单来说,ISR列表里面的节点,同步的数据一定是最新的,所以后续的Leader选举,只需要从ISR列表里面筛选就行了。

所以,我认为引入ISR这个方案的原因有两个

  1. 尽可能的保证数据同步的效率,因为同步效率不高的节点都会被踢出ISR列表。

  2. 避免数据的丢失,因为ISR里面的节点数据是和Leader副本最接近的。

以上就是我对这个问题的理解。

总结

在我看来,这个问题非常有研究价值。

一般来说,副本数据同步,无非就是同步阻塞、或者异步非阻塞。

但是这两种方案,要么带来性能问题,要么带来数据丢失问题,都不是特别合适。

而ISR,就非常完美解决了这个问题,在实际过程中,我们也可以借鉴类似的设计思路。

喜欢我作品的小伙伴,记得点赞收藏加关注。

需要高手面试文档(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以扫描下方二维码

↓↓↓↓↓↓↓↓↓↓↓↓↓↓


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

相关文章

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 的程序识别码和程序名称

Linu X

LINU X 基本命令 / 根目录 几个盘几个根目录 dev 设备目录 boot 启动文件 etc 配置目录 home 家目录 用户1.管理员 2.一般用户 proc硬件信息 【benlocalhost desktop]#管理员 管理员 主机名 当前目录 $普通用户 cd 修改,进入当前目录 ls显示当前目录下的项目 ll显示…

linx

linx ls -l 命令详解 上图用ls -l命令查看某一个目录会得到一个7个字段的列表 1. 文件类型     “-”表示普通文件; “d”表示目录; “l”表示链接文件; “p”表示管理文件; “b”表示块设备文件; “c”表示…

Linux-

文章目录 基础知识Linux使用命令整理Linux系统下文件类型颜色表示含义 基础知识 Linux使用命令整理 zip 文件名——(压缩命令)将所有.jpg的文件压缩成一个zip包 ,案例:zip all.zip ;zip *.jpg unzip 文件名——&…

Linix

Linix 一、Linix的基本使用1.1 、Linux目录结构1.2、文件目录属性1.3、目文件展示1.4、用户及权限管理1.4.1、概述1.4.2、用户管理1.4.3、组管理1.4.4、权限管理 1.5、查看用户信息 查看用户组信息 二、命令相关2.1、系统相关1.4.4、权限管理 2.2、进程相关2.2.1、端口占用情况…

Linux目录结构与路径

目录 一、Linux目录结构 二、绝对路径与相对路径 一、Linux目录结构 Linux 系统中没有盘符的概念,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构, 文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录,呈…

Linux基础

Linix概述 unix 是多用户、多任务的操作系统,Linux是基于Unix的,Linux的版本分为两种:内核版本和发行版本;内核版本是指在 Linus领导下的内核小组开发维护的系统内核的版本号 Linux的远程访问:远程访问的软件:CRT lin…

0.1 什么是计算机

Redhat linux 红帽认证管理员(RHCSA,全称为Red Hat Certified System Administrator)属于红帽Linux的初级入门认证,要求学生能够熟练的执行linux命令,主要考察学生对红帽Linux系统基础管理与维护的能力,如添加用户、修改密码、添加硬盘分区、…

STM32中断向量表的位置,重定向

http://blog.csdn.net/u012722571/article/details/47295245 lanmanck原创】 这篇文章已经说了STM32的启动过程: http://blog.csdn.net/lanmanck/article/details/8252560 我们也知道怎么跳到main函数了,那么,中断发生后,又是…

DSP28335学习——中断向量表的初始化

在F28335有很多资源,同样也有很多外设,这些外设与相关资源都有可能发布新的任务让内核来判断与处理。F28335的中断源可分为片内外设中断源,如PWM、CAP、QEP、定时器等、片外中断源,外部中断输入引脚XINT1,XINT2引人的外…

IMX6ULL-IRQ中断之添加中断向量表

一. 中断向量表 中断向量表是存放中断向量的表。中断服务程序的入口地址或存放中 断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。 当有中断事件发生时,处理器通过中断向量表进入相关的中断服务程序处理事件。 二…

BIOS 中断向量表

在bochs虚拟器调试中输入info ivt可以查看BIOS中断向量表 具体说明如下: 中断描述INT 00hCPU:除零错,或商不合法时触发INT 01hCPU:单步陷阱,TF标记为打开状态时,每条指令执行后触发INT 02hCPU:…

【裸机开发】认识中断向量表(设置中断向量偏移的原因)

之前的LED驱动不存在中断,也就不包含中断的初始化。如果程序包含了中断,我们应还需要初始化哪些内容?要解决这个问题,我们需要先了解一个中断系统包含了哪些内容。 ① 中断向量表:描述中断对应的中断服务函数&#xf…

linux内核学习10.1:Linux内核ARM7架构异常中断向量表

参考:https://www.cnblogs.com/douzi2/p/5112743.html 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。 说明 Ker…