80. 超哥分享Flink CDC(一)

数据开发修炼手册语兴小助理-颜2024-11-28 17:33

什么是CDC?

CDC(Change Data Capture)是一种用于跟踪数据库中数据更改的技术。它用于监视数据库中的变化,并捕获这些变化,以便实时或定期将变化的数据同步到其他系统、数据仓库或分析平台。CDC 技术通常用于数据复制、数据仓库更新、实时报告和数据同步等场景。

CDC 可以捕获数据库中的以下类型的数据变化:

  1. 插入(Insert):当新数据被插入到数据库表中时。

  2. 更新(Update):当数据库表中的现有数据被修改时。

  3. 删除(Delete):当数据从数据库表中被删除时

什么是Flink CDC

Flink CDC(Change Data Capture,即数据变更抓取)是一个开源的数据库变更日志捕获和处理框架,它可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB等)中捕获数据变更并将其转换为流式数据。Flink CDC 可以帮助实时应用程序实时地处理和分析这些流数据,从而实现数据同步、数据管道、实时分析和实时应用等功能。

本质上是一系列的Flink Source Connector集合,用于来获取数据库的实时变更,底层基于Debezium实现。

https://github.com/ververica/flink-cdc-connectors

Flink CDC 前生今世

Flink CDC 1.x

Flink CDC 1.x开启了Flink在CDC上的实践之路,Flink CDC 1.x第一次引入了Debezium框架,利用Debezium已有的能力将数据库实时变更接入到Flink流计算框架中,利用Flink丰富的生态对数据进行加工处理,满足不同的业务需求,在功能层面上而言,Flink CDC 1.x只能说是可以用,但不能生产上用,为什么:

  1. 1.x版本全增量切换时会对表加锁,在同步过程中有段时间业务会处于暂停状态

  2. 各方面功能还不够完善,比如自动加表、DDL事件传递等

总体而言Flink CDC 1.x只能说是一个比较有趣的小玩具,还不具备大规模商业盈利的价值。

Flink CDC 2.x

在2.x版本中,Flink CDC引入了Netfix DBLog中的无锁算法,彻底解决了全增量切换上业务停滞的问题,同时得益于FLIP-27对Flink Source API的重构,Flink CDC也基于FLIP-27升级到了新的框架设计,至此,Flink CDC被大规模公司使用并投入到生产中。

Flink CDC 2.0 正式发布,详解核心改进-阿里云开发者社区

Flink CDC 3.x

流计算迎来代际变革:流式湖仓 Flink + Paimon 加速落地、Flink CDC 重磅升级_大数据_Apache Flink_InfoQ写作社区