图解kafka中hw,leo,isr
原创不易,转载请注明出处
文章目录
- 前言
- 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相关推荐
- kafka中AR、ISR、OSR以及HW、LEO的区别
kafka中AR.ISR.OSR以及HW.LEO的关系 Kafka 为分区引入了多副本 (Replica) 机制, 通过增加副本数量可以提升容灾能力.同一分区的不同副本中保存的是相同的消息(在同一时刻 ...
- Kafka中HW和LEO增长的原理是什么?流程是怎样的?
我们知道kafka中hw可以用来管理消费者能访问到的最新的数据的位置, 并且当kafka leader节点挂掉后, follower节点会把hw以后的数据都清理掉, 从hw位置开始从新选举出来的lea ...
- 【kafka】多图解Kafka中的数据采集和统计机制
1.概述 转载:多图解Kafka中的数据采集和统计机制
- 图解Kafka中的基本概念
本次将学习Kafka中的基本概念.首先我们回顾下在消息系统的使用场景中有三种角色分别是生产者.消息系统和消费者,其中生产者负责产生消息和发送消息到消息系统,而消息系统将为消费者提供消息用于处理,如下图 ...
- Kafka 中 AR、ISR、OSR 是什么?ISR 的伸缩性什么?
相信大家已经对 kafka 的基本概念已经有一定的了解了,下面直接来分析一下 ISR 和 AR 的概念. 一.ISR and AR 简单来说,分区中的所有副本统称为 AR (Assigned Repl ...
- 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 ...
- kafka中的ISR、AR又代表什么?ISR伸缩又是什么?
kafka中的ISR.AR又代表什么?ISR伸缩又是什么? 分区中的所有副本统称为AR(Assigned Repllicas).所有与leader副本保持一定程度同步的副本(包括Leader)组成 ...
- kafka中leader和follower、AR、ISR、OSR、Controller的选举、为什么不能通过ZK的方式来选举partition的leader?
leader和follower 在Kafka中,每个topic都可以配置多个分区以及多个副本.每个分区都有一个leader以及0个或者多个follower,在创建topic时,Kafka会将每个分区的 ...
- Kafka中副本机制的设计和原理
Kafka中一个分区可以拥有多个副本,副本可分布于多台机器上.而在多个副本中,只会有一个Leader副本与客户端交互,也就是读写数据.其他则作为Follower副本,负责同步Leader的数据,当Le ...
最新文章
- NSwagStudio for Swagger Api
- SIFT特征点匹配中KD-tree与Ransac算法的使用
- CentOS7解决配置静态IP还是会出现动态IP地址的问题
- 资讯|WebRTC M95 更新
- tf.reshape(inputs, [-1,dim])的理解
- 使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
- 为什么老司机开车都不快?
- 历年二级c语言考试真题及答案,历年全国计算机等级考试二级C语言笔试选择真题及答案...
- Unicode字符集与多字节字符集
- 软碟通UltraISO Premium Edition_v9.7.5.3716,轻松编辑光盘镜像文件,将文件/文件夹制作成ISO文件
- 2020上传透明头像易语言源码 附成品
- 编译google test 源码
- android 实现3d扫描,DIY:让Android手机轻松变3D扫描仪
- 什么是 “奋斗逼”?
- 如何选型PLM软件?PLM选型时注意哪些事项呢?
- 补充:python实现二叉树里面求叶子节点的算法
- tmux+oh_my_tmux配置教程
- 微信服务商和渠道商区别
- 汽车的杂七杂八-SOME/IP+控制器
- 信息安全要沦陷?还能怎样绝地反攻
热门文章
- SpringBoot JPA多对一 持久化是报错object references an unsaved transient instance - save the transient instanc
- 帆软报表,异常问题汇总
- KKBOX音乐——数据分析,用户研究与填坑指南
- Windows11 hosts 文件无法修改怎么办?
- 树莓派串口配置(c++)
- 医咖会免费SPSS教程学习笔记—Cohen’s kappa系数
- bashne java_bash脚本中 if 语句 和 for 语句使用方法
- Vue 2.0/3.0
- 运维与微服务结合?深度解析微服务框架Tars整体解决方案
- 同济高数第七版上册54页例1详细证明过程