Kafka可靠性之HW与Leader Epoch

《深入理解Kafka:核心设计与实现原理》是基于2.0.0版本的书

在这本书中,终于看懂了笔者之前提过的几个问题

准备知识

1、leader里存着4个数据:leader_LEO、leader_HW、remote_LEO集合、remote_HW集合

2、follower里只保存自身的:follower_LEO、follower_HW

HW和LEO更新过程

假设:

1个leader 和 2个follower

此时:leader_LEO = 5、leader_HW = 0、所有 follower 的 follower_LEO = 0、follower_HW = 0

同步开始

1、follower向leader发送fetch请求,来拉取消息,这个fetch请求会带上各自的follower_LEO

(先省略leader处理fetch请求的过程)

2、leader接收fetch请求后,处理并返回,这个fetch请求的响应会带上 leader_HW

3、follower拿到了fetch请求的response,同步消息数据,更新自己的 follower_LEO

(假设此时 这2个 follower_HW 分别为3和4)

4、接下来计算一下 follower_HW 并更新

公式:follower_HW = min(leader_HW,follower_LEO) 

所以 两个follower此时的 follower_HW 都是 min(0,0) = 0

5、follower再次发送fetch请求,并带上各自的 follower_LEO

6、leader处理fetch请求过程如下

把这2个 follower_LEO 加上自己的 leader_LEO,取最小值作为新的 leader_HW

公式:leader_HW = min(leader_LEO,RemoteIsrLEO)

(RemoteIsrLEO:ISR中的所有follower的follower_LEO)

leader_HW = min(l5,3,4) = 3

7、leader_HW = 3 被 fetch请求的response带上,返回

8、2个follower收到response后,依然是,同步消息数据,更新 follower_LEO,更新 follower_HW

(假设此时 这2个 follower_HW 分别更新至 6和8)

follower_HW1 =  min(3,6) = 3

<
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值