Kafka 架构与原理 专栏导览

专栏定位

本专栏聚焦 Apache Kafka 分布式消息队列的架构设计与核心原理——从日志存储引擎的顺序写与零拷贝,到副本机制的 ISR/HW/Leader Epoch,再到消费者组的 Rebalance 机制和 Exactly-Once 语义的实现路径。Kafka 是大数据和微服务架构中最核心的基础设施之一——理解它的内部机制,是设计高吞吐、高可靠消息系统的前提。

本专栏覆盖 Kafka 2.x 到 3.x 的关键演进,重点分析 KRaft 模式(去 ZooKeeper)的架构变化。

目标读者

  • 日常使用 Kafka 但希望理解其高吞吐量和高可靠性背后原理的后端/大数据工程师
  • 需要进行 Kafka 集群调优、容量规划和故障排查的 SRE
  • 对分布式系统日志存储和共识协议感兴趣的技术爱好者

专栏目录

序号标题核心内容
0101 Kafka 全局架构——Broker、Topic、Partition 与消息流转发布-订阅模型、Broker 集群、Topic/Partition 的逻辑与物理映射、Producer → Broker → Consumer 的完整链路
0202 日志存储引擎——Segment、索引与零拷贝Partition 的 Segment 文件(.log/.index/.timeindex)、稀疏索引的二分查找、顺序写磁盘、sendfile 零拷贝、Page Cache 的利用
0303 生产者——分区策略、acks 与幂等性分区器(Round-Robin/Key Hash/Sticky)、acks=0/1/all 的语义、幂等 Producer(PID + Sequence Number)、事务消息
0404 消费者与消费者组——Rebalance 机制深度剖析Consumer Group 的分区分配策略(Range/RoundRobin/Sticky/CooperativeSticky)、Rebalance 的三阶段流程、心跳与 session.timeout、静态成员避免不必要 Rebalance
0505 副本机制——ISR、HW 与 Leader Epoch副本同步(ISR/OSR)、High Watermark 的推进逻辑、Leader Epoch 解决数据截断问题、Unclean Leader Election 的取舍
0606 Controller 与集群管理——从 ZooKeeper 到 KRaftController 的选举与职责、元数据管理、KRaft 模式(Kafka Raft)的架构变化、去 Zookeeper 的动机与迁移
0707 消费语义——Exactly-Once 的实现路径At-Most-Once / At-Least-Once / Exactly-Once 的对比、幂等 + 事务的 EOS 保障、Consumer 端的 offset 提交策略、与外部系统的端到端 EOS
0808 Kafka 性能优化——吞吐量调优与延迟分析批量发送(linger.ms/batch.size)、压缩算法选型(Snappy/LZ4/Zstd)、Fetch 参数调优、OS 层面优化(Page Cache/磁盘调度)、JVM GC 调优
0909 Kafka Connect 与 Kafka StreamsConnect 的 Source/Sink Connector 架构、Streams 的拓扑与状态存储(RocksDB)、KTable 与 KStream 的语义、与 Flink 的定位对比
1010 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

关联专栏

  • ZooKeeper:Kafka 早期依赖 ZK 做元数据管理和 Leader 选举
  • 网络协议栈:Kafka 的零拷贝(sendfile)与高吞吐网络 IO
  • 文件系统:Kafka 的顺序写与 Page Cache 的配合
  • Flink:Kafka 作为 Flink 最常用的 Source/Sink
  • 指标体系:Kafka 监控指标与 Prometheus 采集
  • Redis Stream:轻量级消息队列选型对比