栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

kafka

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

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

在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


[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

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之前的消息。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号