Apache Kafka 是什么?

Apache Kafka 是什么?

Kafka2

文章目录

  • 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 的依赖。

© 版权声明

相关文章