码迷,mamicode.com
首页 > 其他好文 > 详细

kafka入门之broker-水印和leader epoch

时间:2019-07-20 21:32:11      阅读:477      评论:0      收藏:0      [点我收藏+]

标签:消息   之一   lower   更新   出现   完数   如何   ica   比较   

 每个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秒)

 

kafka入门之broker-水印和leader epoch

标签:消息   之一   lower   更新   出现   完数   如何   ica   比较   

原文地址:https://www.cnblogs.com/lccsblog/p/11219108.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!