Kafka深入原理(2)-ISR机制

1.概念

1.AR(Assigned Repllicas):一个分区里面所有的副本(不区分leader和follower)

2.ISR(In-Sync Replicas):能够和leader保持同步的follower+leader本身组成的集合

3.OSR(Out-Sync Replicas):不能和leader保持同步的follower集合

公式:    AR=ISR+OSR

注意:1.kafka只会保证ISR集合中的所有副本保持完全同步。

        2.kafka一定会保证leader接收到消息然后完全同步给ISR中的所有副本

        3.ISR的机制保证了处于ISR内部的follower都可以和leader保持同步,一旦出现故障或者延迟(在一定时间内没有同步),就会被提出ISR

2.ISR踢出replica

# 默认10000 即 10秒

replica.lag.time.max.ms

# 允许 follower 副本落后 leader 副本的消息数量,超过这个数量后,follower 会被踢出 ISR

replica.lag.max.messages

一个是基于时间间隔,一个是基于消息条数

0.9版本之后移除了消息条数配置    replica.lag.max.messages

replica.lag.time.max.ms的正确理解

只要在 replica.lag.time.max.ms 时间内 follower 有同步消息,即认为该 follower 处于 ISR 中。千万不要这么认为,因为这里还涉及一个速率问题(你理解为蓄水池一个放水一个注水的问题)。

如果leader副本的消息流入速度大于follower副本的拉取速度时,你follower就是实时同步有什么用?

典型的出工不出力,消息只会越差越多,这种follower肯定是要被踢出ISR的。

当follower副本将leader副本的LEO之前的日志全部同步时,则认为该follower副本已经追赶上leader副本。

此时更新该副本的lastCaughtUpTimeMs标识。

Kafka的副本管理器(ReplicaManager)启动时会启动一个副本过期检测的定时任务,

会定时检查当前时间与副本的lastCaughtUpTimeMs差值是否大于参数replica.lag.time.max.ms指定的值。

所以replica.lag.time.max.ms的正确理解是:

follower在过去的replica.lag.time.max.ms时间内,已经追赶上leader一次了。

kafka 副本失效原因

两个方面,一个是Kafka自身的问题,另一个是外部原因

Kafka源码注释中说明了一般有两种情况会导致副本失效:

1、follower副本进程卡住,在一段时间内根本没有想leader副本发起同步请求,比如频繁的Full GC。

2、follower副本进程同步过慢,在一段时间内都无法追赶上leader副本,比如IO开销过大。

1、通过工具增加了副本因子,那么新增加的副本在赶上leader副本之前也都是处于失效状态的。

2、如果一个follower副本由于某些原因(比如宕机)而下线,之后又上线,在追赶上leader副本之前也是出于失效状态。

什么情况下OSR中的replica会重新假如ISR

当replica追上leader,就会回到ISR集合当中

3.ISR核心

   动态调整

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 副本机制 在分布式系统中,为了提高可靠性,最常用、最有效的策略是“副本机制”,Kafka 也不例外。Kafk...
    you的日常阅读 3,385评论 1 5
  • 什么是Kafka Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。 最早设计的目的是作为Li...
    WEIJAVA阅读 12,736评论 4 76
  • 1 前言 Kafka的流行归功于它设计和操作简单、存储系统高效、充分利用磁盘顺序读写等特性、非常适合在线日志收集等...
    爱情小傻蛋阅读 11,379评论 0 2
  • 本文仅为笔者平日学习记录之用,侵删原文:https://mp.weixin.qq.com/s/TUFNictt8X...
    longLiveData阅读 1,716评论 0 0
  • 让分布式系统的操作变得简单,在某种程度上是一种艺术,通常这种实现都是从大量的实践中总结得到的。Apache Kaf...
    一粒米_394c阅读 3,355评论 0 0