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 ) !

相关推荐
喂完待续4 小时前
Apache Hudi:数据湖的实时革命
大数据·数据仓库·分布式·架构·apache·数据库架构
yh云想12 小时前
《从入门到精通:Kafka核心原理全解析》
分布式·kafka
武子康14 小时前
大数据-70 Kafka 日志清理:删除、压缩及混合模式最佳实践
大数据·后端·kafka
ModelWhale17 小时前
“大模型”技术专栏 | 浅谈基于 Kubernetes 的 LLM 分布式推理框架架构:概览
分布式·kubernetes·大模型
愿天堂没有C++17 小时前
C++——分布式
分布式
UPToZ17 小时前
【Docker】搭建一个高性能的分布式对象存储服务 - MinIO
分布式·docker·容器
前端世界1 天前
鸿蒙任务调度机制深度解析:优先级、时间片、多核与分布式的流畅秘密
分布式·华为·harmonyos
A尘埃1 天前
金融项目高可用分布式TCC-Transaction(开源框架)
分布式·金融·开源
夜影风1 天前
RabbitMQ核心架构与应用
分布式·架构·rabbitmq
花酒锄作田1 天前
Nginx反向代理Kafka集群
nginx·kafka