Kafka 3.0与KRaft模式概述
► 重大变革
Apache Kafka在3.0版本中实现了重大变革,摆脱了对Apache Zookeeper的依赖,从而能够独立运行。相较于1.和2.版本,3.0版本的Kafka在架构和代码层面均发生了显著变化。这些改进主要集中在Kafka Raft、Controller Quorum、Metadata以及Snapshot等关键模块。这些全新KRaft模式提升了可扩展性和可靠性,这一创新标志着Kafka进入了一个新的发展阶段。
► KRaft模式简介
Apache Kafka自2.8版本起,引入了一种新的元数据管理模式——KRaft(即Kafka Raft),它摆脱了对Apache Zookeeper的依赖。这一创新模式在社区中备受瞩目,并已发布了体验版本,供用户初步探索其运行效果。通过Controller Quorum存储元数据,KRaft模式支持更多分区、更迅速的Controller切换,以及有效避免因Controller缓存与Zookeeper数据不一致而引发的问题。
为了便于理解KRaft模式带来的架构变化,以下是一张架构对比图,显示了Kafka在引入KRaft模式前后的区别。
在KRaft模式下,Kafka集群不再需要将元数据存储在Apache Zookeeper中。相反,它们会利用Controller节点的KRaft Quorum来存储这些关键数据。如此一来,不仅提升了系统的可扩展性和可靠性,而且在架构上也更加简洁和高效。
► 集群结构图
在KRaft模式下,传统的ZooKeeper节点被替换成新的Controller节点,负责监控和管理Kafka集群的元数据。下图是一个典型的KRaft集群结构图。
在该架构中,Kafka集群依旧包含多个broker节点,但已不再依赖ZooKeeper集群。被选中的Kafka集群Controller将从KRaft Quorum中加载其状态,并在必要时通知其他Broker节点关于元数据的变更。这种设计支持更多分区与快速Controller切换,并有效避免了因数据不一致导致的问题。
02KRaft集群的部署与配置
<h1><p id="19t.9cr18mo.org.cn">6</p></h1> <h1><p id="nn3.wfdignzhi.com">7</p></h1> <h1><p id="os5.airili.org.cn">8</p></h1> <h1><p id="j34.qsnkhfw.org.cn">9</p></h1> <h1><p id="7y5.vloong.org.cn">3</p></h1> <h1><p id="rnf.baidyl.org.cn">8</p></h1> <h1><p id="xn1.kdd6a2.org.cn">6</p></h1> <h1><p id="9tl.qwecxz23.org.cn">3</p></h1> <h1><p id="xax.kdk6l2.org.cn">4</p></h1> <h1><p id="kn9.qdgpxh.org.cn">8</p></h1>
► 参数配置
在KRaft集群的部署过程中,需要设置几个重要的参数。其中,process.roles=broker,controller
用于标识节点所承担的角色,node.id=1
确保每个节点都有唯一的ID,而关于Controller
服务器的设置则明确了哪些服务器可用于承担控制器角色。
► Controller角色配置
在KRaft模式下,节点的Controller角色通过指定的参数进行设置。每个Controller节点的ID必须包含在controller.quorum.voters
配置中,以保证正确的集群选举和运作。这种配置方式实现灵活的Controller节点选择,例如,可以选择高性能的机器来部署Controller节点,从而提高整体系统的负载均衡与稳定运行。
03KRaft集群的运行与实用工具
► 运行步骤
为了运行KRaft集群,需要使用kafka-storage.sh
脚本生成一个独一无二的集群ID,并格式化存储数据目录。这两步操作将提升Kafka 3.0版本的稳定性,而后通过运行bin/kafka-server-start.sh
脚本,启动Kafka Server,完成集群的初步搭建。
► 元数据日志解析工具
Kafka提供了一款名为kafka-dump-log.sh
的工具,用于查看和深入解析元数据日志。通过该工具,用户可以查看Topic的文件内容及相关元数据信息。在配置正确的前提下,它能够深入解析日志内容,为用户提供有效的数据查看与解析服务。
► 元数据日志工具使用示例
另一个实用的工具是kafka-metadata-shell.sh
,它提供了一种访问和管理Kafka元数据的交互方式。通过这个工具,用户可以获取Kafka集群的详细元数据信息,提供全面视角,便于监控和管理Kafka集群。例如,通过简单的命令即可列出集群中的主题、查看特定主题的元数据或进行其他管理操作。
通过这些工具和方法,Kafka用户能够更深入地探索和利用KRaft模式,充分享受3.0版本带来的新技术优势。