中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Kafka(本章节)
我们前面演示都是依赖ZooKeeper的版本,本小节我们介绍2个版本不依赖ZooKeeper的版本,第一个版本就是我们前面使用的版本:kafka_2.13-2.8.2,它既支持使用ZooKeeper,也支持使用kraft。
kraft,你可以简单理解就它把存储在ZooKeeper里面的内容存储到Kafka节点里面。
配置文件介绍
[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
我们就来先修改配置文件,让它可以使用。
# 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
[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
meta.properties:Kafka Raft 元数据文件,存储集群的核心元数据(如集群 ID、 broker ID、当前任期等)
#Fri Jun 06 00:16:15 CST 2025
cluster.id=xek485Gg7dH3rIpcufOsUQ
version=1
node.id=1
2.检查点文件(Checkpoint Files)
cleaner-offset-checkpoint:记录日志清理器(Log Cleaner)处理到的偏移量,用于恢复清理进度。
log-start-offset-checkpoint:记录每个分区的起始偏移量,用于快速定位日志文件的起始位置。
recovery-point-offset-checkpoint:记录可恢复的最早偏移量,用于崩溃恢复时确定日志截断点。
replication-offset-checkpoint:记录副本同步的偏移量,用于副本同步状态追踪。
以上均为文本文件,初始为空(0
字节),运行时由 Kafka 自动填充。
@metadata-0
目录作用:存储 Raft 协议的元数据日志(Quorum Log),用于实现 Broker 间的共识(选举、配置变更等)。
说明:名称中的 0 表示这是第一个(默认)分区,Raft 日志以分区形式存储。
4. @metadata-0
子目录下的文件00000000000000000000.inde索引文件,记录日志偏移量到物理位置的映射,用于快速查找日志条目。
00000000000000000000.log数据文件,存储实际的 Raft 日志条目(如选举请求、配置变更等)。
00000000000000000000.timeindex时间索引文件,记录时间戳到偏移量的映射,用于按时间查询日志。
leader-epoch-checkpoint记录 Leader 纪元(Epoch)信息,用于处理脑裂场景下的旧 Leader 数据。
quorum-state存储 Raft 协议的当前状态(如节点角色 Leader/Follower、任期 term、已提交的日志索引等)。
下面是Kafka4.0版本,从目录文件来看,它已经没有单独的kraft目录,因为它已经不支持ZooKeeper,默认的配置都是用于支持Kraft的。
[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
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维