Kafka入门到实战
Kafka的KRaft mode
Apache Kafka Raft (KRaft)是在KIP-500中引入的一种共识协议,旨在消除Apache Kafka对ZooKeeper在元数据管理上的依赖。
官网地址
声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准
https://kafka.apache.org/
Kafka概述
Apache Kafka 是一个开源的分布式事件流平台,提供高性能数据管道、流分析、 数据集成和任务关键型应用程序。
Kafka的KRaft mode详细介绍
配置
- 配置角色, 配置process.roles属性
- broker kafka服务实例
- controller kafka控制器
- 指定的Kafka服务器才能成为controller, zookeeper模式是都可能
- 要么是活跃的, 要么是热备
- 3个允许一个出故障, 5个允许2个出故障
- 每个服务实例和控制器都必须设置controller.quorum.voters属性, id和服务器要对应. 此外, id不能重复
process.roles=controller node.id=1 listeners=CONTROLLER://controller1.example.com:9093 controller.quorum.voters=1@controller1.example.com:9093,2@controller2.example.com:9093,3@controller3.example.com:9093
- broker,controller 既是控制器又是服务实例(生产环境不要这样设置)
- 不设置 系统将默认使用"ZooKeeper模式"
储存工具
使用kafka-storage.sh random-uuid命令为新的集群生成一个集群ID。在使用kafka-storage.sh format命令对集群中的每个服务器进行格式化时,必须使用这个集群ID。
调试
-
kafka-metadata-quorum工具可以用来描述集群元数据分区的运行状态。
> bin/kafka-metadata-quorum.sh --bootstrap-server broker_host:port describe --status
-
kafka-dump-log工具可以用来调试集群元数据目录的日志段和快照
-
这个命令解码并打印第一个日志段中的记录
bin/kafka-dump-log.sh --cluster-metadata-decoder --files metadata_log_dir/__cluster_metadata-0/00000000000000000000.log
-
这个命令解码并打印集群元数据快照中的记录
> bin/kafka-dump-log.sh --cluster-metadata-decoder --files metadata_log_dir/__cluster_metadata-0/00000000000000000100-0000000001.checkpoint
-
-
kafka-metadata-shell工具可以用来交互式地检查集群元数据分区的状态
> bin/kafka-metadata-shell.sh --snapshot metadata_log_dir/__cluster_metadata-0/00000000000000000000.log >> ls / brokers local metadataQuorum topicIds topics >> ls /topics foo >> cat /topics/foo/0/data
部署注意事项
- 角色设置为broker或controller,但不能同时设为两者
- 一个Kafka集群应使用3个controller
- 对于一般的Kafka集群,元数据日志目录的主内存5GB和硬盘空间5GB就足够了
缺失的功能
- 支持具有多个存储目录的JBOD配置
- 修改独立KRaft控制器上的某些动态配置
ZooKeeper到 KRaft迁移
- 不建议生产这样做
更新计划
欲知后事如何, 请听下回分解