一、Flink CDC 是什么?

      2020年 Flink cdc 首次在 Flink forward 大会上官宣, 由 ​​Jark Wu & Qingsheng Ren 两位大佬​​​ 介绍,原始 blog 点击​​链接。​

      Flink CDC connector 可以捕获在一个或多个表中发生的所有变更。该模式通常有一个前记录和一个后记录。Flink CDC connector 可以直接在Flink中以非约束模式(流)使用,而不需要使用类似 kafka 之类的中间件中转数据。

【Flink基础】-- Flink CDC介绍_mysql

另有一篇腾讯团队关于 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​


JDBC Driver: 8.0.27

三、使用 Flink CDC?

​快速上手 — CDC Connectors for Apache Flink® documentation​

四、相比于 Kafka Streams ,Flink CDC 的优势

  1. Flink的操作者和SQL模块都比较成熟且易于使用
  2. Flink的作业可以通过调整运算器的并行度来完成,易于扩展处理能力
  3. Flink支持先进的状态后端(State Backends),允许访问大量的状态数据
  4. Flink提供更多的Source和Sink等。
  5. Flink拥有更大的用户群和活跃的支持社区,问题更容易解决
  6. Flink开源协议允许云厂商进行全托管深度定制,而Kafka Streams则只能由其自己部署和运营
  7. 和Flink Table/SQL模块集成了数据库表和变化记录流(例如CDC的数据流)。作为同一事物的两面,结果是Upsert Message结构(+I表示新增、-U表示记录更新前的值、+U表示记录的更新值、-D表示删除)。