前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kafka-不依赖ZooKeeper的kraft

Kafka-不依赖ZooKeeper的kraft

作者头像
运维小路
发布2025-06-12 12:38:41
发布2025-06-12 12:38:41
15200
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行
图片
图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka(本章节)

我们前面演示都是依赖ZooKeeper的版本,本小节我们介绍2个版本不依赖ZooKeeper的版本,第一个版本就是我们前面使用的版本:kafka_2.13-2.8.2,它既支持使用ZooKeeper,也支持使用kraft。

kraft,你可以简单理解就它把存储在ZooKeeper里面的内容存储到Kafka节点里面。

配置文件介绍

代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost config]# ll
total 72
-rw-r--r-- 1 root root  906 Sep  2  2022 connect-console-sink.properties
-rw-r--r-- 1 root root  909 Sep  2  2022 connect-console-source.properties
-rw-r--r-- 1 root root 5321 Sep  2  2022 connect-distributed.properties
-rw-r--r-- 1 root root  883 Sep  2  2022 connect-file-sink.properties
-rw-r--r-- 1 root root  881 Sep  2  2022 connect-file-source.properties
-rw-r--r-- 1 root root 2247 Sep  2  2022 connect-log4j.properties
-rw-r--r-- 1 root root 2540 Sep  2  2022 connect-mirror-maker.properties
-rw-r--r-- 1 root root 2262 Sep  2  2022 connect-standalone.properties
-rw-r--r-- 1 root root 1221 Sep  2  2022 consumer.properties
drwxr-xr-x 2 root root  132 Jun  5 23:56 kraft
-rw-r--r-- 1 root root 4674 Sep  2  2022 log4j.properties
-rw-r--r-- 1 root root 1925 Sep  2  2022 producer.properties
-rw-r--r-- 1 root root 6901 May 21 23:29 server.properties
-rw-r--r-- 1 root root 1032 Sep  2  2022 tools-log4j.properties
-rw-r--r-- 1 root root 1169 Sep  2  2022 trogdor.conf
-rw-r--r-- 1 root root 1205 Sep  2  2022 zookeeper.properties
#前面部分文件就是为了支持ZooKeeper的配置文件

#下面的目录就是不依赖的ZooKeeper的配置文件
[root@localhost config]# ll kraft/
total 40
-rw-r--r-- 1 root root  6058 Sep  2  2022 broker.properties
-rw-r--r-- 1 root root  6004 Sep  2  2022 controller.properties
-rw-r--r-- 1 root root 13232 Sep  2  2022 README.md
-rw-r--r-- 1 root root  6081 Sep  2  2022 server.properties

我们就来先修改配置文件,让它可以使用。

代码语言:javascript
代码运行次数:0
运行
复制
# 1. 生成 22 字符的随机集群 ID
CLUSTER_ID=$(head -c 16 /dev/urandom | base64 | tr '+/' '-_' | cut -c1-22)
# 2. 格式化存储目录
./bin/kafka-storage.sh format -t "${CLUSTER_ID}" -c ./config/kraft/server.properties
# 3. 启动 Kafka,注意配置文件使用,实际就是换了个配置文件
./bin/kafka-server-start.sh ./config/kraft/server.properties
启动成功以后,会生成下面的内容。可以你可以把理解存储到ZooKeeper的换成了下面的内容。
代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost kraft-combined-logs]# ll
total 4
-rw-r--r-- 1 root root   0 Jun  6 00:17 cleaner-offset-checkpoint
-rw-r--r-- 1 root root   0 Jun  6 00:17 log-start-offset-checkpoint
drwxr-xr-x 2 root root 161 Jun  6 00:17 @metadata-0
-rw-r--r-- 1 root root  86 Jun  6 00:16 meta.properties
-rw-r--r-- 1 root root   0 Jun  6 00:17 recovery-point-offset-checkpoint
-rw-r--r-- 1 root root   0 Jun  6 00:17 replication-offset-checkpoint
[root@localhost kraft-combined-logs]# cd \@metadata-0/

#这下面数据和一个标准的Topic基本一样
[root@localhost @metadata-0]# ll
total 12
-rw-r--r-- 1 root root 10485760 Jun  6 00:17 00000000000000000000.index
-rw-r--r-- 1 root root      314 Jun  6 00:17 00000000000000000000.log
-rw-r--r-- 1 root root 10485756 Jun  6 00:17 00000000000000000000.timeindex
-rw-r--r-- 1 root root        8 Jun  6 00:17 leader-epoch-checkpoint
-rw-r--r-- 1 root root      125 Jun  6 00:17 quorum-state
配置文件介绍
1. meta.properties:Kafka Raft 元数据文件,存储集群的核心元数据(如集群 ID、 broker ID、当前任期等)
代码语言:javascript
代码运行次数:0
运行
复制
#Fri Jun 06 00:16:15 CST 2025
cluster.id=xek485Gg7dH3rIpcufOsUQ
version=1
node.id=1
代码语言:javascript
代码运行次数:0
运行
复制
2.检查点文件(Checkpoint Files)

cleaner-offset-checkpoint:记录日志清理器(Log Cleaner)处理到的偏移量,用于恢复清理进度。

log-start-offset-checkpoint:记录每个分区的起始偏移量,用于快速定位日志文件的起始位置。

recovery-point-offset-checkpoint:记录可恢复的最早偏移量,用于崩溃恢复时确定日志截断点。

replication-offset-checkpoint:记录副本同步的偏移量,用于副本同步状态追踪。

以上均为文本文件,初始为空(0 字节),运行时由 Kafka 自动填充。

3. @metadata-0 目录

作用:存储 Raft 协议的元数据日志(Quorum Log),用于实现 Broker 间的共识(选举、配置变更等)。

说明:名称中的 0 表示这是第一个(默认)分区,Raft 日志以分区形式存储。

4. @metadata-0 子目录下的文件

1. 日志分段文件(Log Segments)

00000000000000000000.inde索引文件,记录日志偏移量到物理位置的映射,用于快速查找日志条目。

00000000000000000000.log数据文件,存储实际的 Raft 日志条目(如选举请求、配置变更等)。

00000000000000000000.timeindex时间索引文件,记录时间戳到偏移量的映射,用于按时间查询日志。

2. 元数据文件

leader-epoch-checkpoint记录 Leader 纪元(Epoch)信息,用于处理脑裂场景下的旧 Leader 数据。

quorum-state存储 Raft 协议的当前状态(如节点角色 Leader/Follower、任期 term、已提交的日志索引等)。

下面是Kafka4.0版本,从目录文件来看,它已经没有单独的kraft目录,因为它已经不支持ZooKeeper,默认的配置都是用于支持Kraft的。

代码语言:javascript
代码运行次数:0
运行
复制
[root@driver1 kafka_2.13-4.0.0]# ll
total 68
drwxr-xr-x 3 root root  4096 Mar 14 16:20 bin
drwxr-xr-x 2 root root  4096 Mar 14 16:20 config
drwxr-xr-x 2 root root  8192 Jun  9 00:45 libs
-rw-r--r-- 1 root root 14699 Mar 14 16:19 LICENSE
drwxr-xr-x 2 root root  4096 Mar 14 16:20 licenses
-rw-r--r-- 1 root root 27064 Mar 14 16:19 NOTICE
drwxr-xr-x 2 root root    44 Mar 14 16:20 site-docs
[root@driver1 kafka_2.13-4.0.0]# ll ./config/
total 84
-rw-r--r-- 1 root root 6120 Mar 14 16:19 broker.properties
-rw-r--r-- 1 root root  906 Mar 14 16:19 connect-console-sink.properties
-rw-r--r-- 1 root root  909 Mar 14 16:19 connect-console-source.properties
-rw-r--r-- 1 root root 5475 Mar 14 16:19 connect-distributed.properties
-rw-r--r-- 1 root root  883 Mar 14 16:19 connect-file-sink.properties
-rw-r--r-- 1 root root  881 Mar 14 16:19 connect-file-source.properties
-rw-r--r-- 1 root root 1486 Mar 14 16:19 connect-log4j2.yaml
-rw-r--r-- 1 root root 2540 Mar 14 16:19 connect-mirror-maker.properties
-rw-r--r-- 1 root root 2262 Mar 14 16:19 connect-standalone.properties
-rw-r--r-- 1 root root 1221 Mar 14 16:19 consumer.properties
-rw-r--r-- 1 root root 6094 Mar 14 16:19 controller.properties
-rw-r--r-- 1 root root 5219 Mar 14 16:19 log4j2.yaml
-rw-r--r-- 1 root root 2065 Mar 14 16:19 producer.properties
-rw-r--r-- 1 root root 6384 Mar 14 16:19 server.properties
-rw-r--r-- 1 root root 1091 Mar 14 16:19 tools-log4j2.yaml
-rw-r--r-- 1 root root 1169 Mar 14 16:19 trogdor.conf

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 启动成功以后,会生成下面的内容。可以你可以把理解存储到ZooKeeper的换成了下面的内容。
  • 配置文件介绍
  • 1. meta.properties:Kafka Raft 元数据文件,存储集群的核心元数据(如集群 ID、 broker ID、当前任期等)
  • 3. @metadata-0 目录
  • 4. @metadata-0 子目录下的文件
    • 1. 日志分段文件(Log Segments)
    • 2. 元数据文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档