Kafka 技术文档
●● 2026.09.0210 min read

概述
什么是 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