Kafka - 分区中各种偏移量的说明

news2024/11/30 14:53:10

文章目录

  • 引子
  • 名词解释
  • 分区中各种偏移量的说明

在这里插入图片描述


引子

在这里插入图片描述

名词解释

Kafka是一个高性能、高吞吐量的分布式消息系统,被广泛应用于大数据领域。在Kafka中,分区是一个重要的概念,它可以将数据分发到不同的节点上,以实现负载均衡和高可用性。在分区中,有一些重要的偏移量指标,包括AR、ISR、OSR、HW和LEO。下面我们来详细解释一下这些指标的含义和作用。

  1. AR(Assigned Replication):

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

  2. ISR(In-Sync Replicas):同步副本集合

    ISR是指当前与主副本保持同步的副本集合。当主副本发生故障时,Kafka会从ISR中选举一个新的主副本来接管工作。因此,ISR的大小对于分区的可用性和性能至关重要。如果ISR太小,那么当主副本故障时,选举新的主副本可能会导致数据丢失或延迟;如果ISR太大,那么同步数据的成本会变得很高,影响分区的性能。

  3. OSR(Out-of-Sync Replicas):异步副本集合

    OSR是指当前与主副本不保持同步的副本集合。这些副本可能由于网络故障或其他原因而与主副本失去同步。OSR的存在不会影响分区的可用性和性能,但是如果OSR过大,那么可能会占用过多的磁盘空间和网络带宽。

  4. HW(High Watermark):高水位

    HW是指已经被所有副本复制的最高偏移量。当消费者从分区中读取消息时,它会记录当前已经读取到的偏移量,并将该偏移量作为下一次读取的起始位置。如果消费者读取到的偏移量小于HW,那么它只能读取到已经被所有副本复制的消息;如果消费者读取到的偏移量大于HW,那么它可能会读取到未被所有副本复制的消息。

  5. LEO(Log End Offset):日志末尾偏移量

    LEO是指分区中最后一条消息的偏移量。当生产者向分区中写入消息时,它会将该消息的偏移量记录在LEO中。消费者从分区中读取消息时,它可以通过LEO来判断是否已经读取了所有的消息。

综上所述,AR、ISR、OSR、HW和LEO是Kafka中重要的分区偏移量指标,它们对于保证消息的可靠性、持久性、可用性和性能至关重要。在使用Kafka时,我们需要充分理解这些指标的含义和作用,并根据实际情况来设置适当的参数值。


分区中各种偏移量的说明

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

  • 所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In-Sync Replicas),ISR集合是AR集合中的一个子集。消息会先发送到leader副本,然后follower副本才能从leader副本中拉取消息进行同步,同步期间内follower副本相对于leader副本而言会有一定程度的滞后。前面所说的“一定程度的同步”是指可忍受的滞后范围,这个范围可以通过参数进行配置。

  • leader副本同步滞后过多的副本(不包括leader副本)组成OSR(Out-of-Sync Replicas),由此可见,AR=ISR+OSR。在正常情况下,所有的 follower 副本都应该与 leader 副本保持一定程度的同步,即 AR=ISR,OSR集合为空。

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

  • 默认情况下,当leader副本发生故障时,只有在ISR集合中的副本才有资格被选举为新的leader,而在OSR集合中的副本则没有任何机会(不过这个原则也可以通过修改相应的参数配置来改变)。

  • ISR与HW和LEO也有紧密的关系。HW是High Watermark的缩写,俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。

在这里插入图片描述

如上图,它代表一个日志文件,这个日志文件中有 9 条消息,第一条消息的 offset(LogStartOffset)为0,最后一条消息的offset为8,offset为9的消息用虚线框表示,代表下一条待写入的消息。日志文件的HW为6,表示消费者只能拉取到offset在0至5之间的消息,而offset为6的消息对消费者而言是不可见的。

LEO是Log End Offset的缩写,它标识当前日志文件中下一条待写入消息的offset,上图中offset为9的位置即为当前日志文件的LEO,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费HW之前的消息。

很多资料中误将图 中的offset为5的位置看作HW,而把offset为8的位置看作LEO,这显然是不对的。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PHP面试题73】TCP和UDP的特点和区别是什么?

文章目录 一、前言二、TCP(Transmission Control Protocol)三、UDP(User Datagram Protocol)四、TCP和UDP的区别五、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题&a…

Go速成-常量

1.常量的定义 Go语言常量,定义的值是不能进修修改的,定义常量就是const,常量定义建议全部大写 const PI float32 3.1415946 //显式定义 const (x int 16ys "abc"z)fmt.Print(x,y,s,z) 在定义常量的时候如果没有声明值&#xff…

微信小程序的目录解析--【浅入深出系列001外篇】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择先说总目录经常碰到的文件(目录)最最常见的目录pages次最常用的就是images 目录 操作起来真正的操作 配套资源 本系列校训 用免费公开视频,卷…

关于Qt编译android时候一个问题

问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not resolve com.android.tools.build:gradle:3.2.0.…

3天学会Ascend C编程 | Day1 Ascend C基本概念及常用接口

本文分享自《【2023 CANN训练营第一季】——Ascend C算子开发入门——第一次课》,作者:weixin_54022960 。 Ascend C是华为昇腾面向算子开发场景的编程语言,使用C/C作为前端语言的算子开发工具,通过四层接口抽象、并行编程范式、…

【笔记】SpringBoot 2.7.x Feign超时时间配置问题

【笔记】SpringBoot 2.7.x Feign超时时间配置问题 前言使用的技术Feign超时配置处理过程 前言 从 SpringBoot 2.3升级至SpringBoot 2.7.x后,Feign的配置也发生了变化。本文主要记录Feign调用超时时间配置问题。 在解决问题前,也查阅过相关资料&#xff0…

iOS APP外包开发的语言比较

iOS APP是Apple公司运行在iPhone手机上的APP,开发这样的APP有两种开发语言可以选择,都是由Apple公司提供的语言。其中Objective-C使用时间相对较长,有历史兼容考虑,而Swift是新的开发语言,更符合近些年开发语言的发展理…

怎么在Windows WSL上利用GPU运行tensorflow 2.12

背景 1. 在window上安装WSL 2. 再WSL上安装miniconda。 3. 创建conda环境 4. 设置GPU 5. 安装tensorflow 2.12 6. 在Pycharm里运行你的GPU Tensorflow 2.12代码 背景 从tensorflow 2.10开始,已经没有tensorflow-gpu相应的版本在Window GPU运行了&#xff0c…

LCD—STM32液晶显示(1.显示器简介及LCD显示原理)(6000字详细介绍)

目录 显示器简介 液晶显示器 液晶 像素 液晶屏缺点 LED显示器 OLED显示器 显示器的基本参数 STM32板载液晶控制原理(不带微控制器) 液晶控制原理 控制信号线(不带液晶控制器) 液晶数据传输时序 显存 总结 3.2寸液晶屏介绍(搭载…

在线乞讨系统 Docker一键部署

begger乞讨网 在线乞讨 全球要饭系统前端界面后端界面H2 数据库 console运行命令访问信息支付平台 在线乞讨 全球要饭系统 在线乞讨全球要饭项目,支持docker一键部署,支持企业微信通知,支持文案编辑 前端界面 后端界面 H2 数据库 console 运行命令 项…

【STM32】使用HAL库对ULN2003控制28BYJ-48步进电机

步进电机是将电脉冲信号转变为角位移或线位移,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以控制步进电机的转向、速度和旋转角度。 配合以直线运动执行机构(螺纹丝杆)或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。…

(Linux)查看jar包内容

查看jar包内容cp /opt/services/找到jar路径cp project.jar project2.jar复制jar,防止操作失误unzip -xvf project2.jar查看内容unzip -xvf project2.jar | grep jackson搜索相应内容rm -rf project2.jar删除副本 压缩jar包参考jar -cvf project.jar a.class b.clas…

3.10 Bootstrap 标签

文章目录 Bootstrap 标签标签 Bootstrap 标签 下面将讲解 Bootstrap 标签。标签可用于计数、提示或页面上其他的标记显示。使用 class .label 来显示标签&#xff0c;如下面的实例所示&#xff1a; <span class"label label-default">Label</span></…

期刊佳文 | 长江流域水系统生态服务价值评价方法

原文信息 题目&#xff1a;长江流域水系统生态服务价值评价方法 作者&#xff1a;郑阳 于福亮 桑学锋 张思琦 李子恒 期刊&#xff1a;《中国水利水电科学研究院学报&#xff08;中英文&#xff09;》23年3期 摘要 为完善人类活动影响下的生态系统评价体系、实现对生态关键…

【深度学习】了解残差网 ResNet 和 ResNeXt 的架构

一、说明 了解和实现 ResNet 和 ResNeXt 的架构以实现最先进的图像分类&#xff1a;从Microsoft到 Facebook [第 1 部分]&#xff0c;在这篇由两部分组成的博客文章中&#xff0c;我们将探讨残差网络。更具体地说&#xff0c;我们将讨论Microsoft研究和Facebook AI研究发布的三…

Unity URP 2D光照导入与配置

上面随时间变化的火烧云和晚霞&#xff0c;篝火的呼吸光照&#xff0c;都是URP的功劳。 1.什么是URP&#xff1f; URP 全称为 Universal Render Pipeline(通用渲染管线)。 它的特点是在手游和端游均能在保持性能的同时有良好的效果 也就说在多数情况下&#xff0c;在下面的平台…

java swing jxpanel嵌入链接url

如何嵌入url 尝试了很多方式&#xff0c;有jdic&#xff0c;webBrowser都不太行&#xff0c;可能有的是因为开发环境欠缺一些条件&#xff0c;最后使用了JXPanel嵌入网页url的方式&#xff0c;成功了。 需要的条件 jar包 &#xff1a;jdk1.8或以上即可&#xff0c;不用额外的…

c语言修炼第三章--结构体

目录 前言 3.1结构体的含义以及语法 3.1.1结构体含义 3.1.2结构体语法形式 3.1.2结构体变量的创建和初始化 3.2结构体成员的类型 3.3结构体的成员访问 3.3.1.操作符 3.3.2->操作符 3.4结构体传参 前言 小伙伴们大家好&#xff01;欢迎继续和菜菜酱学习c语言呐&…

Python零基础入门(八)——字典与集合

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

zookeeper伪分布式安装

1、环境准备 需要有jdk1.8 2、安装 &#xff08;1&#xff09;将zookeeper的安装包上传到/opt/modules目录下 &#xff08;2&#xff09;解压 [rootdatacollection modules]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/installs/&#xff08;3&#xff09;更名…