文章目录

  • 前言
  • 名词解释
  • 消息生产和消费流程
  • ACKS三种类型
  • AR、ISR、OSR
  • ISR机制
  • LSO、LEO、LW、HW

前言

Kafka中ACKS三种策略,LSO、LEO、LW、HW、AR、ISR、OSR解析。

名词解释

ACKS(Acknowledgments)确认、回执

LW(Low watermark)低水位、LSO(Log start offset)起始偏移量

HW(High watermark)高水位

LEO(Log end offset)日志末尾偏移量

AR(Assigned replica)分配的副本

ISR(In sync replica)正常同步的副本

OSR(Out sync replica)非正常同步的副本

消息生产和消费流程

以单副本为例,生产者(Producer)包装消息指明Topic后消息到达Broker中的分区(Partition),此时数据在Broker服务程序中;Broker将数据写到内核缓存页(Page cache),此时数据在物理内存;最后按照配置的刷盘策略写到磁盘中的消息日志(Log)中。

刷盘频率如果太高,会影响服务性能;如果频率太低,Broker宕机,在内存中未写到磁盘的消息会丢失。所以需要在效率和数据完整性之前做权衡(Trade off)来配置合适的策略。

消费者(Consumer)与服务器建立连接向Broker发送拉取消息请求,请求信息先到达网卡再到达Broker;Broker通过系统调用sendfile将读取到缓存页中的数据直接拷贝到网卡中,也就是零拷贝技术,最终数据返回给消费者。消费者消费完后还需要主动向Broker提交请求来更新消费进度。

ACKS三种类型

生产者(Producer)向Broker发送消息时,可以配置等待确认ACKS(Acknowledgments)的策略0、1和-1。

0代表不等待Broker确认,在这种情况下,不能保证服务器已经收到了记录。

-1和1都需要等待Broker返回确认。

1代表这个确认是Broker将消息写到主(Leader)磁盘后返回,不用等待从(Follower)同步。

-1则代表应答需要等待所有正常同步的副本ISR(In sync replica)写到消息日志(Log)后才会返回。

AR、ISR、OSR

AR(Assigned replica)已分配的副本指主题(Topic)创建时设置的副本,所有副本包括主(Leader)和从(Follower)都归属AR。

ISR(In sync replica)正常同步的副本和OSR(Out sync replica)非正常同步的副本是指从副本的两种状态,有周期性任务将副本按这个状态进行进行划分。

判断条件有两个:(1)根据从和主同步的超时时间判断,配置参数rerplica.lag.time.max.ms=10000;(2)根据从与主消息条数差值盘,配置参数rerplica.lag.max.messages=4000。

AR = ISR + OSR

ISR机制

在ACKS策略配置为-1的时候,需要等待所有ISR(In sync replica)集合中的副本将消息写入消息日志(Log)后才会给生产者(Producer)返回确认。以3个副本(Replica)为例,开始是都是正常同步,此时ISR集合中副本为3个。在同步消息[4]的时候Broker2上的副本出现网络问题或者宕机超过设置的超时时间,周期任务扫描到后将其划分到了OSR(Out sync replica)集合,给与了生产者确认。后续消息确认不再等待这个副本。

当OSR集合中的副本恢复并与主副本同步数据追平后,又会被周期任务扫描划分回ISR集合中。

LSO、LEO、LW、HW

LEO(Log end offset)日志末尾偏移量是新消息写入时将分配的偏移量(Offset)值,从0开始,随着消息不断写入递增。

LW(Low watermark)低水位,代表AR(Assigned replica)集合中最小的LSO(Log start offset)起始偏移量。旧日志的清理和消息删除都有可能促使LW的增长。

HW(High watermark)高水位代表ISR(In sync replica)集合中最小的LEO。

比如当ACKS(Acknowledgments)配置为1时,不需要等待从(Follower)就会给生产者(Producer)返回确认,这就可能会导致从还没来得急同步。此时ISR集合中最小的LEO没有变化,就代表HW不变,消费者还无法消费到新的数据。

消费者能消费的数据 = [LW,HW)

Kafka中ACKS LSO LEO LW HW AR ISR OSR解析相关推荐

  1. 关于kafka中acks是否可以为all

    kafka源码中有这样一段代码: org.apache.kafka.clients.producer.KafkaProducer private static int parseAcks(String ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. Kafka科普系列 | 什么是LW和logStartOffset?

    欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-basic-knowledge-of-lw-and-logstartoffset/ 很多读者对 Kafka 中的 ...

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

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

最新文章

  1. 如何利用CIC滤波器、CIC补偿滤波器和半带滤波器设计一个高频数字抽取滤波器
  2. 爬虫架构师得逆袭之路
  3. MySQL视图的使用
  4. Hive ETL 优化(参数篇)
  5. jQuery原理第三天
  6. .Net MVC 自定义Action类型,XmlAction,ImageAction等
  7. IBM Machine Learning学习笔记——Time Series and Survival Analysis
  8. android智能电视直播源抓取教程,求人不如求己,教你自己抓取直播源的方法!...
  9. 最新QQ空间免费导航代码
  10. win10卸载软件通过控制面板
  11. 笔记本win10 睡眠时会自动唤醒?修复后唤醒缓慢也解决了
  12. Unity 一起看+弹幕 Socket通信
  13. gate simulation
  14. 归并排序java_Java经典排序算法之归并排序详解
  15. 最浅显易懂kerberos认证和黄金白银票据
  16. 腾讯云轻量应用服务器网站搭建基础教程简单易学
  17. 睿频开启及睿频与超频的区别
  18. java 雷达图_Java 创建Excel雷达图
  19. js基础1 输入输出方式 数据类型
  20. 机器学习与网络信贷那些事

热门文章

  1. 2012年4月微软MVP申请开始!
  2. Android图片海报制作软件开发实践
  3. 榕树下 全球中文原创文学 中文社区 文学论坛
  4. Python + selenium + requests实现12306全自动买票
  5. 如何戒掉对高脂热饮食的“瘾”?
  6. 如何免费做一个.com的网站
  7. 基于android开发的考勤系统app,Android考勤系统
  8. 卡巴斯基 windows 10 远程桌面
  9. JavaScript翻转数组
  10. 用Linux的crontab命令来调度脚本作业