介绍
Cdc Connectors for Apache Flink 是一组用于 Apache Flink 的源连接器,使用更改数据捕获 (CDC) 从不同的数据库引入更改。
Apache Flink的CDC Connectors集成了Debezium作为捕获数据更改的引擎
官网:
https://github.com/ververica/flink-cdc-connectors
发展历程
2020 年 7 月由云邪提交了第一个 commit,这是基于个人兴趣孵化的项目;
2020 年 7 中旬支持了 MySQL-CDC;
2020 年 7 月末支持了 Postgres-CDC;
一年的时间,该项目在 GitHub 上的 star 数已经超过 800。
传统 CDC ETL
传统的基于 CDC 的 ETL 分析中,数据采集工具是必须的,如:maxwell、Debezium、Canal 等,采集工具负责采集数据库的增量数据,一些采集工具也支持同步全量数据。
采集到的数据一般输出到消息中间件如 Kafka,然后 Flink 计算引擎再去消费这一部分数据写入到目的端
目的端可以是各种 DB,数据湖,实时数仓和离线数仓。
Flink CDC 的 ETL
使用 Flink CDC 之后,组件更少,维护更方便,另一个优势是通过 Flink SQL 极大地降低了用户使用门槛,如下图:
该例子是通过 Flink CDC 去同步数据库数据并写入到 TiDB,用户直接使用 Flink SQL 创建了产品和订单的 MySQL-CDC 表,然后对数据流进行 JOIN 加工,加工后直接写入到下游数据库。通过一个 Flink SQL 作业就完成了 CDC 的数据分析,加工和同步。
会发现这是一个纯 SQL 作业,这意味着只要会 SQL 的 BI,业务线同学都可以完成此类工作。与此同时,用户也可以利用 Flink SQL 提供的丰富语法进行数据清洗、分析、聚合,如下图:


