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 应用最新映像之间不构成全局同步屏障;新建资源到处可见仍需要传播时间。

官方出处与源码

回到首页 · 上一篇