Apache Kafka 是什么?
Apache Kafka 是什么?

文章目录
- Apache Kafka 是什么?
-
- 1. 核心概念
- 2. 架构
-
- 生产者端
- 存储端(Broker)
- 消费者端
- 3. 主要特性
- 4. 使用场景
- 5. 与其他消息队列的比较
- 6. Kafka 生态组件
- 7. 基本使用(命令行)
- 8. 总结
Apache Kafka 是一个开源的分布式事件流平台(Event Streaming Platform),最初由 LinkedIn 开发,并于 2011 年开源,后成为 Apache 顶级项目。它主要用于构建实时数据管道和流应用程序,具有高吞吐、可持久化、可水平扩展、容错性强等特点。
1. 核心概念
Kafka 的设计围绕一组核心概念展开,理解这些概念是掌握 Kafka 的基础:
-
消息(Message):Kafka 中的数据单元,由键(Key)、值(Value)和时间戳等组成。通常以字节数组形式存储。
-
主题(Topic):消息的类别或逻辑通道。生产者将消息发送到特定主题,消费者从主题订阅消息。一个主题可以理解为数据库中的一张表。
-
分区(Partition):主题可以细分为多个分区,每个分区是一个有序、不可变的消息序列。分区使得 Kafka 能够并行处理并提供水平扩展能力。消息在分区内通过偏移量(Offset)唯一标识。
-
偏移量(Offset):分区内每条消息的序号,消费者通过记录偏移量来追踪消费位置,Kafka 不主动删除已消费消息,而是基于配置的保留策略删除过期数据。
-
副本(Replica):每个分区可以有多个副本,分布在不同的代理上以保证高可用。副本分为领导者副本(Leader)和追随者副本(Follower)。所有生产者和消费者的读写请求都经过领导者,追随者异步同步数据。
-
生产者(Producer):向主题发布消息的客户端。生产者可以指定消息发往的分区(例如根据键进行哈希)。
-
消费者(Consumer):从主题订阅消息的客户端。消费者维护自己的消费偏移量,可以手动或自动提交。
-
消费者组(Consumer Group):一组消费者协同消费同一个主题或多个主题。组内每个消费者负责消费部分分区,实现负载均衡和容错。一个分区只能由组内的一个消费者消费。
-
代理(Broker):Kafka 服务器实例,负责接收和处理请求,存储消息。多个代理组成集群。
-
集群(Cluster):多个代理协同工作,通过 ZooKeeper 或 KRaft(Kafka 自身的共识机制)进行协调管理。
-
ZooKeeper(旧版本依赖)/ KRaft(新版本自研共识):用于管理集群元数据、选举控制器、监控代理存活等。Kafka 2.8.0 开始引入 KRaft 模式,逐步摆脱对 ZooKeeper 的依赖。