Kafka 分区主副本同步数据过程

LEO log end offset 日志末端偏移量,表示下一次数据写入的offset位移值,如果一个分区有三条消息,那么LEO就是3,LEO是从0开始算的;

HW 高水位 highWaterMark缩写,控制消费者可读取消息范围,取一个partition分区中ISR中最小的LEO,consumer最多只能消费到HW所在的位置。另外每个replica都有HW,leader和follower各自负责更新自己的HW的状 态。对于leader新写入的消息,consumer不能立刻消费,leader会等待该消息被所有ISR中的replicas同步后更新HW, 此时消息才能被consumer消费。这样就保证了如果leader所在的broker失效,该消息仍然可以从新选举的leader中获取。

对于HW, leader副本和follower副本只保存自身的HW,

对于LEO,follower副本只保存自身的,但是leader副本除了保存自身的,还会保存follower副本的

无论是leader副本所在的节点,还是follower副本所在的节点,分区都会保存所有的副本对象,但是只有本地副本才会有对应的日志文件。

整个数据写入和同步过程:

1、leader副本把数据写入本地磁盘

2、leader副本更新LEO

3、follower副本发送FETCH同步数据请求,携带自身的LEO

4、leader副本会读取底层日志文件中的消息数据,更新本地保存的其他副本LEO

5、leader副本尝试更新ISR列表

6、leader副本更新HW

7、leader副本给follower副本返回数据,携带leader副本的HW值

8、follower副本接收响应并写入数据,更新自身的LEO

9、follower副本更新笨的HW值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值