当前位置: 首页 > news >正文

Kafka 的 ISR 机制

ISR 是什么

ISR,是 In-Sync Replicas,同步副本的意思
在 Kafka中,每个主题分区可以有多个副本(replica)。ISR 是与主副本(Leader Replica)保持同步的副本集合。

ISR 的作用

ISR 机制就是用于确保数据的可靠性和一致性的

数据一致性保证:

当消息被写入 Kafka 的分区时,它首先会被写入 Leader,然后 Leader 将消息复制给 ISR 中的所有副本。只有当 ISR 中的所有副本都成功地接收到并确认了消息后,主副本才会认为消息已成功提交。这种机制确保了数据的可靠性和致性。
生产者在写入数据时,可以通过设置 acks 参数来控制数据的一致性级别。设置 acks=all(或acks=-1)

故障容错能力:

如果领导副本发生故障,Kafka 会从 ISR 中选取一个新的领导副本。由于 ISR 中的副本与之前的领导副本保持同步,新的领导副本能够继续提供服务,而不会丢失数据。

ISR 的维护机制

领导副本更新 ISR :

领导副本会定期检查每个追随者副本的状态。如果某个追随者副本在指定时间内未能跟上领导副本的更新,领导副本会将其从 ISR 中移除。

追随者副本重新加入 ISR :

当追随者副本追上了领导副本的日志进度(即达到了与领导副本相同的日志偏移量),领导副本会将其重新加入ISR。

ISR 列表维护

在 Kafka 中,ISR(In-Sync Replicas)列表的维护是通过副本状态配置参数来进行的。具体的 ISR 列表维护机制在不同的 Kafka 版本中有所变化。

before 0.9.x

在 0.9.x 之前的版本,Kafka 有一个核心的参数 :replica.lag.max.messages 表示如果 Follower 落后 Leader 的消息数量超过了这个参数值,就认为 Follower 就会从 ISR 列表里移除。

但是,基于 replica.1ag.max.messages 这种实现,在瞬间高并发访问的情况下会有问题:比如Leader瞬间接收到几万条消息,然后所有 Follower 还没来得及同步过去,此时所有 Follower 都会被踢出 ISR 列表。

after 0.9.x

Kafka 从 0.9.x 版本开始,引入了 replica.1ag.max.ms 参数,表示如果某个 Follower 的 LEO(latest endoffset)一直落后 Leader 超过了10秒,那么才会被从 ISR 列表里移除

这样的话,即使出现瞬间流量,导致 Follower 落后很多数据,但是只要在限定的时间内尽快追上来就行了

相关文章:

  • 并查集..
  • 智启万象|挖掘广告变现潜力,保障支付安全便捷
  • 集成高精度16bit模数转换ADC电路的两通道测量高精度电容调理芯片 - MDC02
  • C盘磁盘空间不足:VirtualBox的锅
  • 代码随想录 day 39 动态规划 打家劫舍
  • Adobe PhotoShop - 制图操作
  • 【计算机网络——分组延时,丢失,吞吐量】
  • 2024做一个网站要多少钱?
  • 【面试宝典】java多线程面试题总结(中)
  • 学习笔记第二十四天
  • 2024牛客暑期多校训练营7
  • 在IntelliJ IDEA中利用Git拉取项目
  • Midjourney技巧-生成拟人化动物(做你的品牌形象代言人)
  • 代码随想录算法训练营第十五天(一)| 110.平衡二叉树 (优先掌握递归)257. 二叉树的所有路径
  • 【安全工具推荐-Search_Viewer资产测绘】
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • CSS中外联样式表代表的含义
  • Java程序员幽默爆笑锦集
  • JS学习笔记——闭包
  • Linux下的乱码问题
  • mac修复ab及siege安装
  • 创建一个Struts2项目maven 方式
  • 计算机常识 - 收藏集 - 掘金
  • 七牛云假注销小指南
  • 巧用 TypeScript (一)
  • ​iOS实时查看App运行日志
  • ​zookeeper集群配置与启动
  • ​数据链路层——流量控制可靠传输机制 ​
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (160)时序收敛--->(10)时序收敛十
  • (3)STL算法之搜索
  • (day18) leetcode 204.计数质数
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (强烈推荐)移动端音视频从零到上手(上)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)Android布局类型(线性布局LinearLayout)
  • (转)Oracle存储过程编写经验和优化措施
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)visual stdio 书签功能介绍
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • (自适应手机端)行业协会机构网站模板
  • .NET Core WebAPI中封装Swagger配置
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET企业级应用架构设计系列之结尾篇
  • .NET项目中存在多个web.config文件时的加载顺序
  • @PreAuthorize与@Secured注解的区别是什么?
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [APIO2015]巴厘岛的雕塑