Kafka 是一个开源的分布式流处理平台,用于高吞吐量、低延迟的消息传递和存储。以下是 Kafka 的核心组件:
-
Producer(生产者):Producer 负责产生和发送消息到 Kafka 集群。生产者将消息发布到指定的 Topic,可以批量发送消息,并指定消息的键(key)和值(value)。
-
Consumer(消费者):Consumer 订阅一个或多个 Topic,并从 Kafka 集群中拉取和消费消息。消费者以消费者组的形式组织,每个消费者组内的消费者共同消费一个 Topic 的消息。
-
Topic(主题):Topic 是消息的逻辑分类,生产者将消息发送到特定的 Topic,而消费者则订阅感兴趣的 Topic。Topic 在 Kafka 中是多分区(Partition)的,每个分区内的消息保留有序,而不同分区之间的消息顺序可能不同。
-
Partition(分区):每个 Topic 可以被分为多个分区,分区是 Kafka 实现高吞吐量和横向扩展的关键。每个分区在集群中有多个副本(Replica),一个副本作为 Leader,负责处理读写请求,其他副本作为 Follower,用于备份和数据复制。
-
Broker(代理服务器):Broker 是 Kafka 集群中的一个节点,负责存储和处理消息。每个 Broker 可以管理多个分区和副本,并提供生产者和消费者的网络接口。
-
ZooKeeper(动物管理员):ZooKeeper 是 Kafka 的协调服务,用于管理和维护 Kafka 集群的元数据、分区分配、消费者组的协调等。Kafka 使用 ZooKeeper 进行集群的发现、Leader 选举等操作。
-
Offset(偏移量):Offset 是消息在分区中的唯一标识符,表示消息在分区内的偏移量。消费者可以通过记录和跟踪偏移量来控制消息的消费位置,以实现精确的消费和重新消费。
以上是 Kafka 的核心组件,它们共同协作实现了高性能、可扩展和持久化的消息传递和处理。Kafka 提供了可靠性消息传递、流式处理、数据管道等功能,广泛应用于大数据、实时数据处理、日志收集和分布式系统等场景。