Kafka 架构与原理 专栏导览
专栏定位
本专栏聚焦 Apache Kafka 分布式消息队列的架构设计与核心原理——从日志存储引擎的顺序写与零拷贝,到副本机制的 ISR/HW/Leader Epoch,再到消费者组的 Rebalance 机制和 Exactly-Once 语义的实现路径。Kafka 是大数据和微服务架构中最核心的基础设施之一——理解它的内部机制,是设计高吞吐、高可靠消息系统的前提。
本专栏覆盖 Kafka 2.x 到 3.x 的关键演进,重点分析 KRaft 模式(去 ZooKeeper)的架构变化。
目标读者
- 日常使用 Kafka 但希望理解其高吞吐量和高可靠性背后原理的后端/大数据工程师
- 需要进行 Kafka 集群调优、容量规划和故障排查的 SRE
- 对分布式系统日志存储和共识协议感兴趣的技术爱好者
专栏目录
| 序号 | 标题 | 核心内容 |
|---|---|---|
| 01 | 01 Kafka 全局架构——Broker、Topic、Partition 与消息流转 | 发布-订阅模型、Broker 集群、Topic/Partition 的逻辑与物理映射、Producer → Broker → Consumer 的完整链路 |
| 02 | 02 日志存储引擎——Segment、索引与零拷贝 | Partition 的 Segment 文件(.log/.index/.timeindex)、稀疏索引的二分查找、顺序写磁盘、sendfile 零拷贝、Page Cache 的利用 |
| 03 | 03 生产者——分区策略、acks 与幂等性 | 分区器(Round-Robin/Key Hash/Sticky)、acks=0/1/all 的语义、幂等 Producer(PID + Sequence Number)、事务消息 |
| 04 | 04 消费者与消费者组——Rebalance 机制深度剖析 | Consumer Group 的分区分配策略(Range/RoundRobin/Sticky/CooperativeSticky)、Rebalance 的三阶段流程、心跳与 session.timeout、静态成员避免不必要 Rebalance |
| 05 | 05 副本机制——ISR、HW 与 Leader Epoch | 副本同步(ISR/OSR)、High Watermark 的推进逻辑、Leader Epoch 解决数据截断问题、Unclean Leader Election 的取舍 |
| 06 | 06 Controller 与集群管理——从 ZooKeeper 到 KRaft | Controller 的选举与职责、元数据管理、KRaft 模式(Kafka Raft)的架构变化、去 Zookeeper 的动机与迁移 |
| 07 | 07 消费语义——Exactly-Once 的实现路径 | At-Most-Once / At-Least-Once / Exactly-Once 的对比、幂等 + 事务的 EOS 保障、Consumer 端的 offset 提交策略、与外部系统的端到端 EOS |
| 08 | 08 Kafka 性能优化——吞吐量调优与延迟分析 | 批量发送(linger.ms/batch.size)、压缩算法选型(Snappy/LZ4/Zstd)、Fetch 参数调优、OS 层面优化(Page Cache/磁盘调度)、JVM GC 调优 |
| 09 | 09 Kafka Connect 与 Kafka Streams | Connect 的 Source/Sink Connector 架构、Streams 的拓扑与状态存储(RocksDB)、KTable 与 KStream 的语义、与 Flink 的定位对比 |
| 10 | 10 Kafka 生产运维——监控指标、常见故障与容量规划 | 关键监控指标(Under-Replicated Partitions/ISR Shrink/Consumer Lag)、磁盘故障/Broker 宕机的处理 SOP、Topic 分区数规划、跨数据中心方案(MirrorMaker 2) |
推荐阅读路径
核心原理路径:01 → 02 → 05 → 06
生产者/消费者路径:03 → 04 → 07
运维调优路径:08 → 10 → 09
前置知识
- 分布式系统基础概念(副本、分区、一致性)
- 建议了解 ZooKeeper 的基本原理(有助于理解 Kafka 对 ZK 的依赖和去 ZK 的动机)
- Linux 基础(Page Cache、磁盘 IO)