04 KRaft 元数据
KRaft 元数据
KRaft 通过 controller quorum 复制集群元数据;一个 active controller 处理变更,broker 跟随已提交记录更新本地元数据映像。
版本:Apache Kafka 4.4.0(KRaft);核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification {
element actor { style { shape person; color amber } }
element system { style { color muted } }
element component { style { color primary } }
element storage { style { shape storage; color green } }
}
model {
admin = actor 'Admin 客户端'
broker = system 'Broker'
active = component 'Active controller'
voter = component '其他 controller voters'
log = storage '元数据日志'
}
views {
dynamic view index {
title '核心链路'
variant sequence
admin -> broker '创建 topic 请求'
broker -> active '转交控制面请求'
active -> log '生成并追加元数据记录'
voter -> active 'Fetch 仲裁日志'
active -> voter '返回待复制记录'
active -> log '多数派复制后提交'
active -> broker '请求完成 / 返回结果'
broker -> active '作为 observer 获取已提交元数据'
broker -> broker '更新本地元数据映像与分区状态'
}
}
关键判断
- 业务数据记录写入 topic 分区日志;topic 定义、分区分配及集群状态写入元数据日志,二者承担不同保证。
- controller leader 选举与元数据提交使用 Raft 仲裁;broker 是元数据复制观察者,不因为承载业务数据就成为 controller voter。
- controller 与 broker 可分离或组合部署;图是逻辑角色,不表示每个角色都必须对应一台机器。
边界
请求完成与各 broker 应用最新映像之间不构成全局同步屏障;新建资源到处可见仍需要传播时间。