我的架构梦:(九十一)消息中间件之Kafka如何保证一致性

98 篇文章 63 订阅 ¥59.90 ¥99.00
本文深入探讨Kafka消息中间件的一致性保证,重点讲解了水位标记(HW和LEO)的概念及更新机制,以及Leader副本的角色。通过实例分析了正常和异常情况下HW和LEO的更新过程,揭示了潜在的数据丢失和不一致问题。此外,还介绍了Leader Epoch的使用,它是解决这些问题的关键,确保了副本间的正确同步和数据完整性。
摘要由CSDN通过智能技术生成

一、概念

1、水位标记

水位或水印(watermark)一词,表示位置信息,即位移(offset)。Kafka源码中使用的名字是高
水位,HW(high watermark)。

2、副本角色

Kafka分区使用多个副本(replica)提供高可用

3、LEO和HW

每个分区副本对象都有两个重要的属性:LEO和HW。

  • LEO:即日志末端位移(log end offset),记录了该副本日志中下一条消息的位移值。如果 LEO=10,那么表示该副本保存了10条消息,位移值范围是[0, 9]。另外,Leader LEO和Follower LEO的更新是有区别的。
  • HW:即上面提到的水位值。对于同一个副本对象而言,其HW值不会大于LEO值。小于等于 HW值的所有消息都被认为是“已备份”的(replicated)。Leader副本和Follower副本的HW 新不同。

在这里插入图片描述

上图中,HW值是7,表示位移是 0~7 的所有消息都已经处于“已提交状态”(committed),而LEO 值是14,8~13的消息就是未完全备份(fully replicated)——为什么没有14?LEO指向的是下一条消息到来时的位移

消费者无法消费分区下Leader副本中位移大于分区HW的消息。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老周聊架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值