kafka-关于ISR-概述

一. 什么是ISR ?

Kafka 中通常每个分区都有多个副本,其中一个副本被选举为 Leader,其他副本为 Follower。ISR 是指与 Leader 副本保持同步的 Follower 副本集合。ISR 机制的核心是确保数据在多个副本之间的一致性和可靠性,同时在 Leader 副本出现故障时能够快速进行故障转移,保证服务的可用性。

二. ISR 基本原理:

  1. 数据同步过程:

首先: 生产者发送的消息首先会被 leader 副本接收,leader 副本会将消息写入本地日志文件,并更新其偏移量。follower 副本会定期向 leader 副本发送 fetch 请求,拉取新的消息。follower 副本在收到消息后,会将其写入本地日志文件,并更新自己的偏移量。如果 Follower 副本能够及时地从 leader 副本拉取到数据,并将其成功写入本地日志,那么该 follower 副本就被认为是与 leader 副本保持同步的,会被包含在 ISR 集合中。

  1. ISR 变更:

当一个新的 follower 副本启动并开始从 leader 副本拉取数据时,如果它能够在一定时间内跟上 leader 副本的进度,即它的日志偏移量与 leader 副本的差距在允许范围内,那么它就会被添加到 ISR 集合中。 反之,如果某个 follower 副本由于网络故障、磁盘故障等原因,导致它与 leader 副本的差距超过了一定的阈值,那么它就会被从 ISR 集合中移除。当 follower 副本恢复正常后,会尝试重新追赶 leader 副本,一旦追上,又会被重新加入到 ISR 集合中。

  1. 选举与故障转移

选举:当 leader 副本出现故障时,kafka 会从 ISR 集合中选举一个 follower 副本作为新的 leader。通常选择 ISR 中日志偏移量最大的 follower 作为新 leader,因为它的数据与原 leader 最为接近,能够最大程度地保证数据的一致性。新的 leader 选举出来后,它会等待 ISR 中的其他副本将数据同步到自己的高水位,然后才会开始处理新的消息。这样可以确保在故障转移过程中,已经被 ISR 中的所有副本确认的消息不会丢失,从而保证了数据的一致性。

  1. 涉及到的配置参数:

replica.lag.time.max.ms:用于配置 follower 副本与 leader 副本之间允许的最大延迟时间。如果 follower 副本在这个时间内没有向 leader 副本发送 fetch 请求或者没有跟上 leader 副本的进度,那么它将被认为是滞后的,并可能会被移出 ISR 集合。默认值是 10000 毫秒。

replica.lag.max.messages:follower 副本与 leader 副本之间允许的最大消息滞后数量。如果 follower 副本落后 leader 副本的消息数量超过了这个阈值,它也可能会被移出 ISR 集合。

三. 查看ISR信息:

查看某个topic的分区,ISR信息:

复制代码
bin/kafka-topics.sh --describe --bootstrap-server 10.139.3.100:9092 --topic xxxx

​​​​​​​


深耕运维行业多年,擅长linux、容器云原生、运维自动化等方面。

欢迎沟通交流!

(V: xiaoxiangbj2013 ) !

相关推荐
Thomas.Sir3 天前
第21课:PyTorch|GPU多卡训练与分布式训练基础【让多卡并行成为你的加速引擎】
人工智能·pytorch·分布式
Cicada1283 天前
库存消息消费的正确性设计——从幂等窗口到批量流水线
分布式·系统架构
Nano叶落3 天前
Kafka 消费积压排查入门:Docker 搭环境亲手制造一次 ‘消息堵死‘,10 分钟看懂 Lag
kafka
Francek Chen4 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式
Gl�ria4 天前
Hadoop/YARN 集群缩容:下线DN节点
大数据·hadoop·分布式
吉甫作诵4 天前
Kafka 集群安装与运维实战:消费组排查、Offset 重置与副本重分配
大数据·运维·分布式·kafka·消息队列
imDwAaY4 天前
消息队列四大核心问题:顺序性、幂等性、可靠性与一致性
学习·kafka·rabbitmq
wno7044 天前
Spring Boot整合Kafka
spring boot·kafka
是Dream呀5 天前
Harness 工程:让 Agent 真正把任务做完
人工智能·分布式·缓存·agent