Kafka 技术文档

● 2026.09.0210 min read
 Kafka 技术文档

概述

什么是 Apache Kafka

Apache Kafka 是一个分布式事件流平台(Distributed Event Streaming Platform),最初由 LinkedIn 开发,于 2011 年成为 Apache 顶级项目。Kafka 被设计用于处理高吞吐量、容错性强的实时数据流,如今已被数千家公司用于构建实时数据管道和事件驱动架构。

Kafka 的核心定位可以概括为三个层面:

  • 消息引擎:提供高吞吐、低延迟的发布/订阅能力
  • 存储系统:将消息持久化到磁盘,支持消息重放
  • 流处理平台:内置 Kafka Streams API,支持实时流处理

Kafka 的核心应用场景

Kafka 在以下场景中发挥着关键作用:

  • 异步解耦:将同步调用转换为异步消息通知,实现生产者和消费者的解耦。例如在商品交易场景中,订单创建完成后需要触发统计、短信、邮件等操作,通过消息中间件可以解耦这些后续行为。
  • 削峰填谷:利用 Broker 缓冲上游瞬时突发流量,使下游消费平滑。在秒杀等场景中,MQ 可以将高峰流量填充到低谷空闲资源中,避免下游系统被压垮。
  • 实时分析:构建实时数据管道进行流式分析
  • 日志聚合:集中收集和处理分布式系统的日志
  • 事件驱动架构:作为事件驱动系统的核心消息总线

核心概念

Topic(主题)

Topic 是 Kafka 中消息的逻辑分类,类似于数据库中的表。生产者将消息发布到特定 Topic,消费者则从 Topic 订阅消息。

Partition(分区)

Partition 是 Topic 物理上的拆分单元,是实现水平扩展和并行处理的基础:

  • 每个 Partition 是一个有序、不可变的消息序列
  • 消息一旦被追加到 Partition 后不可修改
  • 每条消息在 Partition 中拥有唯一的偏移量(Offset)
  • 分区允许 Topic 的消息被并行处理,极大提高了吞吐量

Producer(生产者)

Producer 是向 Kafka Topic 发布消息的客户端。生产者可以指定消息发送到哪个分区,也可以让 Kafka 根据分区策略自动路由。

Consumer(消费者)与 Consumer Group(消费组)

Consumer 从 Kafka Topic 订阅并消费消息。多个消费者可以组成一个 Consumer Group

  • 组内的消费者共同消费一个 Topic 的消息
  • 每个 Partition 只能被组内的一个消费者消费
  • 这种机制实现了消息的并行处理与负载均衡

Broker(代理)与 Cluster(集群)

Broker 是 Kafka 服务器实例,负责消息的存储和传输。多个 Broker 组成一个 Kafka 集群,共同承担消息的存储和传输任务。

Replica(副本)与 Leader/Follower 机制

为保证数据可靠性,Kafka 引入了多副本机制:

  • 每个 Partition 可以有多个副本,数量由复制因子(Replication Factor) 决定
  • 副本中只有一个被选举为 Leader,负责处理所有读写请求
  • 其他副本作为 Follower,从 Leader 异步拉取数据进行同步
  • 当 Leader 故障时,会从 Follower 中选举新的 Leader

Offset(偏移量)

Offset 是 Partition 中每条消息的唯一序号,用于标识消息的位置和顺序。Offset 是分区级别的概念,而非 Topic 级别。

安装与部署

环境准备

在部署 Kafka 之前,需要做好以下准备:

硬件配置建议

  • CPU:多核处理器,建议 16 核以上以充分利用 Kafka 的多线程架构
  • 内存:至少 32GB,确保足够的页面缓存(Page Cache)空间
  • 存储:推荐使用多块 SSD 并配置为 RAID 10 阵列
  • 网络:建议使用万兆网卡

软件环境

  • JDK 17 或更高版本(适配 Kafka 3.7+)
  • 配置主机名解析
  • 调优系统参数(文件描述符数量、网络参数等)

单机部署(开发环境)

步骤 1:下载与解压

wget https://downloads.apache.org/kafka/3.7.0/kafka.tgz
tar -xzf kafka.tgz
cd kafka
Kafka 技术文档 — cittan