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

相关推荐
数据智能老司机11 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机11 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
数据智能老司机12 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
IT成长日记12 小时前
【Kafka基础】Kafka工作原理解析
分布式·kafka
州周14 小时前
kafka副本同步时HW和LEO
分布式·kafka
爱的叹息15 小时前
主流数据库的存储引擎/存储机制的详细对比分析,涵盖关系型数据库、NoSQL数据库和分布式数据库
数据库·分布式·nosql
程序媛学姐15 小时前
SpringKafka错误处理:重试机制与死信队列
java·开发语言·spring·kafka
千层冷面16 小时前
RabbitMQ 发送者确认机制详解
分布式·rabbitmq·ruby
ChinaRainbowSea16 小时前
3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列
java·分布式·后端·rabbitmq·ruby·java-rabbitmq
敖正炀16 小时前
基于RocketMQ的可靠消息最终一致性分布式事务解决方案
分布式