Kafka 副本机制

Kafka 副本机制

文章目录

    • Kafka 副本机制
        • Kafka 副本机制
        • In-sync Replicas(ISR)
        • Unclean 领导者选举(Unclean Leader Election)

副本机制:通常是指分布式系统在多台网络互联的机器上保存有相同的数据拷贝

副本机制能带来的好处:

1. 提供数据冗余。即使系统部分组件失效,系统依然能够继续运转,因而增加了整体可用性以及数据持久性。
2. 提供高伸缩性。支持横向扩展,能够通过增加机器的方式来提升读性能,进而提高读操作吞吐量。
3. 改善数据局部性。允许将数据放入与用户地理位置相近的地方,从而降低系统延时。

但是 Kafka 只能得益于第一点,而无法享受二三两点;因为 Kafka 的副本是有 leader 和
follower; 只有 leader 副本才对外提供服务;

只有 leader 对外提供服务的好处在于,分布式情况下 数据一致性问题能够容易保障,不需要考虑主从之间数据读不一致的情况;

Kafka 副本机制

Kafka 副本机制_第1张图片

  1. Kafka 副本分为 leader 副本和 follower 副本;副本是在分区层面实现的,即每个分区都有
    一个 leader 副本和多个 follower 副本;

  2. Kafka 的 leader 副本对外提供读写服务,而 follower 只负责异步拉取 leader 副本中的数据
    进行数据同步;

  3. Kafka 的 leader 副本的 broker 如果挂了,那么就需要重新选出 leader;这依靠 Zookeeper 提供的
    监控功能实时感知,并在符合条件的 follower 副本中开启新一轮的 leader 选举;

In-sync Replicas(ISR)

follower 副本通过异步拉取同步 leader 副本中数据,当 leader 出现故障需要重新选举时,就需要评估
哪些 follower 能够有资格进行评选;

Kafka 引入了了 In-sync Replicas ISR副本集合,ISR 中的副本都是与 Leader 同步的副本

如何判断是否一个 follower 副本能够进入 ISR 副本集合? 通过在 Broker 端参数
replica.lag.time.max.ms,指Follower 副本能够落后 Leader 副本的最长时间间隔,当前默认值是 10 秒

具体来说:

如果这个同步过程的速度持续慢于 Leader 副本的消息写入速度,
那么在 replica.lag.time.max.ms 时间后,此 Follower 副本就会被认为是与
Leader 副本不同步的,因此不能再放入 ISR 中。此时,Kafka 会自动收缩 ISR 集合
,将该副本“踢出”ISR。

Unclean 领导者选举(Unclean Leader Election)

Unclean Leader Election : 意为如果 leader 副本出现故障,并且 ISR 副本集合为空,
是否允许发生 Unclean leader 选举;

通过Broker 端参数 unclean.leader.election.enable 控制是否允许 Unclean 领导者选举。不建议开启;

你可能感兴趣的:(Kafka,kafka,分布式,java)