一、Flink CDC 是什么?
2020年 Flink cdc 首次在 Flink forward 大会上官宣, 由 Jark Wu & Qingsheng Ren 两位大佬 介绍,原始 blog 点击链接。
Flink CDC connector 可以捕获在一个或多个表中发生的所有变更。该模式通常有一个前记录和一个后记录。Flink CDC connector 可以直接在Flink中以非约束模式(流)使用,而不需要使用类似 kafka 之类的中间件中转数据。

另有一篇腾讯团队关于 Flink CDC 的介绍:Principle, practice and optimization of Flink CDC - 文章整合
https://chowdera.com/2021/04/20210402055656576y.html
二、Flink CDC 支持的数据库?
Connector | Database | Driver |
mongodb-cdc |
| MongoDB Driver: 4.3.1 |
mysql-cdc |
| JDBC Driver: 8.0.21 |
oceanbase-cdc |
| JDBC Driver: 5.7.4x |
oracle-cdc |
| Oracle Driver: 19.3.0.0 |
postgres-cdc |
| JDBC Driver: 42.2.12 |
sqlserver-cdc |
| JDBC Driver: 7.2.2.jre8 |
tidb-cdc |
|
三、使用 Flink CDC?
四、相比于 Kafka Streams ,Flink CDC 的优势
- Flink的操作者和SQL模块都比较成熟且易于使用
- Flink的作业可以通过调整运算器的并行度来完成,易于扩展处理能力
- Flink支持先进的状态后端(State Backends),允许访问大量的状态数据
- Flink提供更多的Source和Sink等。
- Flink拥有更大的用户群和活跃的支持社区,问题更容易解决
- Flink开源协议允许云厂商进行全托管深度定制,而Kafka Streams则只能由其自己部署和运营
- 和Flink Table/SQL模块集成了数据库表和变化记录流(例如CDC的数据流)。作为同一事物的两面,结果是Upsert Message结构(+I表示新增、-U表示记录更新前的值、+U表示记录的更新值、-D表示删除)。