一图全解Kafka在zookeeper中的数据结构

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 一图全解Kafka在zookeeper中的数据结构

提示:本文可能已过期,请点击原文查看:kafka在zookeeper中的存储结构大榄图

该文章可能已过期,已不做勘误并更新,请访问原文地址(持续更新) Kafka中分区副本的分配规则kafka知识图谱:Kafka知识图谱大全

 kafka管控平台推荐使用    滴滴开源    的     Kafka运维管控平台(戳我呀)      更符合国人的操作习惯     、更强大的管控能力     、更高效的问题定位能力   、更便捷的集群运维能力   、更专业的资源治理   、更友好的运维生态   、

大家好,我是石臻臻,这是   「kafka专栏」     连载中的第「10」篇文章...

首发:      一图全解Kafka在zookeeper中的数据结构

一图知全貌 kafka在zookeeper中的数据结构

/cluster

/cluster/id 持久数据节点

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

/controller_epoch 持久数据节点

Controller选举次数;

/Controller 临时数据节点

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

/log_dir_event_notification

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

/isr_change_notification/log_dir_event_{序列号}

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

/admin

/admin/delete_topics 待删除Topic

/admin/delete_topics/{topicName} 持久节点,待删除Topic

存在此节点表示 当前Topic需要被删除

/admin/reassign_partitions 持久数据节点

如果有此节点,表示当前正在进行数据迁移,里面的数据就是正在迁移的配置 示例数据:  

/brokers

/brokers/seqid

/brokers/seqid: 全局序列号里面没有数据,主要是用了节点的dataVersion信息来当全局序列号

在kafka中的作用: 自动生成BrokerId主要是用来自动生成brokerId; 一个集群如果特别大,配置brokerId的时候不能重复,一个个设置比较累; 可以让Broker自动生成BrokerId

server.properties 配置

## 设置Brokerid能够自动生成

broker.id.generation.enable=true

## 设置BrokerId<0 (如果>=0则以此配置为准)

broker.id=-1

## 自动生成配置的起始值

reserved.broker.max.id=20000

BrokerId计算方法

brokerId = {reserved.broker.max.id} + /brokers/seqid.dataVersion

每次想要获取 /brokers/seqid的dataVersion值的时候都是用 set方法,set的时候会返回version数据,并不是get;每次set这个节点数据,版本信息就会自增;所以就实现了全局自增ID了;

/brokers/ids/{id} 临时数据节点 : 在线BrokerID

在线的Broker都会在这里注册一个节点; 下线自动删除

/brokers/topics/{topicName}持久数据节点

存储 topic的分区副本分配信息 例如:{"version":1,"partitions":{"0":[0]}}

/brokers/topics/{topicName}/{分区号}/state 持久数据节点

存储指定分区的leaderisr等信息 例如:{"controller_epoch":203,"leader":0,"version":1,"leader_epoch":0,"isr":[0]}


你好,我是石臻臻,工作8年的互联网老兵,丰富的开发和管理经验, 现在任职于「 滴滴技术专家 」岗位,从事开源建设工作,公众号讲解 Java/中间件/大数据 等技术栈相关内容,欢迎关注石臻臻,进滴滴 「 高质量 」  「 滴滴开源技术答疑群 」 , 群内每周技术专家轮流值班答疑,加石臻臻微信交个朋友,交流交流技术分享分享生活

可帮忙「 内推 」一二线大厂

相关文章
|
3月前
|
消息中间件 运维 算法
Kafka 为什么要抛弃 Zookeeper?
本文探讨了Kafka为何逐步淘汰ZooKeeper。长久以来,ZooKeeper作为Kafka的核心组件,负责集群管理和协调任务。然而,随着Kafka的发展,ZooKeeper带来的复杂性增加、性能瓶颈及一致性问题日益凸显。为解决这些问题,Kafka引入了KRaft,这是一种基于Raft算法的内置元数据管理方案,不仅简化了部署流程,还提升了系统的一致性和扩展性。本文详细分析了这一转变背后的原因及其带来的优势,并展望了Kafka未来的发展方向。
242 1
|
3月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
112 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
3月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
59 1
|
3月前
|
消息中间件 Java Kafka
ELFK对接zookeeper&kafka
ELFK对接zookeeper&kafka
|
5月前
|
消息中间件 存储 Kafka
ZooKeeper助力Kafka:掌握这四大作用,让你的消息队列系统稳如老狗!
【8月更文挑战第24天】Kafka是一款高性能的分布式消息队列系统,其稳定运行很大程度上依赖于ZooKeeper提供的分布式协调服务。ZooKeeper在Kafka中承担了四大关键职责:集群管理(Broker的注册与选举)、主题与分区管理、领导者选举机制以及消费者组管理。通过具体的代码示例展示了这些功能的具体实现方式。
143 2
|
6月前
|
消息中间件 存储 Kafka
kafka 在 zookeeper 中保存的数据内容
kafka 在 zookeeper 中保存的数据内容
64 3
|
4月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
4月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
21天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
4月前
|
存储 负载均衡 Dubbo
分布式-Zookeeper(一)
分布式-Zookeeper(一)