简单明了的 Kafka 架构图解:生产、存储与消费

221 阅读3分钟

Kafka 是一个分布式流处理平台,用于构建实时的数据流应用。它的核心架构由多个组件组成,这些组件协同工作以确保高效的消息传递和处理。

Kafka 的架构主要由以下几个部分构成:

1. Producer(生产者)

  • 作用:生产者是消息的发送者,负责将数据(消息)发送到 Kafka 集群中的一个或多个主题(Topic)。生产者发送消息时,消息会被写入到一个特定的 Topic 中。
  • 工作流程:生产者通过 Kafka 客户端 API 与 Kafka Broker 进行通信,并将数据发送到指定的 Topic。

2. Broker(代理)

  • 作用:Kafka 集群由多个 Broker 节点组成,Broker 存储消息并负责处理生产者和消费者的请求。
  • 工作流程:Kafka 集群通常有多个 Broker,它们一起工作,确保消息的可靠性和负载均衡。每个 Broker 负责管理部分 Topic 的分区,存储数据并通过网络协议与其他 Broker 协作处理请求。

3. Topic(主题)

  • 作用:主题是消息的逻辑容器,用于区分不同类型的数据。每个 Topic 可以包含多个分区。生产者将消息发送到特定的 Topic,消费者从该 Topic 中读取消息。
  • 工作流程:一个 Topic 可以有多个分区,每个分区中保存着消息的数据。消息被发送到特定的 Topic 中,Topic 下的每个分区(Partition)都有消息的有序集合,生产者将消息写入这些分区。

4. Partition(分区)

  • 作用:分区是 Topic 的物理子集,用于存储消息。Kafka 支持多个分区的并行处理,这样可以提高吞吐量。每个分区存储消息的一个有序队列。
  • 工作流程:每个分区都有一个严格的消息顺序,并且可以被分布到多个 Kafka 节点(Broker)上。每个分区都有一个主副本和多个副本,用于数据冗余和高可用。分区的副本和数据冗余机制确保了数据的可靠性。

5. Consumer(消费者)

  • 作用:消费者从 Kafka 中订阅(消费)消息,通常是通过 Consumer Group(消费组) 的方式进行。
  • 工作流程:消费者可以并行工作,从多个分区读取消息。消费者在消费消息时,会根据偏移量来追踪已消费的消息。

6. Offset(偏移量)

  • 作用:偏移量是分区中每条消息的唯一标识,代表消息在分区中的位置。偏移量是单调递增的,不会改变。
  • 工作原理:消费者通过提交偏移量来标记自己已经消费的消息位置。Kafka 使用偏移量来确保每个消费者不会重复消费同一条消息。

7. ZooKeeper

  • 作用:ZooKeeper 是 Kafka 使用的分布式协调服务,用于管理集群的元数据和协调任务。它负责跟踪 Kafka 集群的状态,如主题的分配、分区的状态、消费者的偏移量等。
  • 工作流程:- ZooKeeper 保证 Kafka 集群在分布式环境下的协调与一致性,确保 Leader 选举、分区副本的管理等任务的顺利进行。

Kafka 架构流程图

image1

这是 Kafka 架构的流程图,它展示了各个组件如何协同工作:生产者将消息发送到 Kafka Broker,Broker 将消息存储在主题(Topic)分区中,消费者从这些分区中订阅和读取消息,Zookeeper 负责协调集群的管理。