一、什么是Kafka

Kafka 是由 LinkedIn 于 2010 年开源、2011 年捐赠 Apache 基金会的分布式高吞吐消息流处理平台,现已成为事件流(Event Streaming)的事实标准中间件。Kafka 通过分区、复制、顺序写入等设计实现百万级 TPS 的高吞吐,被广泛用于日志收集、消息队列、事件溯源、CDC、流处理等场景。Kafka 生态(Kafka Connect、Kafka Streams、ksqlDB)支撑了完整的实时数据管道。
二、原理
1. Topic 与 Partition:数据按 Topic 组织,Topic 拆分为多个 Partition 实现并行与顺序保证 → 2. Producer/Consumer:生产者与消费者通过 Topic 进行发布订阅 → 3. Broker 集群:分布式部署,Partition 多副本保障可靠性 → 4. 顺序写入:磁盘顺序 I/O 实现百万 TPS 高吞吐 → 5. Kafka Connect:通过 Connector 接入外部数据源与目标 → 6. Kafka Streams:轻量流处理库;KRaft 共识:去除 ZK 依赖的新架构
三、信息卡片
| 中文名 | Apache Kafka 事件流平台 |
| 英文名 | Apache Kafka |
| 缩写 | — |
| 别名 | Apache Kafka、Kafka 消息队列、事件流平台 |
| 提出者 | LinkedIn 团队(Jay Kreps 等) |
| 提出时间 | 2010 年开源,2011 年成为 Apache 顶级项目 |
| 所属类别 | IT 基础架构 > 中间件 > 事件流平台 |
| 核心技术 | 分区与副本、顺序写入、Kafka Connect、Kafka Streams、KRaft 共识 |
| 主要应用 | 日志采集、消息队列、事件溯源、CDC、流处理 |
四、历史时间线
- 2010 年:LinkedIn 开源 Kafka
- 2011 年:成为 Apache 顶级项目
- 2014 年:Kafka 0.9 引入新 Consumer API 与安全机制
- 2017 年:Kafka Streams 与 KSQL 丰富流处理生态
- 2020 年:Confluent 推动商业化,Kafka 云服务化
- 2022 年:KRaft 协议发布,去除 ZooKeeper 依赖
- 2024-2025 年:Kafka 是事实标准的事件流平台,全球数百万集群部署
五、分类
- 按角色:消息队列 vs 日志系统 vs 事件流平台
- 按部署:自托管 Kafka vs Confluent Cloud vs AWS MSK vs 阿里云 Kafka
- 按架构:经典 Kafka vs Kafka on K8s (Strimzi) vs Kafka 云服务
- 按协议:原生 Kafka 协议 vs REST Proxy vs MQTT Proxy
- 按生态:Kafka Connect vs Kafka Streams vs ksqlDB
六、应用场景
- 日志采集:ELK/EFK 体系以 Kafka 为日志传输管道
- 消息队列:微服务异步通信、订单、支付等业务解耦
- CDC 数据同步:通过 Kafka Connect + Debezium 实现数据库变更流
- 事件溯源:业务事件持久化到 Kafka,支撑事件溯源架构
- 流处理:Kafka Streams、ksqlDB、Flink 实时处理管道
七、优缺点
优点:支撑高吞吐:百万级 TPS 满足大数据场景;解耦系统:通过 Topic 实现发布订阅解耦;保障可靠性:多副本机制让数据零丢失;实时数据管道:从日志采集到流处理一体化;生态成熟:Connect/Streams/ksqlDB 覆盖全链路
- 缺点:运维复杂:ZooKeeper、Broker、Topic、分区、副本管理复杂;学习曲线:Consumer Group、ISR、ACK 等概念对新人有门槛;资源消耗:磁盘、内存、网络开销较大;实时性不是极致:相比 Pulsar、NATS 等延迟略高
八、常见误区
- Kafka = 消息队列(部分对:Kafka 不仅是消息队列,更是事件流平台)
- Kafka 不能保证消息顺序(错:单 Partition 内严格有序,按 Key 路由可保证业务顺序)
- Kafka 取代数据库(错:Kafka 是流存储,不替代关系型数据库的强查询能力)
- Kafka 适合所有消息场景(错:小消息、低延迟场景 RabbitMQ 等可能更合适)
九、关联概念
- 父概念:中间件(业内默认搭配)、事件驱动架构
- 子概念:Kafka Connect、Kafka Streams、KRaft
- 兄弟概念:RabbitMQ、RocketMQ、Pulsar
- 对比概念:Kafka vs RabbitMQ、Kafka vs Pulsar、Kafka vs RocketMQ
- 应用相关:微服务 Microservices、流处理(业内默认搭配)、数据湖 Data Lake