您的位置:首页 > 编程语言 > Java开发

Kafka学习笔记<基本概念>

2017-10-15 22:44 120 查看

基本概念

Leader 副本:所有的读写请求都由leader副本处理

Follower副本:follower副本仅仅是从Leader副本处把数据拉取到本地之后,同步更新到自己的Log日志中。

Topic&分区:Topic是用于存储消息的逻辑概念。每个Topic可以划分成多个分区(每个Topic都至少有一个分区),同一Topic下的不同分区包含的消息是不同的。

ISR(In-Sync Replica)集合:表示的是目前可用且消息量与Leader相差不多的副本集合。

ISR集合中的副本必须满足下面两个条件:

(1):副本所在节点必须维持着与zookeeper的连接。

(2):副本最后一条消息的offset与Leader副本的最后一条消息的offset之间的差值不能超过指定的阀值。

(3):当Follower副本追上(即最后一条消息的offset的差值小于指定阀值)Leader副本的时候,此Follower副本会被Leader副本重新加入到ISR中。

HW(High Watermark) 与ISR集合紧密相关。HW标记了一个特殊的offset,当消费者处理消息的时候,只能拉取到HW之前的消息,HW之后的消息对消费者来说是不可见的。与ISR集合类似,HW也是由Leader副本管理的。当ISR集合中全部的Follower副本都拉取HW指定消息进行同步后,Leader副本会递增HW的值。

LEO(Log End Offset)是所有的副本都会有的一个offset标记,它指向追加到当前副本的最后一个消息的offset。当生产者向Leader副本追加消息的时候,Leader副本的LEO标记会递增;当Follower副本成功从Leader副本拉取消息并更新到本地的时候,Follower副本的LEO就会增加。

1.Poducer向此Partition推送消息
2.Leader副本将消息追加到Log中,并递增其LEO
3.Follower副本从Leader副本拉取消息并进行同步
4.Follower副本将拉取到的消息更新到本地Log中,并递增其LEO
5.当ISR集合中所有副本都完成了对offset消息的同步,Leader副本会递增HW


参考:《Apache Kafka 源码剖析》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kafka-java