kafka入门之broker-水印和leader epoch

Posted lccsblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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秒)

 

以上是关于kafka入门之broker-水印和leader epoch的主要内容,如果未能解决你的问题,请参考以下文章

消息中间件之kafka

消息中间件之kafka

大数据-kafka学习——Kafka Broker

KafkaLeader选举(broker /分区)

kafka leader选举机制原理

Kafka核心组件之控制器和协调器