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

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

作者: 石臻臻 2021-09-06 09:05:58

开发

架构

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

[[421933]]

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

下面我们用用一张图来窥探kafka在zookeeper中的全貌,建议收藏!!!

一图知全貌

kafka在zookeeper中的数据结构

1/cluster

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

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

2/controller_epoch 持久数据节点

Controller选举次数;

3/Controller 临时数据节点

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

4/log_dir_event_notification

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

5/isr_change_notification/log_dir_event_{序列号}

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

6/admin

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

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

02 – /admin/reassign_partitions 持久数据节点

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

7/brokers

01 -/brokers/seqid

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

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

server.properties 配置

  1. ## 设置Brokerid能够自动生成 
  2. broker.id.generation.enable=true 
  3. ## 设置BrokerId<0 (如果>=0则以此配置为准) 
  4. broker.id=-1 
  5. ## 自动生成配置的起始值 
  6. reserved.broker.max.id=20000 

BrokerId计算方法

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

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

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

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

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

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

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

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

本文转载自微信公众号「石臻臻的杂货铺」,可以通过以下二维码关注。转载本文请联系石臻臻的杂货铺公众号。

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/299455.html<

(0)
管理的头像管理
上一篇2025-05-23 10:08
下一篇 2025-05-23 10:10

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注