首页/数据/数据工程与 ETL 速查/Kafka Connect 连接器框架
Kafka64 条

Kafka Connect 连接器框架

Kafka Connect 用配置化连接器把外部系统与 Kafka 对接:source 把外部数据写入 Kafka,sink 把 Kafka 数据写出;worker 负责运行连接器并通过 REST 管理。

Kafka Connect 是什么

Kafka Connect 是 Kafka 自带的连接器框架,用「配置」而不是「写代码」把外部系统和 Kafka 对接:source 连接器把外部系统的数据持续写入 Kafka,sink 连接器把 Kafka 里的数据写出去。连接器跑在 worker 进程里,通过 REST 接口管理,位移和状态保存在 Kafka 内部主题中,因此 worker 重启后能从上次的位置继续,不必自己实现断点续传。

基本信息

两类连接器source(外部→Kafka)、sink(Kafka→外部)
运行模式standalone 或 distributed worker,distributed 支持横向扩展与故障转移
核心组件converter(数据格式)、SMT(单消息转换)、offset/status 主题
管理接口REST API,默认端口 8083
内部主题connect-offsets、connect-status、connect-configs
部署方式随 Kafka 发行包提供,或作为容器独立部署

通过 REST 创建连接器

通过 REST 创建连接器
curl -X POST -H "Content-Type: application/json" \
  --data @file-sink.json \
  http://localhost:8083/connectors
curl -s http://localhost:8083/connectors | jq
curl -s http://localhost:8083/connector-plugins | jq '.[].class'
# 查看连接器状态与失败任务
curl -s http://localhost:8083/connectors/file-sink/status | jq '.tasks'

典型使用场景

  • 数据库到 Kafka:用 CDC 类 source 连接器把业务库变更送进消息队列
  • Kafka 到数据仓库或对象存储:用 sink 连接器把消息落成文件或表
  • 系统间同步:用现成连接器替代自研的搬运程序,减少维护代码
  • 格式转换:在管道里用单消息转换做字段重命名、过滤与掩码
  • 多目标分发:同一份消息用多个 sink 连接器分别写入不同下游
  • 主题先落地再搬迁:先用 Connect 把数据收进 Kafka,再由批任务读取并转存

运行与运维要点

项说明注意
standalone单进程,配置写在文件里适合测试,不适合生产
distributed多 worker 协作,任务自动分摊需统一 group.id
tasks.max并行任务数上限受源端分区或表数量限制
converter消息序列化格式读写两端必须一致
offset.storage.topic位移存储主题误删会导致重复消费或从头开始
连接器状态放在 connect-status 主题、位移放在 connect-offsets 主题,重启 worker 后从位移续传。
distributed 模式下扩展 worker 只会重新分摊任务,不会自动提高单个连接器的并行度;并行度由 tasks.max 与源端可切分单元共同决定。

易错点

  • 连接器凭据写在配置里要配合配置加密或外部密钥管理,避免明文散落
  • distributed 模式下 connector 名称重复注册会报冲突,命名要带环境前缀
  • 误删位移主题会让所有连接器从头开始,造成重复数据
  • converter 与客户端不一致时消息能写入但消费端解析失败
  • 把连接器任务失败当成功:status 里任务处于 FAILED 时数据已经停止流动

数据来源与参考

  • Apache Kafka 官方文档:Kafka Connect 与 Connect REST Interface
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌