Kafka Connect

1. 概念

Kafka Connect 是什么?

Kafka Connect 是 Apache Kafka 提供的一个配置驱动框架,用于在 Kafka 和外部系统之间高效传输数据,无需开发复杂代码。

核心组件

  • Connector(连接器) - Source Connector :从外部系统读取数据写入 Kafka。 - Sink Connector:从 Kafka 读取数据写入外部系统。 - 连接器负责定义、管理和启动实际运行的任务。

  • Task(任务) 执行数据移动的最小单元,由连接器创建,Worker 调度和运行。

  • Worker(工作进程) Kafka Connect 的运行容器,负责:

  • 执行 Connector 和 Task;

  • 接收 REST API 请求;

  • 管理配置、状态和任务调度;

  • 负载均衡和高可用。

  • Converter(转换器) 转换 Kafka 中存储的原始数据与 Connect 内部数据结构之间的格式。常见的转换器有:

  • JSONConverter(默认)

  • AvroConverter(结合 Confluent Schema Registry)

  • ProtobufConverter

  • StringConverter

  • Single Message Transformation(SMT) 用于轻量、无状态的数据转换操作,例如字段过滤、字段重命名等。

部署模式

  • Standalone(单机模式) - 适合开发、测试、小型任务。

  • 无高可用性,扩展性有限。

  • Distributed( 分布式 模式) - 推荐生产环境使用。

  • Worker 组成集群,任务自动分配、重平衡,具备高可用性。

数据模型与可靠性

Kafka Connect 利用 Kafka 内部的三个主题实现可靠性:

  • 配置主题:保存 Connector 配置。

  • 状态主题:存储 Connector 和 Task 的状态。

  • 偏移主题:保存任务的消费偏移量。


2. 应用场景

实时数据管道

通过 Source Connector 把数据流式写入 Kafka,或者使用 Sink Connector 把 Kafka 数据推送到外部系统,支持实时分析和监控。

数据同步

例如将生产数据库的数据持续同步到数据仓库,或在多系统之间保持数据一致性。

ELT / ETL 任务

  • ELT:Kafka Connect 完成 Extract(提取)和 Load(加载),复杂转换由 Kafka Streams、Flink 等完成。

  • ETL:简单转换可直接通过 SMT 在 Kafka Connect 内部完成。

CDC(Change Data Capture)

利用 Debezium 等 Source Connector,通过读取数据库事务日志(binlog、oplog),捕获增量变更,避免轮询,提高效率和准确性。

多系统集成

Kafka Connect 提供丰富的现成连接器,支持:

  • 关系型数据库:MySQL、PostgreSQL、Oracle、SQL Server

  • NoSQL:MongoDB、Cassandra

  • 搜索与分析:Elasticsearch、OpenSearch

  • 云存储:S3、GCS、Azure Blob

  • 数据仓库:BigQuery、Snowflake、Redshift

  • 消息中间件:RabbitMQ、ActiveMQ、JMS


3. 处理流程

Kafka Connect 的数据处理流程分为以下几个阶段:

1. Connector 配置与启动

  • 用户通过 REST API 或配置文件定义 Connector:

  • 数据源 / 目标系统参数

  • 转换器类型

  • SMT 策略

  • 任务并行数

  • Worker 接收配置并存储到 Kafka 的配置主题中。

2. 任务划分

Connector 根据配置拆分任务(Task),如:

  • 数据库表分片

  • 分区拆分

  • 分布式 offset 分配

3. 任务调度与运行

  • Worker 集群自动分配任务。

  • 若某个 Worker 挂掉,任务会在其他 Worker 上重新启动。

4. 数据读取与转换

  • Source Task

  • 从源系统读取数据。

  • 构造 Schema + Value 对象。

  • 提供给 Worker。

  • 转换器

  • Worker 根据配置调用 Converter,将数据转换为 Kafka 支持的存储格式(JSON、Avro、Protobuf)。

  • SMT

  • 在数据写入 Kafka 前对消息做轻量的转换处理(例如删除字段、增加时间戳等)。

5. 数据写入 Kafka

  • Worker 将转换后的消息写入 Kafka Topic。

  • 如果使用 Avro / Protobuf,Schema 信息会存储在 Schema Registry 中。

6. Sink Task 处理

  • Worker 从 Kafka 读取数据。

  • 使用 Converter 反序列化数据。

  • 可选 SMT 处理。

  • Sink Task 按目标系统要求写入外部存储。

7. 偏移量管理

  • Kafka Connect 自动管理偏移量。

  • 偏移量存储在 Kafka 内部主题中,保证任务恢复后可以精确恢复到上一次处理的位置。


4. 执行逻辑(Execution Logic)

分层职责

层级 职责
Worker 任务调度、配置管理、REST 接口、伸缩与高可用
Connector 定义任务、拆分任务、数据管道管理
Task 执行数据读取或写入
Converter 格式转换:Kafka ↔ 数据源
SMT 单条消息轻量级处理

高可用与扩展性

  • 分布式 Worker 模式支持横向扩展。
  • Worker 故障时任务会自动迁移。
  • 状态和偏移量保存在 Kafka 内部主题中,实现断点续传。

插件化架构

Kafka Connect 提供丰富的扩展点:

  • Connector 插件:支持各种外部系统。
  • Converter 插件:支持多种数据格式。
  • SMT 插件:支持多种单条消息转换。
  • 自定义 Connector:通过实现 API 可支持企业内部系统。

Schema 驱动的数据模型

  • 支持 Avro / Protobuf / JSON Schema。
  • 集成 Schema Registry,可进行 Schema 演进与兼容性检查。

配置驱动、低代码

  • 提供 REST API 管理 Connector。
  • Pipeline 通过 JSON 或 properties 文件定义。
  • 无需编写业务逻辑代码即可完成数据管道搭建。

总结一览表

方面 核心要点
概念 Connector / Task / Worker / Converter / SMT,多种部署模式,状态存储于 Kafka 内部。
场景 实时管道、数据同步、ELT/ETL、CDC、多系统集成。
流程 配置 → 任务划分 → 调度 → 数据读取 → 转换 → 写 Kafka → Sink 写入 → 偏移管理。
执行逻辑 分层职责、分布式容错、插件扩展、Schema 管理、配置即代码。

相关推荐
半桶水专家1 天前
Kafka Topic(主题)详解
分布式·kafka
半桶水专家1 天前
kafka Partition(分区)详解
分布式·kafka
何双新1 天前
第一讲、Kafka 初识与环境搭建
分布式·kafka·linq
liangsheng_g1 天前
kafka服务端架构总览
架构·kafka
阿登林1 天前
如何使用Kafka处理高吞吐量的实时数据
分布式·kafka
在未来等你1 天前
Kafka面试精讲 Day 6:Kafka日志存储结构与索引机制
大数据·分布式·面试·kafka·消息队列
一叶飘零_sweeeet1 天前
SpringBoot 整合 Kafka 的实战指南
java·spring boot·kafka
1101480750@qq.com1 天前
66关于kafka:consumer_offsets日志不能自动清理,设置自动清理规则
分布式·kafka
在未来等你1 天前
Kafka面试精讲 Day 3:Producer生产者原理与配置
大数据·分布式·面试·kafka·消息队列