Kafka Connect的架构原理与生产实践
请解释Kafka Connect的架构设计,包括Source/Sink Connector、Worker/Connector/Task的关系、REST API管理、Offset管理、以及Converters(JsonConverter/AvroConverter)的使用。如何保证Connector的高可用和Exactly-Once语义?
回答
苦行僧
Kafka Connect架构:
-
Worker:
- Standalone:单进程模式,适合开发测试
- Distributed:多Worker组成集群,自动Rebalance
-
Connector & Task:
- Connector:定义从哪里读/写(配置类)
- Task:实际执行数据搬移的并行单元
- 关系:1 Connector → N Task(并行度)
-
Offset管理:
- 通过
__consumer_offsets或kafka-connect-offsets主题存储 - 自动记录已处理的数据位置
- 通过
-
Converters:
- JsonConverter:简单但无Schema
- AvroConverter:Schema Registry集成,支持兼容性校验
- ProtobufConverter:新版本支持
-
REST API:
GET /connectors、POST /connectorsPUT /connectors/{name}/pause、PUT /connectors/{name}/resumeGET /connectors/{name}/status(查看Task健康)
-
Exactly-Once保证:
- 使用事务性Producer
- 开启
exactly.once.source.supports=true - Kafka 3.0+支持EOS Connect
-
高可用:
- 分布式模式多Worker保证HA
- Worker故障后,Tasks自动迁移到其他Worker
- Offset持久化保证重启不丢数据