`
flychao88
  • 浏览: 751894 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跟我学Kafka之zookeeper的存储结构

 
阅读更多

一、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-zookeeper集群配置

    在Kafka中,Zookeeper扮演着关键角色,负责存储和管理Kafka集群的元数据。 **Kafka集群配置** 1. **安装准备**: 首先,确保你的环境中已经安装了Java运行环境(JRE),因为Kafka和Zookeeper都是基于Java开发的。 ...

    kafka+zookeeper.zip

    标题中的"kafka+zookeeper.zip"表明这是一个关于Apache Kafka和Zookeeper的组合包,通常用于构建高效的消息队列系统,尤其在大数据处理场景中。Apache Kafka是一个分布式流处理平台,而Zookeeper是一个分布式协调...

    ELK+Filebeat+Kafka+ZooKeeper构建日志分析平台

    ELK+Filebeat+Kafka+ZooKeeper构建日志分析平台,架构图解

    kafka+zookeeper

    具体来说,Zookeeper存储了Kafka的Broker信息、Topic的分区信息和副本分配等,确保了Kafka的高可用性和一致性。 zookeeper-3.3.6.tar.gz这个文件是Zookeeper的3.3.6版本源码包,包含了Zookeeper服务器端和客户端的...

    kafka 与zookeeper打包.rar

    Kafka在运行时依赖Zookeeper来实现元数据的存储和管理。具体来说,Zookeeper负责以下任务: 1. **集群注册与发现**:Kafka的Broker节点会将自己注册到Zookeeper上,消费者和生产者通过Zookeeper发现可用的Broker。 2...

    Kafka、Zookeeper集群配置Demo

    Kafka、Zookeeper集群配置Demo

    Kafka和Zookeeper集群搭建

    5. 创建Kafka主题:Kafka的主题分区信息是存储在Zookeeper中的,所以在启动Kafka之前,可能需要先创建一些主题。 6. 启动Kafka broker:在每个节点上启动Kafka服务,集群中的每个broker都会注册到Zookeeper,并与...

    kafka+zookeeper高可用集群搭建shell使用脚本

    Zookeeper作为Kafka的元数据存储中心,负责管理Kafka的分区(Partition)和副本(Replica)的分布,以及集群节点的状态信息。在高可用集群中,Zookeeper自身也需要搭建为一个集群,通常至少包含3个节点,以实现数据...

    centos7下kafka和zookeeper和Redis集群搭建.zip

    在IT领域,构建分布式系统是常见的任务之一,而Kafka、Zookeeper和Redis都是其中重要的组件。本教程将详述如何在CentOS7操作系统中搭建Kafka、Zookeeper和Redis的集群环境,以实现高效、稳定的分布式数据处理和存储...

    kubernetes 部署单机版Kafka、zookeeper

    在Kafka中,ZooKeeper用于存储和管理元数据,比如主题分区分配、领导者选举等。 **Kubernetes中的Kafka和ZooKeeper部署** 在Kubernetes中部署Kafka和ZooKeeper,我们需要创建对应的Deployment、Service和ConfigMap...

    kafka+zookeeper+简单demo

    随着对Kafka和ZooKeeper的理解加深,你可以进一步探索高级特性,如Kafka Streams用于流处理,或者Kafka Connect用于集成其他数据源和存储系统。 总之,Kafka和ZooKeeper的结合使用为企业级的数据流处理提供了强大且...

    kafka_zookeeper.rar

    kafka zookeeper 执行文件 kafka zookeeper 执行文件 kafka zookeeper 执行文件 kafka zookeeper 执行文件 kafka zookeeper 执行文件 kafka zookeeper 执行文件 kafka zookeeper 执行文件

    kafka和zookeeper安装包_linux.zip

    在实际应用中,Kafka常与Zookeeper配合使用,Zookeeper负责管理Kafka的元数据,如主题、分区和副本的分布信息,确保Kafka集群的稳定运行。同时,Zookeeper也可以用于其他分布式应用的协调,如Hadoop、Spark等。 总...

    Kafka自带zookeeper安装步骤整合.docx

    Linux下Kafka自带zookeeper安装步骤单点/集群整合

    zookeeper、kafka集群部署

    zookeeper配置、集群部署 kafka配置、集群部署 Window平台下

    kafka集群zookeeper集群整合配置

    1. **元数据存储**:Kafka的 Topic、Partition、Broker等元数据信息存储在Zookeeper中,便于节点间的协调和数据分布。 2. **选举Leader**:在Kafka的Partition中,Zookeeper负责选举出领导者,确保数据的一致性。 3....

    Zookeeper3.7与3.8加kafka2.12-3.1.0

    ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Kafka目前主要作为一个分布式的发布订阅式的消息系统使用 本资源包括...

    kafka_zookeeper_ok.rar

    在Kafka中,ZooKeeper主要负责存储和管理元数据,例如主题分区信息、Broker列表、消费者offset等。ZooKeeper通过其强一致性的特性确保了Kafka集群的稳定运行。 在Windows 10上安装和运行ZooKeeper通常包括以下步骤...

    zookeeper+kafka.zip windows安装kafka和zookeeper

    在本文中,我们将深入探讨如何在Windows环境下安装和配置Apache ZooKeeper和Kafka。Apache ZooKeeper是一个分布式的、开放源代码的服务,用于管理配置信息、命名服务、集群同步以及分布式应用程序协调。而Apache ...

    kafka+zookeeper安装教程

    ### Kafka + Zookeeper 集群安装教程 #### 一、环境准备 本文档将指导您如何在CentOS 7.4环境下安装并配置Kafka和独立的Zookeeper集群。安装过程中使用的具体版本为Zookeeper 3.4.12 和 Kafka 2.12-2.0.0。目标系统...

Global site tag (gtag.js) - Google Analytics