Kafka 架构
我们已经学习了 Apache Kafka 的基本概念。这些基本概念,如Topic、分区、生产者、消费者等,共同构成了Kafka架构。
由于不同的应用程序相应地设计了Kafka的架构,因此设计Apache需要以下几个基本部分Kafka 架构。
- 数据生态系统: 多个使用 Apache Kafka 的应用程序形成了一个生态系统。这个生态系统是为数据处理而构建的。它以创建数据的应用程序的形式获取输入,并以指标、报告等的形式定义输出。下图表示 Kafka 的循环数据生态系统。
- Kafka 集群: Kafka 集群是一个由不同的代理、主题及其各自的分区组成的系统。数据写入集群内的主题并由集群本身读取。
- 生产者: 生产者向集群内的主题发送或写入数据/消息。为了存储大量数据,应用程序中的不同生产者将数据发送到 Kafka 集群。
- 消费者: 消费者是从 Kafka 集群读取或消费消息的消费者。可以有多个消费者使用来自集群的不同类型的数据。 Kafka 的美妙之处在于每个消费者都知道它需要从哪里消费数据。
- 经纪人: Kafka 服务器被称为经纪人。经纪人是生产者和消费者之间的桥梁。如果生产者希望将数据写入集群,则将其发送到 Kafka 服务器。所有代理都位于 Kafka 集群中。此外,可以有多个代理。
- 主题: 它是一个通用名称或标题,用于表示相似类型的数据。在 Apache Kafka 中,一个集群中可以有多个主题。每个主题指定不同类型的消息。
- 分区: 数据或消息被分成小的子部分,称为分区。每个分区在其中携带具有偏移值的数据。数据始终以顺序方式写入。我们可以拥有无限数量的具有无限偏移值的分区。但是,不能保证消息会写入哪个分区。
- ZooKeeper: ZooKeeper 用于存储有关 Kafka 集群的信息和消费者客户端的详细信息。它通过维护经纪人列表来管理经纪人。此外,ZooKeeper 负责为分区选择领导者。如果发生任何更改,例如代理死亡、新主题等,ZooKeeper 会向 Apache Kafka 发送通知。 ZooKeeper 旨在与奇数个 Kafka 服务器一起运行。 Zookeeper 有一个负责处理所有写入的领导服务器,其余的服务器是处理所有读取的跟随者。但是,用户不直接与 Zookeeper 交互,而是通过代理进行交互。没有 zookeeper 服务器,任何 Kafka 服务器都无法运行。必须运行 zookeeper 服务器。
注意: Kafka 0.10 及以上版本,Zookeeper 不存储消费者偏移值。它存储在 Kafka 主题中(如 Kafka 主题部分所示)。
在上图中,有三个zookeeper服务器,其中服务器 2 是领导者,另外两个被选为其追随者。五个代理连接到这些服务器。 Kafka 集群会自动知道代理何时宕机、添加更多主题等。
因此,结合所有必需品,设计了 Kafka 集群架构。
Apache Kafka 支持 Windows、macOS 以及 Linux 环境。每个操作系统都有自己的安装 Apache Kafka 的步骤/过程。达到这个阶段意味着所有有志者可能都清楚 Apache Kafka ...