当前位置:   article > 正文

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

oslsr

kafka

在zk里面可以看到kafka 谁拿到controller

[zk: localhost:2181(CONNECTED) 6] get  /kafka/controller
{"version":1,"brokerid":0,"timestamp":"1646830583058"}

  • 1
  • 2
  • 3

在zk里面可以看到kafka注册信息

[zk: localhost:2181(CONNECTED) 7] ls /kafka/brokers/ids
[0, 1, 2]
[zk: localhost:2181(CONNECTED) 8] get /kafka/brokers/ids/1
{"listener_security_protocol_map":{"INTERNAL":"PLAINTEXT","EXTERNAL":"PLAINTEXT"},"endpoints":["INTERNAL://172.16.111.45:1092","EXTERNAL://server1:9092"],"jmx_port":-1,"port":19092,"host":"172.16.111.45","version":4,"timestamp":"1646830413875"}
[zk: localhost:2181(CONNECTED) 10] get -s  /kafka/brokers/ids/0
{"listener_security_protocol_map":{"INTERNAL":"PLAINTEXT","EXTERNAL":"PLAINTEXT"},"endpoints":["INTERNAL://172.16.111.43:1092","EXTERNAL://server2:9092"],"jmx_port":-1,"port":19092,"host":"172.16.111.43","version":4,"timestamp":"1646830582891"}
cZxid = 0xa00000178
ctime = Wed Mar 09 20:56:22 CST 2022
mZxid = 0xa00000178
mtime = Wed Mar 09 20:56:22 CST 2022
pZxid = 0xa00000178
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x10d4139ad9c0005    临时节点
dataLength = 249
numChildren = 0


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

[zk: localhost:2181(CONNECTED) 13] ls /kafka/brokers/topics 
[__consumer_offsets, ooxx, topic-test1]  -- 查看创建分区数
[zk: localhost:2181(CONNECTED) 14] 
[zk: localhost:2181(CONNECTED) 14] ls /kafka/brokers/topics/topic-test1 
[partitions]

[zk: localhost:2181(CONNECTED) 15] ls /kafka/brokers/topics/topic-test1/partitions 
[0, 1]    --  当初创建分区的时候是两个
[zk: localhost:2181(CONNECTED) 16] ls /kafka/brokers/topics/topic-test1/partitions/0 
[state]
[zk: localhost:2181(CONNECTED) 17] ls /kafka/brokers/topics/topic-test1/partitions/0/state 
[]
[zk: localhost:2181(CONNECTED) 18] get -s /kafka/brokers/topics/topic-test1/partitions/0/state 
{"controller_epoch":9,"leader":2,"version":1,"leader_epoch":10,"isr":[2,0]}
cZxid = 0x7000004b9
ctime = Wed Mar 09 10:22:43 CST 2022
mZxid = 0xa000001fe
mtime = Wed Mar 09 20:56:55 CST 2022
pZxid = 0x7000004b9
cversion = 0
dataVersion = 13
aclVersion = 0
ephemeralOwner = 0x0                -- 这个时候不是临时节点,元数据
dataLength = 75
numChildren = 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

leader 2 是代表在2 节点上的,isr 分别代表储存在2 节点 0 节点,只不过2是主节点

在这里插入图片描述
在这里插入图片描述

ISR,OSR,AR

在这里插入图片描述

  • ISR(in-sync replicas),连通性&活跃性
  • OSR(outof-sync replicas),超过阈值时间(10秒),没有"心跳"
  • AR(Assigned replicas),面向分区的副本集合,创建topic的时候你给出了分区的副本数,那么controller在创建的时候就已经分配了
    AR=ISR+OSR

分区中的所有副本统称为AR(Assigned Replicas)。
所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In-Sync Replicas),ISR集合是AR集合中的一个子集。
与leader副本同步滞后过多的副本(不包括leader副本)组成OSR(Out-of-Sync Replicas)

LSR 与 OSR 转换、LSR集合中的副本才允许选举为leader
leader副本负责维护和跟踪ISR集合中所有follower副本的滞后状态,当follower副本落后太多或失效时,leader副本会把它从ISR集合中剔除。如果OSR集合中有follower副本“追上”了leader副本,那么leader副本会把它从OSR集合转移至ISR集合。默认情况下,当leader副本发生故障时,只有在ISR集合中的副本才有资格被选举为新的leader,而在OSR集合中的副本则没有任何机会(不过这个原则也可以通过修改相应的参数配置来改变)。ISR与HW和LEO也有紧密的关系。
参考链接:https://www.studytime.xin/article/kafka-ar-lsr-hw-leo.html

HW

什么是HW高水位,水桶理论
HW是High Watermark的缩写,俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息

在这里插入图片描述
在这里插入图片描述

如图所示,它代表一个日志文件,这个日志文件中有 9 条消息,第一条消息的 offset(LogStartOffset)为0,最后一条消息的offset为8,offset为9的消息用虚线框表示,代表下一条待写入的消息。日志文件的HW为6,表示消费者只能拉取到offset在0至5之间的消息,而offset为6的消息对消费者而言是不可见的。

LEO是Log End Offset的缩写,它标识当前日志文件中下一条待写入消息的offset,图中offset为9的位置即为当前日志文件的LEO,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费HW之前的消息。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/361978
推荐阅读
相关标签
  

闽ICP备14008679号