kafka
Apache Kafka 是一个分布式流处理平台,主要用于构建实时数据管道和流应用程序。它具有高吞吐量、低延迟、可扩展性和持久性等特点,广泛应用于日志收集、消息系统、事件溯源、流处理等场景。
以下是 Kafka 的基础知识:
1. Kafka 的核心概念
1.1 Topic(主题)
Topic 是 Kafka 中数据存储的逻辑分类,类似于数据库中的表。
生产者将消息发布到特定的 Topic,消费者从 Topic 订阅并消费消息。
一个 Kafka 集群可以有多个 Topic。
1.2 Partition(分区)
每个 Topic 可以分为多个 Partition,分区是 Kafka 实现高吞吐量和并行处理的基础。
每个分区是一个有序的、不可变的消息队列。
分区允许 Topic 的数据分布在多个服务器上,从而实现水平扩展。
1.3 Producer(生产者)
Producer 是向 Kafka Topic 发布消息的客户端。
生产者可以将消息发送到指定的 Topic 和 Partition。
1.4 Consumer(消费者)
Consumer 是从 Kafka Topic 订阅并消费消息的客户端。
消费者可以以组(Consumer Group)的形式工作,组内的消费者共同消费一个 Topic 的消息,实现负载均衡。
1.5 Broker(代理)
Broker 是 Kafka 集群中的单个服务器节点。
每个 Broker 负责存储和管理一个或多个 Partition。
多个 Broker 组成一个 Kafka 集群。
1.6 Offset(偏移量)
Offset 是消息在 Partition 中的唯一标识,表示消息的位置。
消费者通过维护 Offset 来记录自己消费到的位置。
1.7 Consumer Group(消费者组)
Consumer Group 是一组消费者的集合,共同消费一个 Topic 的消息。
Kafka 会将 Topic 的 Partition 分配给组内的消费者,确保每条消息只被组内的一个消费者消费。
1.8 Replication(副本)
Kafka 通过 Replication 实现数据的高可用性。
每个 Partition 可以有多个副本,其中一个副本是 Leader,负责处理读写请求,其他副本是 Follower,用于数据备份。
2. Kafka 的架构
2.1 生产者-消费者模型
生产者将消息发布到 Kafka Topic。
消费者从 Topic 订阅并消费消息。
2.2 分布式存储
Kafka 的数据分布在多个 Broker 上,每个 Broker 存储一部分 Partition。
通过分区和副本机制,Kafka 实现了高可用性和负载均衡。
2.3 ZooKeeper 的作用
Kafka 依赖 ZooKeeper 来管理集群元数据、Broker 状态、消费者 Offset 等。
从 Kafka 2.8.0 开始,Kafka 引入了 KRaft 模式,可以不再依赖 ZooKeeper。