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 与源端可切分单元共同决定。