kafka中AR、ISR、OSR以及HW、LEO的关系

Kafka 为分区引入了多副本 (Replica) 机制, 通过增加副本数量可以提升容灾能力。同一分区的不同副本中保存的是相同的消息(在同一时刻,副本之间并非完全一样)
副本之间是 “一主多从”的关系,其中leader 副本负处理读写请求 ,follower 副本只负责与 leader 副本的消息同步。副本处于不同的 broker ,当 leader 副本出现故障时,从 follower 副本中重新选举新的 leader 本对外提供服务。 Kafka 通过多副本机制实现了故障的自动转移,当 Kafka 集群中某个 broker失效时仍然能保证服务可用

AR、ISR、OSR

在Kafka中,生产者和消费者只与leader 副本进行交互,而 follow 副本只负责消息的同步,很多时候 follower 副本中的消息相对 leader 副本而言会有一定的滞后。根据同步情况的不同,kafka将副本分为了以下几种集合:

  • AR ( Assigned Replicas ):分区中的所有副本统称为 AR

  • ISR(On-Sync Replicas):所有与 leader 副本保持一定程度同步的副本(包括 leader 副本在内〕组成 ISR

  • OSR (Out-of-Sync Replicas ):与 leader 副本同步滞后过多的副本(不包 leader 副本)组成

AR = ISR + OSR,默认情况下,当leader副本发生故障时,只有ISR集合中的副本才有资格被选举为新的leader

在正常情况下, follower 副本都应该与 leader 副本保持一定程度的同步,即 AR=ISR,,OSR 集合为空。

ISR 与 OSR并不是固定的

  • leader 副本负责维护和跟踪 ISR 集合中所有 follower 的滞后状态, follower 副本落后太多或失效时, leader 副本会把它从 ISR 集合中剔除
  • 如果 OSR 集合中有 follower 副本 ”追上“ leader 副本,那么 leader 副本它从 OSR 集合转移至 ISR 集合

HW、LEO

另外,ISR 与 HWLEO 有着紧密的关系。

  • HW:HW是 High Watermark 的缩写,俗称高水位,它标识了一个特定的消息偏移量( offset ),消费者只能拉取到这个 offset 之前的消息。

    如下图所示,消费者只能消费0~5号偏移量的数据

  • LEO:LEO是 Log End Offset 缩写,它标识当前日志文件中下一条待写入消息 offset,如上图的日志中已经写了0~8号数据,那么offset为9的位置即为当前日志文件的LEO。

通过ISR、HW权衡数据可靠性和性能之间的关系

下面通过一个例子来具体感受一下这种 ISR 集合的:

假设现在某个分区的ISR中有3个副本,那么HW和LEO都为3(即只能消费3之前的消息),现在消息3和消息4从生产者发出后被存入leader副本

消息写入后,follower副本会拉取消息进行消息同步

在某个时刻,可能只有follower1同步成功,follower2只同步消息3还未同步消息4。那么此时的HW就为4,LEO就为5。此时消费者可以消费到offset为 0 至 3 之间的数据

所有副本同步成功后,HW和LEO都变为5,此时消费者就可以消费到 offset 为4的消息了

总结:Kafka通过这种 ISR 的方式有效的权衡了数据可靠性和性能之间的关系。

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

kafka中AR、ISR、OSR以及HW、LEO的区别相关推荐

  1. Kafka中ACKS LSO LEO LW HW AR ISR OSR解析

    文章目录 前言 名词解释 消息生产和消费流程 ACKS三种类型 AR.ISR.OSR ISR机制 LSO.LEO.LW.HW 前言 Kafka中ACKS三种策略,LSO.LEO.LW.HW.AR.IS ...

  2. Kafka 中 AR、ISR、OSR 是什么?ISR 的伸缩性什么?

    相信大家已经对 kafka 的基本概念已经有一定的了解了,下面直接来分析一下 ISR 和 AR 的概念. 一.ISR and AR 简单来说,分区中的所有副本统称为 AR (Assigned Repl ...

  3. kafka中的ISR、AR又代表什么?ISR伸缩又是什么?

    kafka中的ISR.AR又代表什么?ISR伸缩又是什么? ​ 分区中的所有副本统称为AR(Assigned Repllicas).所有与leader副本保持一定程度同步的副本(包括Leader)组成 ...

  4. Kafka术语:AR、OSR、ISR、HW和LEO以及之间的关系

    kafka 多副本 Kafka 为分区引入了多副本(Replica)机制,通过增加副本数量可以提升容灾能力.同一分区的不同副本中保存的是相同的消息(当然在同一时刻,副本之间可能并非完全一样),副本之间 ...

  5. kafka-4.进阶,ISR,OSR,AR,LW,HW,LEO,ACK原理理论

    kafka 在zk里面可以看到kafka 谁拿到controller [zk: localhost:2181(CONNECTED) 6] get /kafka/controller {"ve ...

  6. kafka中leader和follower、AR、ISR、OSR、Controller的选举、为什么不能通过ZK的方式来选举partition的leader?

    leader和follower 在Kafka中,每个topic都可以配置多个分区以及多个副本.每个分区都有一个leader以及0个或者多个follower,在创建topic时,Kafka会将每个分区的 ...

  7. kafka 中如何保证数据消息不丢失

    背景 前几天,去两家公司面试,面试的过程中, 两家公司的面试官都给我提了如标题这样的一个问题.因为之前对kafka有一些了解,但是没有对这个的问题做过总结,现场就凭着记忆的进行了回答,面试官也表示这个 ...

  8. 图解kafka中hw,leo,isr

    原创不易,转载请注明出处 文章目录 前言 1.hw leo isr的介绍 2.图解hw leo isr 变化 总结 前言 本文主要是介绍下kafka broker 中的hw leo isr分别是啥,然 ...

  9. Kafka中的AR,ISR,OSR

    在查看topic详细信息的话可以看到有个Isr,一开始不明所以,于是深入去学习了,不看不知道一看吓一跳: 首先要引出一个问题,为什么要存在这些东西: 在数据同步的时候,如果发生leader死掉,并且重 ...

最新文章

  1. android下载源代码
  2. JAVA黑白圆圈图形_CSS3 黑白交替旋转圆圈
  3. UITableView的动态获取高度 排版
  4. POJ 2724 Purifying Machine (二分图匹配)
  5. 全国计算机等级考试题库二级C操作题100套(第13套)
  6. 网站后端_Python+Flask.0007.FLASK构造跳转之301跳转与302重定向?
  7. 前端html面试题及答案2019,前端面试题及答案2019-20210415034948.docx-原创力文档
  8. python画简便的图-python的pyecharts绘制各种图表详细(附代码)
  9. ps 毛发 边缘_【常用抠图小技巧】PS调整边缘扣毛发
  10. Ubuntu 中文目录改为英文目录
  11. 计算机字节换算在线,计算机字节换算(计算机字节换算器)
  12. 如何打开.chm文件
  13. gensim w2v 使用记录
  14. eclipse开发首选项
  15. msp430发送pwm信号_msp430TAx PWM输出详解
  16. JavaScript对输入的用户名密码等进行判断
  17. Delphi访问网络共享文件夹
  18. 2022年资料员-岗位技能(资料员)操作证考试题模拟考试平台操作
  19. android实现从耳机和自带麦克风,android插上耳机的时候仍然使用机身的麦克风录音,解决!...
  20. ios微信双开,iOS微信分身免越狱方法来了!

热门文章

  1. JAVA--GUI:MenuBar组件
  2. 用for循环嵌套实现使用 “ * ” 打印直角三角形。
  3. 解决使用element-ui级联选择框内容空白且下拉框过高
  4. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter16-脚本控制
  5. 为什么要写博客?写博客有哪些好处?
  6. Python-入门学习
  7. SpringCloud项目无法读取bootstrap.yml配置文件的解决办法
  8. Java实现ES增删改查
  9. 【转载】ARPU ARPPU傻傻分不清楚?手游收入指标名词解释
  10. 企业ERP管理软件有哪些?哪个好