kafka入门(十):副本数据同步

副本

副本(Replica),指的是分布式系统对数据和服务提供的一种冗余方式。

Kafka通过多副本机制实现故障自动转移,在Kafka集群中某个broker节点失效的情况下仍然保证服务可用。

失效副本

在ISR集合之外,也就是处于同步失效或功能失效(比如副本处于非存活状态)的副本统称为失效副本,失效副本对应的分区也就称为同步失效分区,即under-replicated分区。可以通过 kafka-topics.sh 脚本的under-replicated-partitions参数来显示。

怎么判定一个分区是否有副本处于同步失效的状态呢?

通过唯一的broker端参数 replica.lag.time.max.ms 来抉择,当ISR集合中的一个follower副本滞后leader副本的时间超过此参数指定的值时则判定为同步失败,需要将此follower副本剔除出ISR集合。 (注:lag,表示滞后)

一般有两种情况会导致副本失效:(1) follower副本进程卡住,在一段时间内根本没有向leader副本发起同步请求,比如频繁的Full GC。 (2) follower副本进程同步过慢,在一段时间内都无法追赶上leader副本,比如I/O开销过大。

如果只用一个指标来衡量 Kafka,那么同步失效分区(具有失效副本的分区)的个数必然是首选。

ISR伸缩:

kafka检测到 ISR集合中有失效副本时,就会收缩ISR 集合。

随着follower副本不断与leader副本进行消息同步,follower副本的LEO也会逐渐后移,并最终追赶上leader副本,此时该follower副本就有资格进入ISR集合。追赶上leader副本的判定准则是此副本的LEO是否不小于leader副本的HW,注意这里并不是和leader副本的LEO相比。

当ISR集合发生增减时,或者ISR集合中任一副本的LEO发生变化时,都可能会影响整个分区的HW。

follower 副本同步leader副本的数据:

整个消息追加的过程可以概括如下:

(1)生产者客户端发送消息至leader副本(副本1)中。

(2)消息被追加到leader副本的本地日志,并且会更新日志的偏移量。

(3)follower副本(副本2和副本3)向leader副本请求同步数据。

(4)leader副本所在的服务器读取本地日志,并更新对应拉取的follower副本的信息。

(5)leader副本所在的服务器将拉取结果返回给follower副本。

(6)follower副本收到leader副本返回的拉取结果,将消息追加到本地日志中,并更新日志的偏移量信息。

LEO与HW:

follower副本向leader副本拉取消息,在拉取的请求中会带有自身的LEO信息,

leader副本返回给follower副本消息,并且还带有自身的HW信息。

follower副本拉取到消息后,会更新各自的LEO,以及 HW。

leader副本的HW是一个很重要的东西,因为它直接影响了分区数据对消费者的可见性。

kafka入门文章

https://blog.csdn.net/sinat_32502451/category_12465196.html

资料来源

《深入理解Kafka:核心设计与实践原理》

相关推荐
海兰1 天前
【Kafka进阶4】KRaft 完全指南:Apache Kafka 摆脱 ZooKeeper 的架构
zookeeper·kafka·apache
海兰2 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
小白一枚132 天前
[学习笔记]Kafka 篇:从原理到实战的一站式指南
大数据·运维·elk·kafka·个人开发
阿里云云原生3 天前
还在给 AI “喂冷饭”?8.28 上海沙龙:带你跨越 AI 实时上下文鸿沟
云原生·kafka
海兰3 天前
【Kafka学习4】六大核心 API
学习·kafka·linq
NJCloud3 天前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
海兰4 天前
【Kafka学习3】Apache Kafka 本地部署环境快速入门指南
学习·kafka·apache
渣渣盟4 天前
Flink + Kafka 数据写入实战:从API调用到端到端一致性精讲
flink·kafka·linq
海兰4 天前
【Kafka学习2】Apache Kafka 典型应用场景
学习·kafka·apache
heimeiyingwang4 天前
【架构实战】消息队列选型与异步架构设计:从Kafka到RabbitMQ,一次聊透
架构·kafka·rabbitmq