开发者社区> colincheng> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

跟我学Kafka之zookeeper的存储结构

简介: 一、zookeeper存储结构总图 图片 当我们kafka启动运行以后,就会在zookeeper上初始化kafka相关数据,主要包括六大类: consumers admin config controller brokers controller_epoch 1、brokers节点结构说明 1.
+关注继续查看

一、zookeeper存储结构总图

图片

当我们kafka启动运行以后,就会在zookeeper上初始化kafka相关数据,主要包括六大类:

  • consumers
  • admin
  • config
  • controller
  • brokers
  • controller_epoch

1、brokers节点结构说明

1.1 topic信息结构

/brokers/topics/[topic] :

存储某个topic的partitions所有分配信息:


Schema:
{
    "version": "版本编号目前固定为数字1",
    "partitions": {
        "partitionId编号": [
            同步副本组brokerId列表
        ],
        "partitionId编号": [
            同步副本组brokerId列表
        ],
        .......
    }
}

Example:
{
"version": 1,
"partitions": {
"0": [1, 2],
"1": [2, 1],
"2": [1, 2],
}
}

1.2 partitions信息

/brokers/topics/[topic]/partitions/[0...N] 其中[0..N]表示partition索引号
/brokers/topics/[topic]/partitions/[partitionId]/state

Schema:
{
"controller_epoch": 表示kafka集群中的中央控制器选举次数,
"leader": 表示该partition选举leader的brokerId,
"version": 版本编号默认为1,
"leader_epoch": 该partition leader选举次数,
"isr": [同步副本组brokerId列表]
}

 
Example:
{
"controller_epoch": 1,
"leader": 2,
"version": 1,
"leader_epoch": 0,
"isr": [2, 1]
}

1.3 broker信息

/brokers/ids/[0...N]

每个broker的配置文件中都需要指定一个数字类型的id(全局不可重复),此节点为临时znode(EPHEMERAL)

Schema:
{
"jmx_port": jmx端口号,
"timestamp": kafka broker初始启动时的时间戳,
"host": 主机名或ip地址,
"version": 版本编号默认为1,
"port": kafka broker的服务端端口号,由server.properties中参数port确定
}

 
Example:
{
"jmx_port": 5051,

"timestamp":"1403061000000"
"version": 1,
"host": "127.0.0.1",
"port": 8081
}

2、Controller_epoch

/controller_epoch -> int (epoch)

此值为一个数字,kafka集群中第一个broker第一次启动时为1,以后只要集群中center controller(中央控制器)所在broker变更或挂掉,就会重新选举新的center controller,每次center controller变更controller_epoch值就会 + 1;

3、Controller信息

/controller -> int (broker id of the controller)

存储center controller(中央控制器)所在kafka broker的信息。

Schema:
{
"version": 版本编号默认为1,
"brokerid": kafka集群中broker唯一编号,
"timestamp": kafka broker中央控制器变更时的时间戳
}

 
Example:

{
"version": 1,
"brokerid": 3,
"timestamp": "1403061802981"
}

这个的意思就说明,当前的Controller所在的Broker机器是哪台,变更时间是多少等。

4、Consumer信息

/consumers/[groupId]/ids/[consumerIdString]

每个consumer都有一个唯一的ID(consumerId可以通过配置文件指定,也可以由系统生成),此id用来标记消费者信息。

Schema:
{
"version": 版本编号默认为1,
"subscription": { //订阅topic列表},
"topic名称": consumer中topic消费者线程数
"pattern": "static",
"timestamp": "consumer启动时的时间戳"
}

4.1 Consumer offset信息

/consumers/[groupId]/offsets/[topic]/[partitionId] -> long (offset)

用来跟踪每个consumer目前所消费的partition中最大的offset。此znode为持久节点,可以看出offset跟group_id有关,以表明当消费者组(consumer group)中一个消费者失效,重新触发balance,其他consumer可以继续消费。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Kafka的安装与入门基础(上)
Kafka的安装与入门基础(上)
52 0
Kafka的安装与入门基础(下)
Kafka的安装与入门基础(下)
57 0
Kafka概述及安装 | 带你读《SpringBoot实战教程》之三十七
Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上。 它与Apache Storm和Spark非常好地集成,用于实时流式数据分析。
848 0
【教程】Linux下如何下载与安装Kafka ?
Kafka是java生态圈中的一员,运行在java虚拟机上,按Kafka官方说明,java环境推荐Java8;Kafka需要Zookeeper保存集群的元数据信息和消费者信息。Kafka一般会自带Zookeeper,但是从稳定性考虑,应该使用单独的Zookeeper,而且构建Zookeeper集群。
8717 0
kafka的安装与启动运行
kafka简介 kafka是一种高吞吐量的分布式发布订阅消息系统。 环境搭建 1.首先安装JDK 下载地址https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.
1238 0
Linux Ubuntu实战安装Kafka集群管理器 Kafka Manager
Linux Ubuntu实战安装Kafka集群管理器 Kafka Manager经验分享,详细步骤。
2592 0
Linux Ubuntu 18.04安装Kafka消息队列MQ中间件
Kafka是开源高并发百万级消息队列MQ中间件,在互联网、物联网IOT、大数据、电商、直播、游戏、导航领域广泛使用。 本文讲解最新的Kafka在Linux系统上的详细安装步骤。
2635 0
记录自定义kafka的parcel库,CDH安装kafka服务,无法安装过去的排雷过程
1.版本 CDH5.9.1  安装KAFKA-2.0.2-1.2.0.2.p0.5-el6     https://archive.cloudera.com/kafka/parcels/2.
1549 0
+关注
colincheng
12年Java研发经验,8年技术管理和架构经验,熟悉支付和电商领域,擅长微服务生态建设,对Dubbo、Spring Cloud和gRPC等微服务框架有深入研究,并应用于项目,帮助过多家公司进行过微服务建设和改造 合著作品《深入分布式缓存》,目前正在编写《微服务架构实战》
文章
问答
文章排行榜
最热
最新
相关电子书
更多
消息队列 Kafka 版差异化特性
立即下载
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析
立即下载
2019大数据技术公开课第五季—kafka 数据如何同步到 MaxCompute
立即下载