一、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表示删除)。