100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > kafka-4.进阶 ISR OSR AR LW HW LEO ACK原理理论

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

时间:2019-01-31 08:59:56

相关推荐

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 = 0xa00000178ctime = Wed Mar 09 20:56:22 CST mZxid = 0xa00000178mtime = Wed Mar 09 20:56:22 CST pZxid = 0xa00000178cversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0x10d4139ad9c0005 临时节点dataLength = 249numChildren = 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 = 0x7000004b9ctime = Wed Mar 09 10:22:43 CST mZxid = 0xa000001femtime = Wed Mar 09 20:56:55 CST pZxid = 0x7000004b9cversion = 0dataVersion = 13aclVersion = 0ephemeralOwner = 0x0-- 这个时候不是临时节点,元数据dataLength = 75numChildren = 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之前的消息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。