千家信息网

如何配置KRaft

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"如何配置KRaft"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 如何开始KRa
千家信息网最后更新 2026年10月31日如何配置KRaft

本篇内容介绍了"如何配置KRaft"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 如何开始KRaft?

Kafka使用内嵌的KRaft替代了ZooKeeper,是一个非常大的进步,因为像ES之类的分布式系统,这种集群meta信息的同步,都是自循环的。

但如何使用KRaft启动呢?很多同学直接晕菜了,这方面的资料也比较少,但使用起来非常简单。

我们注意到,在config目录下,多了一个叫做kraft的目录,里面包含着一套新的配置文件,可以直接摒弃对ZK的依赖。

通过下面三行命令,即可开启一个单机的broker,从始至终没有ZK的参与。

# ./bin/kafka-storage.sh random-uuid # ./bin/kafka-storage.sh format -t TBYU7WMiREexuZqrjKG60g -c ./config/kraft/server.properties # ./bin/kafka-server-start.sh ./config/kraft/server.properties

经过一阵噼里啪啦的运行,No ZK的Kafka已经启动起来了。

就是这么简单。

2. 如何配置的?

kafka又加了一个内部主题,叫做@metadata,用来存这些元信息。

接下来我们就要看一些关键的配置信息。你可以使用vimdiff config/server.properties config/kraft/server.properties看一下这些主要的区别。

首先,kraft多了一个叫做process.roles的配置。在我们的配置文件里它是这样的。

process.roles=broker,controller

它其实有三个取值。

  • broker: 这台机器将仅仅当作一个broker

  • controller: 作为 Raft quorum的控制器之一进行启动

  • broker,controller: 包含两者的功能

熟悉ES的同学可以看出,这些划分就像是es的master和node,所以分布式的概念其实在一定程度上是相通的。

接下来是监听地址的变化,因为我们的server有了两个功能,所以也就需要开启两个端口。

listeners=PLAINTEXT://:9092,CONTROLLER://:9093

另外,还有一个叫做node.id的东西。不同于原来的broker.id,这个nodeid是用来投票用的。

node.id=1

因为raft协议的特性,我们的投票配置就要使用上面的node.id。写起来比较怪异是不是?但总比Zk的好看多了。所以这些配置在后面的版本是有可能改动的。

controller.quorum.voters=1@localhost:9093

这就是配置文件的主要区别。我们来看看它的集合。

process.roles=broker,controller  listeners=PLAINTEXT://:9092,CONTROLLER://:9093 node.id=1    controller.quorum.voters=1@localhost:9093

3. 为什么要干掉ZK?

Kafka作为一个消息队列,竟然要依赖一个重量级的协调系统ZooKeeper,不得不说是一个笑话。同样作为消息队列,人家RabbitMQ早早的就实现了自我管理。

Zookeeper非常笨重,还要求奇数个节点的集群配置,扩容和缩容也不方便。Zk的配置方式,也和kafka的完全不一样,要按照调优Kafka,竟然还要兼顾另外一个系统,这真是日了狗了。

Kafka要想往轻量级,开箱即用的方向发展,就不得不干掉Zk。

另外,由于Zk和Kafka毕竟不是在一个存储体系里面,当Topic和Partition的数量上了规模,数据同步问题就变的显著起来。Zk是可靠,但是它慢啊,完全不如放在Kafka的日志存储体系里面,这对标榜速度的Kafka来说,是不得不绕过的一环。

使用过Kafka-admin的同学,应该都对缓慢的监控数据同步历历在目。它需要先从zk上转一圈,获取一些元数据信息,然后再从Kafka的JMX接口中拉取数据。这么一转悠,就几乎让大型集群死翘翘。

4. 会有哪些改变?

部署更简单。

首先,部署变的更加简单。对于一些不太追求高可用的系统,甚至一个进程就能把可爱的kafka跑起来。我们也不需要再申请对zookeeper友好的SSD磁盘,也不用再关注zk的容量是不是够用了。

监控更便捷。

其次,由于信息的集中,从Kafka获取监控信息,就变得轻而易举,不用再到zk里转一圈了。与grafana/kibana/promethus等系统的集成,指日可待。

速度更快捷。

最重要的当然是速度了。Raft比ZK的ZAB协议更加易懂,也更加高效,partition的主选举将变得更快捷,controller的调度速度将上一个档次。

以后,再也不会有这样的连接方式。

zookeeper.connect=zookeeper:2181

取而代之的,只会剩下bootstrap的连接方式。Kafka的节点,越来越像对等节点。

bootstrap.servers=broker:9092

kafka还提供了一个叫做kafka-metadata-shell.sh的工具,能够看到topic和partion的分布,这些信息原来是可以通过zk获取的,现在可以使用这个命令行获取。

$ ./bin/kafka-metadata-shell.sh  --snapshot /tmp/kraft-combined-logs/\@metadata-0/00000000000000000000.log >> ls / brokers  local  metadataQuorum  topicIds  topics >> ls /topics foo >> cat /topics/foo/0/data {   "partitionId" : 0,   "topicId" : "5zoAlv-xEh9xRANKXt1Lbg",   "replicas" : [ 1 ],   "isr" : [ 1 ],   "removingReplicas" : null,   "addingReplicas" : null,   "leader" : 1,   "leaderEpoch" : 0,   "partitionEpoch" : 0 } >> exit

"如何配置KRaft"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

配置 信息 系统 数据 速度 接下来 同学 文件 方式 节点 集群 面的 同步 监控 不用 两个 体系 内容 分布式 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 中国互联网科技工作委员会毛军 科技创新与互联网经济 互联网科技资迅 唐信互联网科技 大连 广州善班互联网科技 上游互联网科技 互联网科技有限公司 翻译 博兴的互联网电子科技公司 移动互联网科技股 栖莱科技互联网股份有限公司 互联网科技扶贫时间 本届互联网大会上的黑科技 广州有谷有贝互联网科技有限公司 2021世界互联网领先科技成果发布 米泉互联网科技专业怎么样 三亚科技创新互联网基地 上海旺乐尼互联网科技有限公司 广东猫王互联网科技有限公司电话 科技美学互联网 艺术 科技互联网项目 易互联网科技有限公司 佩信高科技互联网 注册互联网科技公司经营范围大全 乌苏新华互联网科技做什么的 华中科技大学互联网的牛人 中天科技中国工业互联网 三亚科技创新互联网基地 华人运通互联网科技公司 互联网科技快速发展优美句子
0