【项目实战】Kafka 分区中的AR、ISR、OSR

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO TOP红人

Java知识图谱点击链接:体系化学习Java(Java面试专题)

💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

✊✊ 感觉对你有帮助的朋友,可以给博主一个三连,非常感谢 🙏🙏🙏

在这里插入图片描述

1、什么是 AR、ISR、OSR

AR(Assigned Replicas) 是指为每个分区分配的副本集合。在Kafka中,每个分区可以有多个副本,其中一个副本被选举为leader,其他副本为follower。AR是指包括leader副本在内的所有副本的集合。

ISR(In-Sync Replicas) 是指与leader副本保持同步的follower副本集合。只有处于ISR中的副本才会被认为是同步的,其他副本将被视为不可靠的。当follower副本无法及时跟上leader副本的同步进度时,它将被移出ISR,直到它能够追赶上来。ISR机制确保了数据的一致性和可靠性。

OSR(Out-of-Sync Replicas) 是指与leader副本不同步的follower副本集合。当follower副本无法及时跟上leader副本的同步进度时,它将被移出ISR,并被标记为OSR。OSR副本将尝试追赶上来,一旦追赶上来并与leader副本保持同步,它将被重新添加到ISR中。

这些概念在Kafka中用于管理副本的分配和同步,以确保数据的可靠性和一致性。

2、ISR 的伸缩性

ISR(In-Sync Replicas,同步副本) 的伸缩性是指ISR的能力适应负载变化和副本增减的能力。ISR的伸缩性对于Kafka集群的性能和可靠性非常重要。

当Kafka集群的负载增加或减少时,ISR的伸缩性可以通过以下方式来实现:

  1. 副本增加:当负载增加时,可以通过增加follower副本来提高ISR的伸缩性。新的follower副本将追赶上leader副本的同步进度,并加入ISR,从而分担负载。

  2. 副本减少:当负载减少时,可以通过减少follower副本来提高ISR的伸缩性。不再需要的follower副本将被移出ISR,并停止与leader副本的同步,从而减轻负载。

通过动态调整ISR的大小,Kafka可以根据负载的变化来自动平衡数据分布和副本同步,以提供更好的性能和可靠性。ISR的伸缩性是Kafka集群能够处理大规模数据流的关键因素之一。

3、AR = ISR + OSR ?

在这里插入图片描述

对于Kafka中的副本集合,有一个简单的关系可以描述为:AR(Assigned Replicas,分配副本)等于ISR(In-Sync Replicas,同步副本)加上OSR(Out-of-Sync Replicas,不同步副本)。

具体来说,AR是指为每个分区分配的副本集合,包括leader副本和follower副本。ISR是与leader副本保持同步的follower副本集合,即可靠的副本。OSR是与leader副本不同步的follower副本集合,即不可靠的副本。

因此,AR可以被分解为ISR和OSR的组合。ISR中的副本用于保证数据的一致性和可靠性,而OSR中的副本则需要追赶上来并与leader副本保持同步,才能重新加入ISR。

4、数据写入及同步的过程

整个数据写入及同步的过程分为九个步骤:

  1. leader 副本将数据写入本地磁盘

  2. leader 副本更新 LEO

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

  4. leader 副本更新本地保存的其它副本的 LEO

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

  6. leader 副本更新 HW

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

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

  9. follower 副本更新本地的 HW 值

4、HW 和 LEO

在这里插入图片描述

HW(High Watermark)表示Kafka分区中已经被确认的最高偏移量。它代表了消费者可以安全地读取的消息位置。消费者只能消费高于HW的消息,确保消息的可靠性。

LEO(Log End Offset)表示Kafka分区中当前的最高偏移量。它代表了分区中最新的消息位置,包括已经写入但尚未被确认的消息。LEO是一个动态的值,随着消息的写入和确认而变化。

HW和LEO在Kafka中用于管理消息的可靠性和一致性。消费者可以通过比较HW和LEO来确定自己的消费进度,并确保不会丢失任何重要的消息。

5、写在最后总结

AR(Assigned Replicas,分配副本)、ISR(In-Sync Replicas,同步副本)、OSR(Out-of-Sync Replicas,不同步副本)、HW(High Watermark,高水位标记)和LEO(Log End Offset,日志结束偏移量),如下:

  1. AR是指为每个分区分配的副本集合,包括leader副本和follower副本。每个分区可以有多个副本,其中一个副本被选举为leader,其他副本为follower。

  2. ISR是指与leader副本保持同步的follower副本集合。只有处于ISR中的副本才会被认为是同步的,其他副本将被视为不可靠的。ISR中的副本会按照leader副本的进度来进行数据复制和同步。

  3. OSR是指与leader副本不同步的follower副本集合。当follower副本无法及时跟上leader副本的同步进度时,它将被移出ISR,并被标记为OSR。OSR副本将尝试追赶上来,一旦追赶上来并与leader副本保持同步,它将被重新添加到ISR中。

  4. HW(High Watermark)是指已经被确认的最高偏移量,代表了消费者可以安全地读取的消息位置。消费者只能消费高于HW的消息,确保消息的可靠性。

  5. LEO(Log End Offset)是指当前分区中最新的消息位置,包括已经写入但尚未被确认的消息。LEO是一个动态的值,随着消息的写入和确认而变化。

综上所述,AR是包括leader和follower副本的集合,ISR是与leader副本保持同步的follower副本集合,OSR是与leader副本不同步的follower副本集合。HW代表了消费者可以安全读取的消息位置,LEO代表了当前分区中最新的消息位置。这些概念在Kafka中用于管理副本的同步和消息的可靠性。

💕💕 本文由激流原创,原创不易,希望大家关注、点赞、收藏,给博主一点鼓励,感谢!!!
🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃
在这里插入图片描述

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

激流丶

感觉小弟写的不错,给点鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值