原创不易,转载请注明出处

文章目录

  • 前言
  • 1.hw leo isr的介绍
  • 2.图解hw leo isr 变化
  • 总结

前言

本文主要是介绍下kafka broker 中的hw leo isr分别是啥,然后介绍hw与leo在写入消息的时候,副本同步的时候在partition leader 副本与partition follower副本是怎样变化的,follower 副本要满足什么条件加入才能加入isr列表,又是在什么样的情况下被踢出isr列表。

1.hw leo isr的介绍

leo :log end offset,每个partition 副本中都有这么一个leo的维护(不管是leader 副本还是follower副本),代表着下一条消息的offset 就从这个leo开始,就是当前最后一条消息的offset+1。

比如说这个上图是某个partition 的某个副本,现在已经写到offset是3,下次再写入消息的offset是4,leo也就是4。如果这个时候再往里面追加一条消息,leo就成5了

isr列表:inSyncReplicas,分区中与leader副本保持一定程度同步的副本成为isr,这个是与副本同步有关的,就是说,如果你partition的follower副本会去leader副本上拉取数据同步到follower副本中,这个时候follower副本的leo也是会增加的,每拉过来一条数据follower副本的leo就会+1,然后如果你这个follower 副本的leo追上了leader的hw,就会将这个follower副本添加到isr列表中,如果过段时间发现这个follower 好长时间没有拉取数据了,就会将它从isr列表中剔除。
hw : highwater 高水位,这个东西是与副本同步和消费者消费有关,先说下副本同步的,leader 副本的hw是与isr中的副本leo有关的,是isr所有副本中leo,follower 副本在去leader副本上拉取消息进行同步的时候,会带上自己的那个leo,这个过程中leader副本就尝试更更新一下hw,然后每次follower副本拉取消息回来的时候,都会将leader的hw带回去,根据自己的leo来更新一下自己的hw,如果自己的leo小于leader的hw,自己的hw就是leo,如果是自己的leo大于leader hw,自己的hw就是leader hw。将消息消费者对hw后的消息是不可见的, 消息消费者只能消费hw之前的消息。

2.图解hw leo isr 变化

现在我们topic是orderTopic 然后partition是0的partition来举例子。然后有4个副本,一开始的时候什么不管是leader 还是follower副本里面一条消息都没有。

场景一:消息生产者往leader 副本中追加了一个消息集,追加完成后,leader副本就会检查一下增加一下leo,这个时候leader 副本的leo变成了2,hw还是0

场景二:3个follower副本不停的去leader 副本上同步消息,follower1,2,3很快将消息拉回了自己的broker 上去,由于他们的leo与leader的hw比较,是大于等于的,这几个副本都会加到isr中(需要注意的是leader副本是天生在isr中的)。消息到被追加到follower副本之后,更新各个副本字节leo。

就这个样子消息生产者不停的往leader副本的leo中追加消息,然后leader 副本的leo不停的增加,然后follower副本也不停的去leader副本上拉取消息,然后带上自己的leo,拉完消息后,leader副本就会更新下自己hw,自己的hw就是isr 副本中最小的那个leo,follower拉取消息回去的时候,会将leader副本的hw带回与与自己的leo做比较,如果leader hw小于自己的leo ,然后自己的hw就使用leader 的hw,如果自己的leo小于leader hw,就会使用自己的leo作为hw。

随着时间流逝,有的follower副本所在的broker由于机器性能问题或者是full gc原因,拉取速度就会很慢,leader 的hw就会为这个follower副本所拖累,就像上图中的follower 2副本。
leader 副本所在的机器还有有个定时任务,会每10s执行一次,然后会遍历所有partition的isr列表,找出那种10s(由replica.lag.time.max.ms这个参数配置的)没有发去过fetch请求(向leader副本发起同步消息)的follower副本,然后将他们移除对应的isr列表。
咱们这里假设follower 2 副本10s没有向leader 副本所在的broker 发起fetch请求,那个定时任务就会感知到这个副本有问题,然后就会从isr中摘除,接着更新下leader 的hw。

就像上图这个样子,一旦follower 2被移除isr列表,然后更新leader 的hw的时候,就会找现在在isr中的副本最小的那个leo。
如果是follower 2副本所在的机器负载变轻,然后同步追上了leader 副本,也就是说follower 2 的leo 追上了leader hw,这个follower 2 又会被添加到这个isr列表中。

总结

本文首先介绍了一下leo,isr,hw 是啥,接着图解了leader 副本在追加完消息后leo是怎样变化的,follower同步消息的时候leader的hw是怎样变化的,isr列表是怎样变化的,follower将消息同步到自己本地的时候,自己的leo与hw是怎样变化的。什么情况下会将follower从isr中移除,什么情况下在将follower添加到isr列表中。

图解kafka中hw,leo,isr相关推荐

  1. kafka中AR、ISR、OSR以及HW、LEO的区别

    kafka中AR.ISR.OSR以及HW.LEO的关系 Kafka 为分区引入了多副本 (Replica) 机制, 通过增加副本数量可以提升容灾能力.同一分区的不同副本中保存的是相同的消息(在同一时刻 ...

  2. Kafka中HW和LEO增长的原理是什么?流程是怎样的?

    我们知道kafka中hw可以用来管理消费者能访问到的最新的数据的位置, 并且当kafka leader节点挂掉后, follower节点会把hw以后的数据都清理掉, 从hw位置开始从新选举出来的lea ...

  3. 【kafka】多图解Kafka中的数据采集和统计机制

    1.概述 转载:多图解Kafka中的数据采集和统计机制

  4. 图解Kafka中的基本概念

    本次将学习Kafka中的基本概念.首先我们回顾下在消息系统的使用场景中有三种角色分别是生产者.消息系统和消费者,其中生产者负责产生消息和发送消息到消息系统,而消息系统将为消费者提供消息用于处理,如下图 ...

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

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

  6. 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 ...

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

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

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

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

  9. Kafka中副本机制的设计和原理

    Kafka中一个分区可以拥有多个副本,副本可分布于多台机器上.而在多个副本中,只会有一个Leader副本与客户端交互,也就是读写数据.其他则作为Follower副本,负责同步Leader的数据,当Le ...

最新文章

  1. NSwagStudio for Swagger Api
  2. SIFT特征点匹配中KD-tree与Ransac算法的使用
  3. CentOS7解决配置静态IP还是会出现动态IP地址的问题
  4. 资讯|WebRTC M95 更新
  5. tf.reshape(inputs, [-1,dim])的理解
  6. 使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
  7. 为什么老司机开车都不快?
  8. 历年二级c语言考试真题及答案,历年全国计算机等级考试二级C语言笔试选择真题及答案...
  9. Unicode字符集与多字节字符集
  10. 软碟通UltraISO Premium Edition_v9.7.5.3716,轻松编辑光盘镜像文件,将文件/文件夹制作成ISO文件
  11. 2020上传透明头像易语言源码 附成品
  12. 编译google test 源码
  13. android 实现3d扫描,DIY:让Android手机轻松变3D扫描仪
  14. 什么是 “奋斗逼”?
  15. 如何选型PLM软件?PLM选型时注意哪些事项呢?
  16. 补充:python实现二叉树里面求叶子节点的算法
  17. tmux+oh_my_tmux配置教程
  18. 微信服务商和渠道商区别
  19. 汽车的杂七杂八-SOME/IP+控制器
  20. 信息安全要沦陷?还能怎样绝地反攻

热门文章

  1. SpringBoot JPA多对一 持久化是报错object references an unsaved transient instance - save the transient instanc
  2. 帆软报表,异常问题汇总
  3. KKBOX音乐——数据分析,用户研究与填坑指南
  4. Windows11 hosts 文件无法修改怎么办?
  5. 树莓派串口配置(c++)
  6. 医咖会免费SPSS教程学习笔记—Cohen’s kappa系数
  7. bashne java_bash脚本中 if 语句 和 for 语句使用方法
  8. Vue 2.0/3.0
  9. 运维与微服务结合?深度解析微服务框架Tars整体解决方案
  10. 同济高数第七版上册54页例1详细证明过程