kafka在zookeeper中的数据结构

  运维必备技能, 原理
内容纲要

概要描述

在kafka_2.8.0之前,kafka还是需要依赖zookeeper运行,kafka中的很多数据都存储在zk中, 例如 「Broker的注册信息」、「Topic的信息」 、 「运维操作临时信息 」、 「配置信息」等等其他信息。


详细说明

下面我们用用一张图来窥探kafka在zookeeper中的全貌

01- /cluster/id 持久数据节点

集群ID 当第一台Broker启动的时候, 发现/cluster/id
不存在,那么它就会把自己的cluster.id
配置写入zk; 标记当前zk是属于集群哪个集群; 后面其他的Broker启动的时候会去获取该数据, 如果发现数据跟自己的配置不一致; 则抛出异常,加入的不是同一个集群; 数据示例:{"version":"1","id":"0"}

02- /controller_epoch 持久数据节点

Controller选举次数;

03- /Controller 临时数据节点

当前Controller角色的BrokerId,数据示例:{"version":1,"brokerid":0,"timestamp":"1624415590383"}
删除该节点立马触发重新选举

04- /log_dir_event_notification

zk的数据中有一个节点/log_dir_event_notification/
,这是一个序列号持久节点 这个节点在kafka中承担的作用是: 当某个Broker上的LogDir出现异常时(比如磁盘损坏,文件读写失败,等等异常): 向zk中新增一个子节点/log_dir_event_notification/log_dir_event_序列号
;Controller监听到这个节点的变更之后,会向Brokers们发送LeaderAndIsrRequest
请求; 然后做一些副本脱机的善后操作

05- /isr_change_notification/log_direvent{序列号}

当Isr有变更的时候,会写入这个节点Controller监听变更

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。