1. Kafka Connect 概述

大家好,我是这次课程的主讲。咱们直接开门见山——Kafka Connect,说白了就是 Kafka 官方提供的一个数据集成工具。它的核心任务就一个:帮你在 Kafka 和各种外部系统之间,稳定、高效地搬运数据。

我刚开始接触 Kafka 的时候,其实也困惑过:Kafka 本身不就是个消息队列吗?为什么还要单独搞一个 Connect?后来在项目中踩过坑才明白,Kafka 只负责存和转发,但数据怎么进去、怎么出来,这活儿它不干。Connect 就是专门干这个的。

1.1 为什么需要 Kafka Connect?

你想想看,一个典型的数据平台,数据源可能来自数据库、日志文件、传感器、云服务……目标端可能是 HDFS、Elasticsearch、数据仓库。如果没有 Connect,你怎么办?

  • 自己写生产者/消费者代码——每个系统写一套,重复造轮子
  • 用第三方工具——版本兼容性、运维复杂度都是坑
  • 手动导入导出——数据量一上来,人就废了

Connect 解决了三个核心痛点:

痛点 Connect 的解法
重复开发 提供标准化 API,一套连接器搞定
运维复杂 分布式模式自带容错和负载均衡
数据一致性 支持 exactly-once 语义(配合 Kafka 事务)

核心观点:Kafka Connect 不是锦上添花,而是数据平台的「高速公路出入口」。没有它,数据进出 Kafka 就是一场噩梦。

1.2 应用场景:我见过哪些真实案例?

我在项目中遇到过不少场景,这里挑几个典型的说说:

场景一:数据库 CDC 实时同步

用 Debezium 连接器监听 MySQL 的 binlog,数据变更实时推送到 Kafka。下游消费端可以同步更新缓存、搜索引擎、数据仓库。我曾经帮一家电商公司做过这个,订单数据从 MySQL 到 Elasticsearch 的延迟控制在 1 秒以内。

场景二:日志聚合

用 FileStream Source 连接器读取应用日志文件,写入 Kafka。再用 Sink 连接器写入 HDFS 做长期存储。嗯,这里要注意:日志量大的时候,一定要配置好分区数和压缩策略,否则磁盘会报警。

场景三:数据湖入湖

用 Confluent S3 Sink 连接器,把 Kafka 里的流式数据直接写入 S3 或 HDFS。我建议你使用 Parquet 格式,压缩比高,查询性能也好。

场景 Source 连接器 Sink 连接器 典型延迟
数据库 CDC Debezium MySQL JDBC Sink 亚秒级
日志聚合 FileStream Source HDFS Sink 秒级
数据入湖 自定义 Source S3 Sink 分钟级(可调)

1.3 Kafka Connect 的两种运行模式

Connect 支持两种模式,我分别说说它们的适用场景:

  • 单机模式(Standalone):适合开发测试、小规模场景。所有配置写在一个文件里,启动简单。但挂了就挂了,没有容错。
  • 分布式模式(Distributed):生产环境首选。多个 Worker 节点组成集群,任务自动分配,节点挂了自动迁移。我建议你至少部署 3 个节点。

我的经验:刚开始学的时候,先用单机模式跑通一个简单的 FileStream 连接器,理解配置和生命周期。然后再切到分布式模式,感受一下自动 rebalance 的效果。

1.4 核心概念速览

在深入之前,先记住这几个关键概念:

概念 说明
Connector 连接器的逻辑定义,描述怎么连接外部系统
Task 实际干活的工作单元,一个 Connector 可以拆成多个 Task 并行
Worker 运行 Task 的进程,分布式模式下多个 Worker 组成集群
Converter 数据格式转换器,比如 JSON、Avro、Protobuf
Transform 数据在传输过程中的轻量级转换,比如过滤、重命名字段

避坑指南:我曾经犯过一个错误——把 Connector 和 Task 混为一谈。记住:Connector 是「计划」,Task 是「执行」。一个 Connector 可以配置多个 Task 来并行拉取数据,但 Task 数量不能超过分区数或源系统的并发上限。

1.5 架构总览:一张图看懂

下面这张图展示了 Kafka Connect 的核心架构。我特意把 Source 和 Sink 两条链路分开画,方便你理解数据流向。

Kafka Connect 核心架构 外部数据源 MySQL / 日志 / API Source 连接器 Kafka 集群 Topic 分区 数据持久化 Sink 连接器 外部目标 HDFS / ES / S3 说明: 1. Source 连接器从外部系统拉取数据,写入 Kafka Topic 2. Sink 连接器从 Kafka Topic 读取数据,写入外部系统 3. 一个 Connect 集群可以同时运行多个 Source 和 Sink 连接器 4. 每个连接器可以拆分为多个 Task 并行处理,提升吞吐量

1.6 小结:你该记住什么?

这一章我们聊了 Kafka Connect 是什么、为什么需要它、以及它用在哪些地方。说白了,它就是 Kafka 生态里的「数据搬运工」,帮你把数据从 A 点搬到 B 点,而且搬得稳、搬得快。

我个人习惯把 Connect 看作一个「数据管道工厂」——你只需要告诉它「我要从哪取数据、送到哪去、用什么格式」,剩下的并发、容错、重试,它都帮你搞定。