80. 超哥分享Flink CDC(一)

CDC技术 Flink CDC框架 实时数据处理 数据同步 流计算
CDC(Change Data Capture)是一种用于跟踪数据库中数据更改的技术,能够捕获插入、更新和删除等操作,并将这些变化实时同步到其他系统或数据仓库。Flink CDC 是一个开源的数据库变更日志捕获和处理框架,能够从多种数据库中实时捕获数据变更并将其转换为流式数据,广泛应用于数据同步、实时分析和数据管道等场景。Flink CDC 1.x 版本首次引入了 Debezium 框架,但存在全增量切换时加锁和功能不完善等问题,限制了其生产应用。2.x 版本通过引入无锁算法和基于 FLIP-27 的框架重构,解决了业务停滞问题,使其能够大规模应用于生产环境。3.x 版本则进一步推动了流式湖仓等新技术的落地,标志着流计算领域的代际变革。
文章内容
思维导图
常见问题
社交分享

什么是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写作社区

思维导图生成中,请稍候...

问题 1: 什么是CDC?
回答: CDC(Change Data Capture)是一种用于跟踪数据库中数据更改的技术,它可以捕获插入、更新和删除等数据变化,并将这些变化同步到其他系统或平台。

问题 2: Flink CDC是什么?
回答: Flink CDC是一个开源的数据库变更日志捕获和处理框架,它能够实时从多种数据库中捕获数据变更,并将其转换为流式数据,用于数据同步、实时分析等场景。

问题 3: Flink CDC的底层实现基于什么技术?
回答: Flink CDC的底层实现基于Debezium框架,利用其能力将数据库实时变更接入到Flink流计算框架中。

问题 4: Flink CDC 1.x版本有哪些局限性?
回答: Flink CDC 1.x版本在全增量切换时会对表加锁,导致业务暂停,且功能不够完善,如缺乏自动加表和DDL事件传递等功能。

问题 5: Flink CDC 2.x版本有哪些改进?
回答: Flink CDC 2.x版本引入了无锁算法,解决了全增量切换时的业务停滞问题,并基于FLIP-27对Flink Source API进行了重构,使其更适合大规模生产使用。

问题 6: Flink CDC 3.x版本的主要特点是什么?
回答: Flink CDC 3.x版本进一步升级,支持流式湖仓架构,结合Flink和Paimon技术,加速了流计算的代际变革。

问题 7: Flink CDC可以应用于哪些场景?
回答: Flink CDC可以应用于数据同步、数据管道、实时分析和实时应用等场景,帮助实时处理和分析流数据。

问题 8: Flink CDC支持哪些数据库?
回答: Flink CDC支持多种数据库,包括MySQL、PostgreSQL、Oracle、MongoDB等。

问题 9: Flink CDC的开源项目在哪里可以找到?
回答: Flink CDC的开源项目可以在GitHub上找到,地址为:https://github.com/ververica/flink-cdc-connectors