Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
实时计算 Flink 版,5000CU*H 3个月
简介: Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架

01

Flink CDC 概述


Flink CDC 是基于数据库日志 CDC(Change Data Capture)技术的实时数据集成框架,支持了全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等高级特性。配合 Flink 优秀的管道能力和丰富的上下游生态,Flink CDC 可以高效实现海量数据的实时集成。Flink CDC 社区发展迅速,在开源的三年时间里,社区已经吸引了 111 位贡献者,培养了 8 位 Maintainer,社区钉钉用户群超过 9800 人。


在社区用户与开发者的共同努力下,Flink CDC 于 2023 年 12 月 7 日重磅推出了其全新的 3.0 版本 [1] ,3.0 版本的发布对 Flink CDC 而言具有里程碑式的意义,自此 Flink CDC 从捕获数据变更的 Flink 数据源正式迈向为以 Flink 为基础的端到端流式 ELT 数据集成框架。在该版本中,社区首先支持实时同步 MySQL 数据至 Apache Doris [2] StarRocks[3] 两条链路。


02

Flink CDC 3.0 设计动机


2.1 Flink CDC 与数据同步面临的挑战


虽然 Flink CDC 有很多技术优势,社区用户增长很快,但随着 Flink CDC 项目用户基数的日益增长,以及应用场景的不断扩大,社区收到了很多用户反馈:

  • 用户体验:只提供 Flink source,不支持端到端数据集成, SQL 和 DS API 构建作业流程复杂
  • 维护频繁:上游数据库表结构变更非常常见 ,增加、删除表的业务需求普遍存在
  • 扩展性:全量和增量阶段资源难以灵活扩缩容 ,千表同步、万表入湖入仓资源消耗大
  • 中立性:项目使用
    Apache License V2 协议,不属于 Apache Flink
    ,版权归属Alibaba (Ververica)


针对这些反馈,社区的 Maintainer 也在思考在 Flink CDC 的不足,思考 CDC 乃至数据集成领域面临的技术挑战:

  • 历史数据规模大:数据库的历史数据规模大,100T+ 规模很常见
  • 增量数据实时性要求高:数据库的增量数据业务价值高,且价值随时间递减,需要实时处理
  • 数据的保序性:CDC 数据的加工结果通常需要强一致性语义,需要处理工具支持全局保序
  • 表结构动态变化:增量数据随时间增长,数据对应的表结构会不断演进


在梳理这些问题时,我们也在思考,能否在 Flink CDC 项目中帮助用户解决这些技术挑战?能否为用户打磨一款面向 CDC 和海量数据集成的开源产品?


2.2 Flink CDC 3.0 定位


针对这些想法,我们在 Flink CDC 社区里面与 Maintainer 一起展开了多轮讨论和设计。最终,面向数据集成用户、面向端到端实时数据集成的框架 Flink CDC 3.0 应运而生。在产品设计上我们追求简洁,秉持以下原则和目标进行设计:

  • 端到端体验:Flink CDC 3.0 定位为端到端的数据集成框架,API 设计直接面向数据集成场景,帮助用户轻松构建同步作业
  • 自动化:上游 schema 变更自动同步到下游,已有作业支持动态加表
  • 极致扩展:空闲资源自动回收,一个 sink 实例支持写入多表
  • 推动捐赠:推动 Flink CDC 成为 Apache Flink 的子项目,版权属于中立的 Apache 基金会,吸引更多的公司和开发者参与。



03

Flink CDC 3.0 整体设计


3.1 Flink CDC 3.0 架构


Flink CDC 3.0 的整体架构自顶而下分为 4 层:

  • Flink CDC API:面向终端用户的 API 层,用户使用 YAML 格式配置数据同步流水线,使用 Flink CDC CLI 提交任务
  • Flink CDC Connect:对接外部系统的连接器层,通过对 Flink 与现有 Flink CDC source 进行封装实现对外部系统同步数据的读取和写入
  • Flink CDC Composer:同步任务的构建层,将用户的同步任务翻译为 Flink DataStream 作业
  • Flink CDC Runtime:运行时层,根据数据同步场景高度定制 Flink 算子,实现 schema 变更、路由、变换等高级功能



3.2 面向数据集成用户的 API 设计


Flink CDC 3.0 的用户 API 设计专注于数据集成场景,用户无需关注框架实现,只需使用 YAML 格式描述数据来源与目标端即可快速构建一个数据同步任务。以从 MySQL 同步数据至 Apache Doris 为例:

3.3 Pipeline Connector API 设计


为了更好地将外部系统对接至 Flink CDC 3.0 的数据同步流水线,Flink CDC 3.0 定义了 Pipeline Connector API:



  • DataSource:Flink CDC 3.0 的数据源,由负责构建 Flink Source 的 EventSourceProvider 和提供元信息读取能力的 MetadataAccessor 组成。DataSource 从外部系统中读取变更事件 Event,并传递给下游算子。
  • DataSink:Flink CDC 3.0 的数据目标端,由负责构建 Flink Sink 的 EventSinkProvider 和提供对目标端元信息修改能力的 MetadataApplier 构成。DataSink 将上游算子传递来的变更事件 Event 写出至外部系统,MetadataApplier 负责处理上游的 schema 变更信息并应用至外部系统,实现 schema 变更的实时处理。


为尽可能对接 Flink 现有的生态系统,DataSource 和 DataSink 在设计上复用 Flink Source 和 Sink,开发者可以快速基于 Flink connector 对接 Flink CDC 3.0 框架,将外部系统高效地接入 Flink CDC 的上下游生态。在接下来的 Flink CDC 3.1 版本中,社区计划对接 Paimon、Iceberg、Kafka、MongoDB 等外部系统,从而进一步扩大 Flink CDC 的生态与使用场景。


3.4 Flink CDC 3.0 核心设计解析


为了实现 schema 变更、整库同步、分库分表等用户场景的高性能同步,得益于 Flink CDC 社区贡献者对 Apache Flink 项目的深度理解(Flink CDC 项目核心贡献者包含多名 Flink PMC 成员和 Flink Committer),Flink CDC 3.0 不仅在实现上巧妙利用 Apache Flink 提供的各种能力,还通过定制化 Flink 算子等方式实现了各种同步模式的支持。


3.4.1 Schema Evolution 设计


Schema 变更处理是上游数据库中十分常见的用户场景,也是数据同步框架实现的难点。针对该场景,Flink CDC 3.0 在作业拓扑中引入了 SchemaRegistry,结合 SchemaOperator 协调并控制作业拓扑中的 schema 变更事件处理。


当上游数据源发生 schema 变更时,SchemaRegistry 会控制 SchemaOperator 以暂停数据流,并将流水线中的数据从 sink 全部刷出以保证 schema 一致性。当 schema 变更事件在外部系统处理成功后,SchemaOperator 恢复数据流,完成本次 schema 变更的处理。



3.4.2 整库同步设计


用户可以在 Flink CDC 3.0 的配置文件中指定 DataSource 同步任务捕获上游多表或整库变更,结合 Schema Evolution 的设计,SchemaRegistry 会在读取到新表的数据后,自动在目标端外部系统建表,实现自动化的数据整库同步。



3.4.3 分库分表同步设计


在数据同步中,一个常见的使用场景是将上游由于业务或数据库性能问题而拆分的多表在下游系统合并为一张表。Flink CDC 3.0 使用路由(Route)机制实现分库分表合并的能力。用户可以在配置文件中定义 route 规则使用正则表达式匹配多张上游表,并将其指向同一张目标表,实现分库分表数据的归并。



3.4.4 高性能数据结构设计


为了降低数据在 Flink 作业中流转时产生的额外序列化开销,Flink CDC 3.0 设计了一套高性能数据结构:

  • 变更数据与 Schema 信息的分离:在发送变更数据前,source 先发送 schema 信息对其进行描述并由框架追踪,因此 schema 信息无需绑定在每条变更数据之上,大大降低了在宽表场景下 schema 信息的序列化成本。
  • 二进制存储格式:数据在同步过程中使用二进制存储,并只在需要读取某个字段的详细数据时(如按主键进行分区)再进行反序列化,进一步降低序列化成本。



正是这些核心设计使得 Flink CDC 具备了优秀的端到端数据集成能力,为用户提供了 schema evolution、整库同步、分库分表同步等开箱即用能力,高效的数据结构设计让数据集成作业可以获得更好的性能优势。


总体来说,Flink CDC 3.0 不仅提供基础的数据同步能力,schema 变更自动同步、整库同步、分库分表等增强功能使 Flink CDC 3.0 在更复杂的数据集成与用户业务场景中发挥作用:用户无需在数据源发生 schema 变更时手动介入,大大降低用户的运维成本;只需对同步任务进行简单配置即可将多表、多库同步至下游,并进行合并等逻辑,显著降低用户的开发难度与入门门槛。


04

快速上手 Flink CDC 3.0


保持之前社区一贯的优秀习惯,Flink CDC 社区提供了详细的用户文档,包括CDC 3.0 架构和核心概念介绍 [4],同时提供了 MySQL 同步至 Apache Doris [5]MySQL 同步至 StarRocks [6] 的快速上手教程帮助用户快速体验。社区也提供了 demo,用户可以通过以下 demo 了解 Flink CDC 3.0 的极简开发体验:


【DEMO 视频】

,时长05:49

05

致谢


感谢 Flink CDC 用户对社区的反馈和信赖,特别感谢 Apache Doris [2]StarRocks [3] 社区和开发者对 Flink CDC 3.0 版本的支持,由衷感谢为 Flink CDC 3.0 版本贡献的每一位开发者,贡献者列表如下(按字母排序):BIN, Dian Qi, EchoLee5, FlechazoW, FocusComputing, Hang Ruan, He Wang, Hongshun Wang, Jiabao Sun, Josh Mahonin, Kunni, Leonard Xu, Maciej Bryński, Malcolmjian, North.Lin, Paddy Gu, PengFei Li, Qingsheng Ren, Shawn Huang, Simonas Gelazevicius, Sting, Tyrantlucifer, TJX2014, Xin Gong, baxinyu, chenlei677, e-mhui, empcl, gongzhongqiang, gaotingkai, ice, joyCurry30, l568288g, lvyanquan, pgm-rookie, rookiegao, skylines, syyfffy, van, wudi, wuzhenhua, yunqingmo, yuxiqian, zhaomin, zyi728, zhangjian


Flink CDC 项目由阿里巴巴旗下的 Ververica 公司使用 Apache License V2 协议开源,项目版权属于 Ververica。目前阿里巴巴和 Flink CDC 社区已经发起了将 Flink CDC 项目捐赠给 Apache Flink 社区的讨论 [7],捐赠完成之后,Flink CDC 项目的版权将会属于中立的 Apache 基金会, Flink CDC 也能与 Apache Flink 进行更深度的集成,在为用户提供更好的实时数据集成体验的同时扩展 Apache Flink 的社区生态,感兴趣的开发者可以关注 Flink 社区的讨论邮件。



参考


[1] Flink CDC 3.0 release notes:

https://github.com/ververica/flink-cdc-connectors/releases/tag/release-3.0.0

[2] Apache Doris:

https://doris.apache.org/

[3] StarRocks:

https://www.starrocks.io/

[4] CDC 3.0 架构和核心概念介绍:

https://ververica.github.io/flink-cdc-connectors/release-3.0/content/overview/cdc-pipeline.html

[5] MySQL 同步至 Apache Doris:

https://ververica.github.io/flink-cdc-connectors/release-3.0/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/mysql-doris-pipeline-tutorial-zh.html

[6] MySQL 同步至 StarRocks:

https://ververica.github.io/flink-cdc-connectors/release-3.0/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/mysql-starrocks-pipeline-tutorial-zh.html

[7] 将 Flink CDC 项目捐赠给 Apache Flink 社区的讨论:

https://lists.apache.org/thread/o7klnbsotmmql999bnwmdgo56b6kxx9l


相关文章
|
9天前
|
算法 API Apache
Flink CDC:新一代实时数据集成框架
本文源自阿里云实时计算团队 Apache Flink Committer 任庆盛在 Apache Asia CommunityOverCode 2024 的分享,涵盖 Flink CDC 的概念、版本历程、内部实现及社区未来规划。Flink CDC 是一种基于数据库日志的 CDC 技术实现的数据集成框架,能高效完成全量和增量数据的实时同步。自 2020 年以来,Flink CDC 经过多次迭代,已成为功能强大的实时数据集成工具,支持多种数据库和数据湖仓系统。未来将进一步扩展生态并提升稳定性。
259 1
Flink CDC:新一代实时数据集成框架
|
1月前
|
消息中间件 canal 数据采集
Flink CDC 在货拉拉的落地与实践
陈政羽在Apache Asia Community Over Code 2024上分享了《货拉拉在Flink CDC生产实践落地》。文章介绍了货拉拉业务背景、技术选型及其在实时数据采集中的挑战与解决方案,详细阐述了Flink CDC的技术优势及在稳定性、兼容性等方面的应用成果。通过实际案例展示了Flink CDC在提升数据采集效率、降低延迟等方面的显著成效,并展望了未来发展方向。
435 14
Flink CDC 在货拉拉的落地与实践
|
2月前
|
Oracle 关系型数据库 新能源
Flink CDC 在新能源制造业的实践
本文撰写自某新能源企业的研发工程师 单葛尧 老师。本文详细介绍该新能源企业的大数据平台中 CDC 技术架构选型和 Flink CDC 的最佳实践。
395 13
Flink CDC 在新能源制造业的实践
|
11天前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
3月前
|
存储 监控 大数据
阿里云实时计算Flink在多行业的应用和实践
本文整理自 Flink Forward Asia 2023 中闭门会的分享。主要分享实时计算在各行业的应用实践,对回归实时计算的重点场景进行介绍以及企业如何使用实时计算技术,并且提供一些在技术架构上的参考建议。
731 7
阿里云实时计算Flink在多行业的应用和实践
|
2月前
|
SQL 消息中间件 Kafka
实时计算 Flink版产品使用问题之如何在EMR-Flink的Flink SOL中针对source表单独设置并行度
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
12天前
|
存储 运维 监控
阿里云实时计算Flink版的评测
阿里云实时计算Flink版的评测
44 15
|
11天前
|
运维 分布式计算 监控
评测报告:阿里云实时计算Flink版
本评测主要针对阿里云实时计算Flink版在用户行为分析中的应用。作为一名数据分析师,我利用该服务处理了大量日志数据,包括用户点击流和登录行为。Flink的强大实时处理能力让我能够迅速洞察用户行为变化,及时调整营销策略。此外,其卓越的性能和稳定性显著降低了运维负担,提升了项目效率。产品文档详尽且易于理解,但建议增加故障排查示例。
|
11天前
|
机器学习/深度学习 运维 监控
阿里云实时计算Flink版体验评测
阿里云实时计算Flink版提供了完善的产品内引导和丰富文档,使初学者也能快速上手。产品界面引导清晰,内置模板简化了流处理任务。官方文档全面,涵盖配置、开发、调优等内容。此外,该产品在数据开发和运维方面表现优秀,支持灵活的作业开发和自动化运维。未来可增强复杂事件处理、实时可视化展示及机器学习支持,进一步提升用户体验。作为阿里云大数据体系的一部分,它能与DataWorks、MaxCompute等产品无缝联动,构建完整的实时数据处理平台。
|
2月前
|
消息中间件 监控 Kafka
联通实时计算平台问题之Flink状态后端数据量较大时,问题排查要如何进行
联通实时计算平台问题之Flink状态后端数据量较大时,问题排查要如何进行
下一篇
无影云桌面