Broker / Topic / Partition / Replica / Leader / Follower 全景可视化 · 可调集群规模 · 读写链路动画 · Broker 宕机自动切换
Kafka 创建 Topic 时,Controller 会按「轮转 + 错位」算法把每个 Partition 的副本均匀分配到所有 Broker。同一分区的多个副本永远不会落在同一台 Broker(除非副本数 > Broker 数才会报错)。下面拖动滑块感受这个分布过程:
点 下一步 单步演示,或点 自动播放 看完整动画。每一步都对应本章 §2.3 时序图里的一笔。
produce(),本地攒 batch(linger.ms / batch.size)ProduceRequest 到 Partition Leader(Broker 1).log,分配 offset = NFetchRequest 拉数据FetchResponse 把新 batch 推给两个 FollowerProduceResponse(offset=N) 给 Producer(acks=all 完成)poll() → 发 FetchRequestcommit(),发 OffsetCommit 到 Group Coordinator__consumer_offsets,回 ACK下面是一个 3 Broker × 6 Partition × 3 Replica 的集群。点击下方任意 Broker 让它「宕机」,观察该 Broker 上的 Partition Leader 自动切换到 ISR 中的 Follower。Controller(Active Controller,黄色高亮)负责执行整个故障切换流程。
zookeeper.session.timeout.ms 或 KRaft Heartbeat 周期影响)。期间该分区短暂不可写,Producer 会收到 NOT_LEADER_FOR_PARTITION 错误并自动重试。