Kafka Connect
Kafka Connect 是一种在 Kafka 和其他系统之间可靠且可扩展地传输数据的工具。它是一个让 Kafka 与外部系统连接的开源组件和框架。有一些连接器可以帮助将大量数据集移入和移出 Kafka 系统。 Kafka Connect 仅用于复制流式数据,因此其范围并不广泛。它作为一个独立的测试流程执行,并为组织提供分布式、可扩展的服务支持。
Kafka Connect 提供了用于移动一些常见数据的现有连接器实现:
- 源连接器: 源连接器将整个数据库和流表更新用于主题。它能够从用户的整个应用服务器收集指标到主题中。这使得数据可用于低延迟的流处理。
- 接收器连接器: 此连接器用于将数据从主题传送到二级索引(如 Hadoop 系统)以进行离线分析。
Kafka Connect 的特点
- 通用框架: 它用作连接器的通用框架。 Kafka Connect 允许将其他系统与 Kafka 集成。这使得连接器的部署、管理和开发变得简单。
- 可以在独立或分布式模式下工作: Kafka Connect 可以向上扩展以向组织提供集中管理的服务支持,也可以向下扩展以测试、开发和部署小型产品。
- REST 接口: 通过 REST API 向 Kafka Connect 提交和管理 Kafka 连接器。
- 自动管理偏移: Kafka connect 能够通过从连接器获取很少的信息来自动管理提交过程。
- 分布式且可扩展: 默认情况下,Kafka connect 是可扩展和分布式的。因此,可以扩展工作人员的数量以扩展 Kafka Connect 集群。
- 流或批处理集成: Kafka Connect 提供了桥接流和批处理系统的解决方案。
Kafka Connect 术语
一些重要的术语将有助于理解Kafka Connect:
- 连接器: 连接器用于协调和管理 Kafka 和其他系统之间的数据复制。创建一个连接器实例来执行数据流管理。连接器使用的所有类都在名为 Connector Plugin 的插件中定义。
- 任务: 它实际执行将数据复制到 Apache Kafka 或从 Apache Kafka 复制数据。连接器的每个实例协调一组实际复制数据的任务。 Kafka 连接器能够将单个作业分解为多个任务。这为并行和可扩展地复制数据提供了内置支持,只需很少的配置。由于这些任务可以随时启动、重新启动或停止以提供可扩展且有弹性的管道,因此其状态保存在特殊主题中,即 'config.storage.topic' 和 'status。 storage.topic'。关联的连接器管理状态。
- Workers: 连接器和任务都是工作的逻辑单元。工作线程是执行连接器和任务的正在运行的进程。 有两种类型的工作线程: 独立工作线程: 这些工作线程由单个进程执行所有连接器和任务。它是最简单的模式,因此它需要的配置较少。但是,功能和可扩展性都有限。除了监控之外,它没有任何容错能力。
- Distributed Workers: 与上述不同,它提供可扩展和自动容错。在这里,多个工作进程使用相同的组 ID 执行连接器和任务。这些工作人员会自动安排所有活动工作人员的执行。如果添加了新工作人员,或者任何工作人员出现故障或关闭,工作人员会重新分配工作。
- 转换器: 它是用于在 Kafka Connect 和发送方/接收方之间转换数据的代码。任务使用这些转换器将数据格式从字节更改为 Kafka Connect 内部数据。
- 转换: 它用于改变数据以使其简单轻便。这是一个简单的函数,它将单个记录作为输入,修改它并输出该记录。 Kafka Connect 提供了许多转换,它们执行简单而有用的修改。有多种转换可用于数据修改,例如强制转换、删除、提取主题等等。
Kafka Connect 的优势
- 以数据为中心的管道: Kafka Connect 使用数据抽象将数据推送或拉取到 Apache Kafka。
- 灵活且可扩展: Kafka Connect 能够在单个节点上与流式和面向批处理的系统一起执行。
- 可重用性和可扩展性: Kafka Connect 根据用户需求扩展了现有的连接器。
到目前为止,我们了解了主题、分区、向 Kafka 发送数据以及从 Kafka 消费数据。这可能是较低级别的抽象。因此,需要更高级别的抽象。这因此引入了 Kafka 流的概念。Kafka Streams通常,流定义了随时间 ...