第 2 章 Kafka 的 Apache Kafka 部署流
提供了 Apache Kafka 组件,用于使用 Streams for Apache Kafka 发行版本部署到 OpenShift。Kafka 组件通常作为集群运行,以实现高可用性。
使用 Kafka 组件的典型部署可能包括:
- 代理节点的 Kafka 集群
- 复制 ZooKeeper 实例的 zookeeper 集群
- 用于外部数据连接的 Kafka 连接 集群
- Kafka MirrorMaker 集群在二级集群中镜像 Kafka 集群
- Kafka Exporter 来提取额外的 Kafka 指标数据以进行监控。
- Kafka Bridge 为 Kafka 集群发出基于 HTTP 的请求
- Cruise Control 在代理节点间重新平衡主题分区
并非所有组件都是必须的,但最少需要 Kafka 和 ZooKeeper。有些组件可以在没有 Kafka 的情况下部署,如 MirrorMaker 或 Kafka Connect。
2.1. Kafka 组件架构
Kafka 集群包含负责消息发送的代理。
ZooKeeper 用于集群管理。以 KRaft (Kafka Raft metadata)模式部署 Kafka 时,通过集成 Kafka 节点上的代理和控制器角色来简化集群管理,从而消除 ZooKeeper 的需求。Kafka 节点使用代理、控制器或两者的角色。使用节点池在 Apache Kafka 中配置了角色。
其他 Kafka 组件与 Kafka 集群交互,以执行特定的角色。
Kafka 组件交互
- Apache ZooKeeper
- Apache ZooKeeper 提供了一个集群协调服务,用于存储和跟踪代理和消费者的状态。Zookeeper 也用于控制器选举。如果使用 ZooKeeper,则 ZooKeeper 集群必须在运行 Kafka 前就绪。在 KRaft 模式中,不需要 ZooKeeper,因为协调由作为控制器运行的 Kafka 集群中管理。
- Kafka Connect
Kafka Connect 是一个在 Kafka 代理和其他使用 Connector 插件系统间流传输数据的集成工具包。Kafka Connect 提供了一个框架,用于将 Kafka 与外部数据源或目标(如数据库)集成,如数据库,用于使用连接器导入或导出数据。连接器是提供所需的连接配置的插件。
- source(源)连接器将外部数据推送到 Kafka 中。
sink(接收器)连接器从 Kafka 中提取数据
外部数据会被转换并转换为适当的格式。
您可以使用
build
配置部署 Kafka Connect,以使用您数据连接所需的连接器插件来自动构建容器镜像。
- Kafka MirrorMaker
Kafka MirrorMaker 在两个 Kafka 集群或数据中心之间复制数据。
MirrorMaker 从源 Kafka 集群获取信息,并将其写入目标 Kafka 集群。
- Kafka Bridge
- Kafka Bridge 提供了一个 API,用于将基于 HTTP 的客户端与 Kafka 集群集成。
- Kafka Exporter
- Kafka Exporter 提取数据以 Prometheus 指标的形式提取,主要与偏移、消费者组、消费者和主题有关的数据。consumer lag 是写入分区的最后一条消息之间的延迟,以及当前由消费者从那个分区获取的消息之间的延迟