kafka入门之broker-水印和leader epoch
每个kafka副本对象都持有2个重要的属性:日志末端位移LEO,高水印HW
Kafka对leader副本和follower副本的LEO更新机制是不同的,后面我们会详细讨论。
Kafka对leader副本和follower副本的hw值更新机制也是不同的。
消费者无法消费分区leader副本上那些位移大于分区hw的消息。分区hw就是leader副本的hw值。
关于LEO
2套follower副本LEO属性:一套LEO值保存在follower副本所在broker的缓存上;另一套LEO值保存在leader副本所在的broker的缓存上。
follwer副本的LEO:每写一条消息就+1
leader上的副本LEO:收到FETCH请求之后,先从自己的log中读取相应的数据,但是在给follower返回数据之前它先去更新follower的LEO
关于HW(时机+算法)
follower更新hw:follower更新hw发生在其更新LEO之后,一旦follower向log写完数据,它就会尝试更新HW值,具体的算法就是比较当前LEO值与FETCH响应中leader的HW值,取两者的小者作为新的HW值。
leader更新hw的时机:
1.副本成为leader时
2.broker出现崩溃导致副本被踢出ISR时
3.producer向leader副本写入消息时
4.leader处理followerFETCH请求时:首先会从底层的log读取数据,之后再尝试更新分区HW值。
如何更新:
当确定分区hw时,它会选出所有满足条件的副本,比较他们的LEO,并选择最小的LEO值作为HW值,这里的满足条件主要是指副本满足一下两个条件之一:
1.出于ISR中
2.副本LEO落后于leaderLEO的时长不大于replica.lag.time.max.ms参数值(默认时10秒)
特殊情况:
Hw值的更新通常需要另一轮FETCH请求才能完成,故这种设计在本质上是存在缺陷的。可能引起,备份数据丢失,备份数据不一致。
fetch请求没有新消息时返回什么?leader会更新leo吗。答:follower发送过来的FETCH请求因为无数据而暂时被寄存到leader端的purgatory中,待500毫秒后超时会强制完成。
leader宕机时hw之外的消息会丢失?
hw在第二轮刚开始的时候宕机,新leader的没更新hw,这个时候它本地没有LEO,怎么更新hw。 是不是需要一轮其他副本fetch请求之后才能确定hw,和生成本地leo缓存。
基于·水印备份机制的缺陷:hw过期
在0.11.0.0版本之前,kafka一直使用基于水印的备份机制
1.数据丢失
前提:min.insync.replicas=1
follower副本在重启后将leo截断至hw(为什么要截断)。此时在给leader发FETCH,若leader此时宕机那么被截断的那部分就丢失了.
2.数据不一致/数据离散
前提:min.insync.replicas=1
A leo=2 hw=2,B leo=1 hw=1;AB同时挂掉,B先重连并且写入一条消息hw=2,A再重启后发现hw与分区相同,会不作调整继续工作。
0.11.0.0版本解决之道
leader epoch取代hw,leader端多开辟一段内存区域专门保存leader的epoch信息。
所谓leader epoch,实际上是一对值,epoch表示leader的版本号,从0开始,当leader变更过1次,epoch就会加1,而offset则对应与该epoch版本的leader写入第一条消息的位移,假设存在两对值(0,0)和(1,120)那么表示第一个leader从位移0开始写入消息,供血了120条。
每个leader broker中会保存这样一个缓存,并定期写入一个检查点文件中,当leader写滴成log时,它会尝试更新整个缓存--如果这个leader首次写消息,则会在缓存中增加一个条目,否则就不做更新,而每次副本重新成为leader时会查询这部分混存,获取对应leader版本的位移,这就不会发生数据不一致和丢失的情况。
这里offsetsForLeaderEpochRequest如果A在响应之前就宕机了怎么办
kafka入门之broker-水印和leader epoch的更多相关文章
- Kafka水位(high watermark)与leader epoch的讨论
~~~这是一篇有点长的文章,希望不会令你昏昏欲睡~~~ 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的.简单来说,0.11之前副本备份机制主要依赖水位(或水印) ...
- Kafka设计解析(二十一)Kafka水位(high watermark)与leader epoch的讨论
转载自 huxihx,原文链接 Kafka水位(high watermark)与leader epoch的讨论 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的. ...
- kafka入门(三)备份
一.相关概念 备份相关的角色 Kafka消息备份分三个角色:分别是Leader副本.Follower副本.ISR集合 Leader副本 负责直接响应client端的读写请求,即和生产者和消费者直接对接 ...
- kafka入门教程链接
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12882 经典入门教程 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创 ...
- 《OD大数据实战》Kafka入门实例
官网: 参考文档: Kafka入门经典教程 Kafka工作原理详解 一.安装zookeeper 1. 下载zookeeper-3.4.5-cdh5.3.6.tar.gz 下载地址为: http://a ...
- kafka 入门笔记 #1
kafka 入门笔记(#1) 单机测试 下载版本,解压 tar -xzf kafka_2.11-0.10.1.1.tgz cd kafka_2.11-0.10.1.1 启动服务 Kafka用到了Zoo ...
- 超详细“零”基础kafka入门篇
1.认识kafka 1.1 kafka简介 Kafka 是一个分布式流媒体平台 kafka官网:http://kafka.apache.org/ (1)流媒体平台有三个关键功能: 发布和订阅记录流,类 ...
- Kafka入门 --安装和简单实用
一.安装Zookeeper 参考: Zookeeper的下载.安装和启动 Zookeeper 集群搭建--单机伪分布式集群 二.下载Kafka 进入http://kafka.apache.org/do ...
- 项目17-超详细“零”基础kafka入门篇
分类: Linux服务篇,Linux架构篇 1.认识kafka 1.1 kafka简介 Kafka 是一个分布式流媒体平台 kafka官网:http://kafka.apache.org/ (1) ...
随机推荐
- python 数据分析之pandas
pandas 是数据分析时必须用到的一个库,功能非常强大 其有两种数据结构:一维Series 二维表DataFrame(一般读取后的数据都是df) 导入:import pandas as pd 数 ...
- oracle 存储过程深入学习与应用
对于存储过程已经有过一周的学习时间了,但是之学到一些皮毛,争取根据基础,熟练后能进行深入. --1.存储过程创建存储过程的语法: CREATE [ OR REPLACE ] PROCEDURE pro ...
- css3滚动条样式美化
关于滚动条的设计,需要用到css3的微元素,都列在下边吧(以Chrome内核webkit为例). -webkit-scrollbar 滚动条的整体轮廓,width表示纵向滚动条的宽度,heig ...
- vue封装tab切换
vue封装tab切换 预览: 第一种 通过父传子标题,子传父事件 子组件 <template> <div class='app'> <div class="ta ...
- windows搭建ftp
控制面板 此时输入电脑用户名和密码可在自己电脑访问,但是其它电脑不能访问 接下来防火墙允许的应用将FTP服务器打钩 控制面板\系统和安全\Windows Defender ...
- IDEA通过file-open打开以前的项目无法运行
在学习java的过程中我们会建立很多项目,IDEA默认打开最近一次编辑的项目,当我们打开以前的项目时会发现run图标变成灰色了, 解决办法: 1. 手动设置src为根目录 选中src目录--右键--m ...
- gdb高级技巧
注意: 这里是讲gdb的高级技巧.如果没有接触过gdb,请看这篇:点这里. gdb是一个功能极其强大的命令行调试器.其实,除了我们常用的 file b s n q disp p 等命令,也有很多高级技 ...
- leetcode99:n-queens
题目描述 N皇后问题是把N个皇后放在一个N×N棋盘上,使皇后之间不会互相攻击. 给出一个整数n,返回n皇后问题的所有摆放方案 例如: 4皇后问题有两种摆放方案 [".Q..", ...
- 谈谈对不同I/O模型的理解 (阻塞/非阻塞IO,同步/异步IO)
一.关于I/O模型的问题 最近通过对ucore操作系统的学习,让我打开了操作系统内核这一黑盒子,与之前所学知识结合起来,解答了长久以来困扰我的关于I/O的一些问题. 1. 为什么redis能以单工作线 ...
- B/S图书管理系统
B/S图书管理系统 系统管理 ①新用户注册 ②用户信息修改:修改信息,修改密码 ③锁定用户 ④注销用户 书籍管理 ①新书入库 ②借书办理 ③还书办理 ④书记注销 个人管理 ①图书查询 ②借书单查询 ③ ...