在kafka2.x及之前的版本当中,一直都需要依赖于zookeeper作为协调服务,kafka集群在启动的时候,也会向zookeeper集群当中写入很多重要的元数据,我们可以一起来看一下在kafka2当中保留在zk当中的元数据有哪些
可以看到在zk当中保存了很多kafka集群的元数据信息
-
/admin : 主要保存kafka当中的核心的重要信息,包括类似于已经删除的topic就会保存在这个路径下面 -
/brokers : 主要用于保存kafka集群当中的broker信息,以及没被删除的topic信息 -
/cluster : 主要用于保存kafka集群的唯一id信息,每个kafka集群都会给分配要给唯一id,以及对应的版本号 -
/config : 集群配置信息 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNU9Chdq-1649167796767)(assets/1641610453703.png)] -
/controller : kafka集群当中的控制器信息,控制器组件(Controller),是 Apache Kafka 的核心组件。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O9FVKaEM-1649167796768)(assets/1641610650133.png)] -
/controller_epoch :主要用于保存记录controller的选举的次数,每选举一次controller,该数据就加1,controller_epoch用于记录控制器发生变更的次数,即记录当前的控制器是第几代控制器,我们也可以称之为“控制器的纪元”。controller_epoch的初始值为1,即集群中第一个控制器的纪元为1,当控制器发生变更时,没选出一个新的控制器就将该字段值加1 -
/isr_change_notification : isr列表发生变更时候的通知,在kafka当中由于存在ISR列表变更的情况发生,为了保证ISR列表更新的及时性,定义了isr_change_notification 这个节点,主要用于通知Controller来及时将ISR列表进行变更 -
/latest_producer_id_block :使用/latest_producer_id_block 节点来保存PID块,主要用于能够保证生产者的任意写入请求都能够得到响应。 -
/log_dir_event_notification : 主要用于保存当broker当中某些LogDir出现异常时候,例如磁盘损坏,文件读写失败等异常时候,向ZK当中增加一个通知序号,controller监听到这个节点的变化之后,就会做出对应的处理操作。
以上就是kafka在zk当中保留的所有的所有的相关的元数据信息,这些元数据信息保证了kafka集群的正常运行。
|