Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

  • Zookeeper

  • Dubbo

  • Kafka

    • Kafka的架构
    • docker搭建Kafka集群
    • spring关于kafka的最全配置
    • kafka分主副节点吗
    • kafka的 topic, key , 分区的关系,以及数量对应关系,以及默认值
    • spring项目是事先创建topic还是代码里创建
    • 一个topic一般创建几个分区,几个副本数,只有三个broker的话又是怎么分布的
    • 一共有3个broker,一个topic有10个分区,副本数最大为3?分区又是怎么分布在3个broker上的?用的什么算法
    • 副本数和分区数什么区别
    • 我还是不明白副本数,请画出具体的分布图,3个broker,某个topic10个分区
    • Leader+​​Follower = 副本数?
    • ​​ISR(In-Sync Replicas)是什么,最多有多少个,这个数量怎么得来的
      • 在 Spring Kafka 中发送消息
      • 向kafka中发送重复的数据会怎么样
      • send消息时,key有什么用?
    • 数据结构

    • 算法

    • OJ

    • 从道家哲学看计算机?
    • 后端
    • Kafka
    plantre
    2025-06-23
    目录

    ​​ISR(In-Sync Replicas)是什么,最多有多少个,这个数量怎么得来的

    ISR(In-Sync Replicas)是 Kafka 中用于保障数据一致性与高可用的核心机制,其数量动态变化且受多因素约束。以下是详细解析:


    # 📌 一、ISR 的定义与组成

    1. 核心概念

      • ISR(同步副本集):指与分区的 Leader 副本保持数据同步的所有副本集合,包含 Leader 自身。
      • AR(Assigned Replicas):分区的所有副本(含 Leader 和 Follower)。
      • OSR(Out-Sync Replicas):滞后于 Leader 的副本集合。
      • 关系公式:AR = ISR + OSR。
    2. 同步标准

      • Follower 需在 replica.lag.time.max.ms(默认 10 秒)内追上 Leader 的 LEO(Log End Offset,日志末端位移)。
      • 若 Follower 超时未同步,会被移出 ISR 进入 OSR;追平后可重新加入。

    # 🔢 二、ISR 的最大数量

    1. 上限约束

      • ISR 最大数量 = 分区的副本数(Replication Factor)。
      • 示例:若某分区配置副本数=3,则 ISR 最大为 3(Leader + 2 Follower)。
      • 不可超越副本数上限:副本数受限于 Broker 数量(例如 3 Broker 时副本数≤3)。
    2. 动态变化性

      • ISR 数量实际运行时可能小于副本数(如部分 Follower 滞后或宕机)。
      • 极端情况:若所有 Follower 均滞后,ISR 可能仅剩 Leader。

    # ⚙️ 三、ISR 数量的动态调整机制

    1. Leader 主动维护

      • Leader 周期性检查 Follower 同步状态:
        • 使用 replica.lag.time.max.ms 判断滞后阈值(默认 10 秒)。
        • 若 Follower 超时未拉取数据,移出 ISR;追平后重新加入。
      • 通过 ZooKeeper 持久化 ISR 变更记录,并通知集群更新元数据。
    2. 故障场景的影响

      • Broker 宕机:该 Broker 上的副本自动移出 ISR。
      • Leader 切换:新 Leader 从剩余 ISR 副本中选举产生,并接管数据同步。

    # ⚠️ 四、影响 ISR 数量的关键参数

    1. min.insync.replicas

      • 作用:定义 ISR 中必须保持的最小副本数(含 Leader)。
      • 示例:若设为 2,当 ISR 数量<2 时,生产者写入会抛出异常,牺牲可用性以保数据安全。
      • 建议值:生产环境通常设为 2(副本数=3 时)。
    2. 生产者 ACK 机制

      • acks=all:需等待 ISR 所有副本写入成功,此时实际参与同步的副本数=当前 ISR 数量。
      • acks=1:仅需 Leader 写入成功,与 ISR 数量无关。

    # 💎 总结

    • ISR 是什么:动态维护的同步副本集(含 Leader),保障数据可靠性与故障转移。
    • 最大数量:等于分区副本数,受限于 Broker 规模。
    • 数量来源:由 Leader 基于同步状态(replica.lag.time.max.ms)动态调整,并受 min.insync.replicas 强约束。

    设计本质:ISR 机制在数据一致性(高副本数)与系统可用性(低副本数容忍)间动态平衡,用户可通过参数按需配置。

    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    Leader+​​Follower = 副本数?
    在 Spring Kafka 中发送消息

    ← Leader+​​Follower = 副本数? 在 Spring Kafka 中发送消息→

    最近更新
    01
    集成loki
    07-04
    02
    TCP的ESTABLISHED是什么意思
    06-24
    03
    安装1panel
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式