Apache Kafka 架构

2025年3月17日 | 阅读 3 分钟

我们已经了解了 Apache Kafka 的基本概念。这些基本概念,如主题、分区、生产者、消费者等,共同组成了 Kafka 架构。

由于不同的应用程序会相应地设计 Kafka 的架构,因此设计 Apache Kafka 架构需要以下重要部分。

  • 数据生态系统: 几个使用 Apache Kafka 的应用程序构成了一个生态系统。这个生态系统是为数据处理而构建的。它以创建应用程序的形式接收输入数据,并以指标、报告等形式定义输出。下图表示了 Kafka 的循环数据生态系统。
Apache Kafka Architecture
  • Kafka 集群: Kafka 集群是一个由不同的 broker、主题及其各自的分区组成的系统。数据被写入集群中的主题,并由集群本身读取。
  • 生产者: 生产者将数据/消息发送或写入集群中的主题。为了存储大量数据,应用程序中的不同生产者将数据发送到 Kafka 集群。
  • 消费者: 消费者是从 Kafka 集群读取或消费消息的。可以有几个消费者从集群中消费不同类型的数据。Kafka 的优点在于每个消费者都知道它需要从哪里消费数据。
  • Broker: Kafka 服务器被称为 broker。broker 是生产者和消费者之间的桥梁。如果生产者希望将数据写入集群,则将其发送到 Kafka 服务器。所有 broker 都位于 Kafka 集群内部。此外,可以有多个 broker。
  • 主题: 这是一个常用名称或标题,用于表示类似类型的数据。在 Apache Kafka 中,一个集群中可以有多个主题。每个主题指定不同类型的消息。
  • 分区: 数据或消息被分成小的子部分,称为分区。每个分区在其内部携带数据,具有一个**偏移量**值。数据始终以顺序方式写入。我们可以拥有无限数量的分区和无限的偏移量值。但是,不能保证消息将被写入哪个分区。
  • ZooKeeper: ZooKeeper 用于存储有关 Kafka 集群的信息和消费者客户端的详细信息。它通过维护 broker 列表来管理 broker。此外,ZooKeeper 负责为分区选择一个 leader。如果发生任何更改,例如 broker 宕机、新主题等,ZooKeeper 会向 Apache Kafka 发送通知。ZooKeeper 旨在与奇数个 Kafka 服务器一起运行。Zookeeper 有一个 leader 服务器处理所有写入操作,其余的服务器是 followers 处理所有读取操作。但是,用户不直接与 Zookeeper 交互,而是通过 broker 进行交互。没有 zookeeper 服务器,任何 Kafka 服务器都无法运行。必须运行 zookeeper 服务器。

注意: 从 Kafka 0.10 及以上版本开始,Zookeeper 不再存储消费者偏移量值。它存储在 Kafka 主题中(如 Kafka 主题部分所示)。

Apache Kafka Architecture

在上图中,有三个 zookeeper 服务器,其中服务器 2 是 leader,另外两个被选为它的 followers。这五个 broker 连接到这些服务器。当 broker 宕机、添加更多主题等时,Kafka 集群会自动知道。

因此,通过组合所有必需品,设计了 Kafka 集群架构。

Apache Kafka Architecture
下一个主题安装 Kafka