一、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的存储结构相关推荐

  1. Kafka在zookeeper中存储结构和查看方式

    Zookeeper 主要用来跟踪Kafka 集群中的节点状态, 以及Kafka Topic, message 等等其他信息. 同时, Kafka 依赖于Zookeeper, 没有Zookeeper 是 ...

  2. kafka在zookeeper中存储结构

    1.topic注册信息 /brokers/topics/[topic] : 存储某个topic的partitions所有分配信息 Schema: {     "version": ...

  3. 《Linux就该这么学》培训笔记_ch06_存储结构与磁盘划分

    <Linux就该这么学>培训笔记_ch06_存储结构与磁盘划分 文章最后会post上书本的笔记照片. 文章主要内容: Linux系统的文件存储结构(FHS标准) 物理设备命名规则(udev ...

  4. 《Linux就该这么学》 第6章 存储结构与磁盘划分

    6.1 一切从"/"开始Linux系统中的一切文件都是从"根(/)"目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用 ...

  5. Kafka+SparkStreaming+Zookeeper(ZK存储Offset,解决checkpoint问题)

    创建一个topic ./kafka-topics.sh --create --zookeeper 192.168.1.244:2181,192.168.1.245:2181,192.168.1.246 ...

  6. kafka 、 zookeeper 集群(一)

    一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不同 ...

  7. 基于 Kafka 和 ZooKeeper 的分布式消息队列原理

    转载:https://gitbook.cn/books/5bc446269a9adf54c7ccb8bc/index.html 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 ...

  8. 再谈基于 Kafka 和 ZooKeeper 的分布式消息队列原理

    关于分布式消息队列,我在几个月前写过一篇文章:<深入浅出理解基于 Kafka 和 ZooKeeper 的分布式消息队列 >.最近,由于写作课程<分布式中间件实践之路>的契机,我 ...

  9. 深入浅出理解基于 Kafka 和 ZooKeeper 的分布式消息队列

    https://gitbook.cn/books/5ae1e77197c22f130e67ec4e/index.html 向作者提问 毕业于 C9 高校,硕士学历,曾在 IEEE ITS.VSD 等 ...

  10. 跟我学Kafka源码Producer分析

    2019独角兽企业重金招聘Python工程师标准>>> 跟我学Kafka源码Producer分析 博客分类: MQ 本章主要讲解分析Kafka的Producer的业务逻辑,分发逻辑和 ...

最新文章

  1. 导航菜单:jQuery粘性滚动导航栏效果
  2. 2016年第7本:非暴力沟通
  3. html文件头部固定代码
  4. Docker/Docker 起步123
  5. 微信公众号回调java_处理微信公众号消息回调
  6. python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...
  7. 扩展Kubernetes API
  8. 初学者,学习vue应该从何下手?
  9. 神经网络入门之RNN(三)
  10. 毕向东java笔记ppt,毕向东java学习笔记.doc
  11. 14届数独-真题标准数独-Day 4-20220119
  12. 小程序的宿主环境-宿主环境简介
  13. zotero如何用markdown记笔记
  14. HTML/XML转义字符对照表ASCII码对照表
  15. 拉格朗日乘子法(Lagrange Multiplier)详解以及乘子lambda的意义
  16. mysql连接校对_mysql字符集和校对规则(Mysql校对集)
  17. Windows定时自动执行bat脚本命令
  18. Powershell批量修改用户的UPN后缀
  19. 蓝牙扫描枪v-model双向数据绑定缓慢,改为原生input输入的方式——基础积累
  20. 人工智能发展飞速,未来几十年哪些职业会被逐渐取代,这些专业还值得选择吗?

热门文章

  1. IOS开发--第三阶段--微博(1)文档
  2. PHP笔记(CSS篇)
  3. VS2010 winform程序发布步骤
  4. 求出字符“2013-9-8”与“2013-10-1”相差的天数
  5. [强烈推荐]Oracle:只有rman备份(数据,参数,日志,控制文件全丢失)的恢复
  6. 监控摄像头GB28181转RTMP、FLV、HLS、RTSP多种格式实现网页嵌入播放
  7. ubuntu18.04新体验
  8. 【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别(转)
  9. Python内置函数(55)——globals
  10. Spring使用经验之Listener综述