Apache Kafka 架构


Apache Kafka 架构技术文档

1. 概述

Kafka 是一种分布式发布-订阅消息系统,其核心设计目标是高吞吐、可扩展与高可用。其架构由数据存储层、控制管理层与消费模型三部分组成,通过分区(Partition)实现水平扩展,通过副本机制(Replica)实现容错,通过 ISR 机制实现一致性保障。


2. 架构分层

kafka.png

2.1 数据平面(Data Plane)

负责消息的写入、存储与读取,包括以下组件:

  • Topic
  • Partition
  • Replica
  • ISR

该层以日志追加(append-only log)方式存储数据,提供高吞吐能力。


2.2 控制平面(Control Plane)

负责集群元数据管理与协调,包括:

  • Controller(Kafka 集群中被选举出的特殊 Broker)

主要职责:

  • Partition Leader 选举
  • Replica 状态管理
  • ISR 维护
  • Broker 故障检测与恢复
  • 分区重分配


2.3 消费平面(Consumer Plane)

由 Consumer Group 构成,用于实现数据并行消费。

特性:

  • 一个 Partition 在同一时刻仅能被一个 Consumer 消费
  • Consumer 数量与 Partition 数量决定并行度


3. 核心组件定义

3.1 Broker

Broker 是 Kafka 集群中的运行节点,负责数据存储与请求处理。

职责包括:

  • 存储 Partition 日志数据
  • 处理 Producer 写入请求
  • 处理 Consumer 读取请求
  • 执行 Replica 同步

Broker 本身不保存全局元数据。


3.2 Topic

Topic 是消息的逻辑分类单元,用于对消息流进行业务划分。

特性:

  • 不直接存储数据
  • 由多个 Partition 组成
  • 提供逻辑隔离能力


3.3 Partition

Partition 是 Topic 的物理存储单元,是 Kafka 中最小的并行与存储单位。

特性:

  • 按 offset 顺序追加写入
  • Partition 内保证有序性
  • Partition 之间无全局顺序
  • 可分布在不同 Broker 上

作用:

  • 实现水平扩展
  • 提供并行消费能力


3.4 Replica

Replica 是 Partition 的副本机制,用于实现数据高可用。

类型:

  • Leader Replica:负责读写请求
  • Follower Replica:负责数据同步

特性:

  • Replica 分布在不同 Broker
  • Leader 宕机时可进行切换


3.5 ISR(In-Sync Replicas)

ISR 表示与 Leader 保持同步状态的 Replica 集合。

判定条件:

  • 与 Leader 数据延迟在允许范围内
  • 在规定时间内完成日志同步

作用:

  • 作为数据提交确认依据(ACK=all)
  • 作为 Leader 选举候选集合
  • 保证数据一致性与可靠性


3.6 Controller

Controller 是 Kafka 集群中的管理角色,由某个 Broker 选举产生。

职责:

  • 管理 Partition Leader 分配
  • 维护 ISR 状态
  • 处理 Broker 上下线
  • 执行 Partition Rebalance

说明: Controller 并非独立组件,而是 Broker 的一种运行角色。


4. 数据写入流程

  1. Producer 发送消息至 Topic
  2. 根据 key 或分区策略选择 Partition
  3. 写入 Partition Leader
  4. Follower Replica 同步数据
  5. ISR 更新同步状态
  6. 根据 ACK 策略返回写入结果


5. 数据消费模型

Consumer Group 机制如下:

  • 一个 Partition 在同一时间仅分配给一个 Consumer
  • Consumer 通过分区分配实现并行消费
  • Consumer 数量影响整体消费吞吐能力

分配关系:

  • Partition 数 ≥ Consumer 数:Consumer 并行提升
  • Partition 数 < Consumer 数:部分 Consumer 空闲


6. 系统一致性机制

Kafka 通过以下机制保证一致性:

  • Leader Replica 作为唯一写入口
  • ISR 作为提交确认集合
  • ACK=all 模式要求 ISR 全部确认
  • Leader Failover 仅从 ISR 中选举


7. 高可用机制

Kafka 高可用能力依赖:

  • Replica 多副本机制
  • Leader 自动切换
  • ISR 动态维护
  • Controller 故障接管机制


8. 性能设计基础

Kafka 高性能来源于以下设计:

  • 顺序磁盘写入(Sequential Append)
  • Partition 并行化
  • 批量发送与批量消费(Batch I/O)
  • 零拷贝数据传输(Zero Copy)
  • 页缓存(Page Cache)利用


9. 架构总结

Kafka 的整体架构由以下核心机制构成:

  • 通过 Partition 实现数据分片与并行扩展
  • 通过 Replica 实现数据冗余与高可用
  • 通过 ISR 机制实现一致性控制
  • 通过 Controller 实现集群级协调管理
  • 通过 Consumer Group 实现消费侧水平扩展


文章标签:

评论(0)