Flink CDC + Kafka 加速业务实时化

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink CDC 是一种支持流批一体的分布式数据集成工具,通过 YAML 配置实现数据传输过程中的路由与转换操作。它已从单一数据源的 CDC 数据流发展为完整的数据同步解决方案,支持 MySQL、Kafka 等多种数据源和目标端(如 Delta Lake、Iceberg)。其核心功能包括多样化数据输入链路、Schema Evolution、Transform 和 Routing 模块,以及丰富的监控指标。相比传统 SQL 和 DataStream 作业,Flink CDC 提供更灵活的 Schema 变更控制和原始 binlog 同步能力。

一、Flink CDC 简介

CDC(Change Data Capture)是一种用于捕获数据库变更的技术。通常所说的 CDC 主要面向数据库的数据变化,是一种用于捕捉数据库变更事件的技术。

Flink CDC 经过多轮迭代,已经不再局限于 MySQL 或其他单一数据源的 CDC 数据流,目前已发展为一种支持流批一体的分布式数据集成工具。它通过 YAML 配置描述数据传输过程中的路由、转换等数据集成操作。在最新版阿里云实时计算服务中,已完整集成开源 Flink CDC 的全部功能。

FlinkCDC专注于提供数据开发中的数据摄入能力,支持用户通过 YAML 配置文件完成完整的数据集成任务。采用 YAML 配置方式降低了使用门槛,同时FlinkCDC也预设了一些常用模板供用户选择。

FlinkCDC的最新数据摄入功能已升级至 Flink CDC 3.4 版本,包含 3.4 的核心能力增强、数据集成工具改进以及整体功能体系的增强。预计将在五月底发布,欢迎大家关注。


二、Flink CDC EMO 核心能力

1. 多样化的数据输入链路支持

在数据输入环节,FlinkCDC支持多种常见的入湖入仓链路,例如 MySQL 到 Delta Lake、Iceberg 等同步链路。这些同步链路所依赖的连接器均由系统自动识别并添加到作业中,用户无需手动管理。

此外,数据输入功能还帮助用户管理整个 CDC EMO 作业的生命周期,包括启动、停止、重启等操作。同时FlinkCDC提供了版本管理的便捷功能,如版本回滚等。

为了满足用户对监控的需求,FlinkCDC 还提供了丰富的数据同步作业指标。目前最新版本已于四月份上线,支持将现有的 CTS 作业迁移为 YAML 作业。新建 YAML 作业时,开发者可以通过现有 CTS 或 CTAS 作业快速生成数据摄入的 YAML 作业,无需手动转换。

2. 支持的数据同步链路

目前 CDC EMO 数据摄入功能支持的 SaaS 端同步链路中,除广泛使用的 MySQL 外,FlinkCDC还支持 Kafka 链路。该链路主要用于同步原始 binlog 数据,用户可将 binlog 数据同步至 Kafka,再通过 Kafka 同步到其他目的端。

同时,CDC EMO 还支持 Schema Evolution 和 Schema 变更控制,具备整库同步能力,能够将数据变更同步到下游系统当中。FlinkCDC计划于五月底发布新版本,新增对 SQL Server 数据源的支持,并实现从 SQL Server 到 Delta Lake 的 Schema Evolution,以简化整体湖仓场景中原数据管理的复杂度。

当前下游目标端主要包括 Delta Lake、Iceberg、Hologres 和 Kafka。

对于 Kafka,FlinkCDC目前支持两种同步方式:

  • 一种是通过实时表 Flink Upsert Kafka 连接器直接读取数据;
  • 另一种是将原始 binlog 日志同步至 Kafka 并进行存储,供后续处理使用。

新版本中还将新增 Mass Compute Sink 功能,支持 TB 级以上的大规模数据写入,适用于离线数据处理与大数据存储场景。此外,FlinkCDC将新增对 SelectDB 和 Apache Doris 的支持,完善整体数据同步链路的目标存储适配能力。

3. Transform 与 Routing 模块

Flink CDC EMO 还具备额外的功能模块,可在数据同步过程中执行额外计算处理。

Transform 模块

  • 可添加计算列,根据已有字段生成新的列;
  • 支持在读取过程中添加元数据列,如操作类型、表名或数据库名;
  • 提供丰富的内置函数,并支持用户自定义 UDF;
  • 兼容 SQL 作业中的 Flink Scalar Function,用户可在 Transform 中无缝使用;
  • 支持重新指定下游组件或分区键,应对写入目标表时的额外依赖;
  • 支持数据过滤,清理不必要的数据。

Routing 模块

  • 支持上下游之间的映射关系配置;
  • 在整库同步场景中,可将上游一张表一对一同步至下游一张表;
  • 在分库分表场景中,可通过 Routing 模块将多个库中的多张表同步至目标端同一张表;
  • 支持批量定义下游 Sink 表名,例如统一添加版本前缀等。

4. 数据同步进度与状态监控

FlinkCDC提供了一系列关键指标,帮助用户全面掌握数据同步进度及相关信息。FlinkCDC支持全量与增量一体化同步,在同步阶段,Flink CDC 会将每个表切分为多个分片进行处理。

FlinkCDC提供的指标可用于判断当前处于全量同步阶段还是增量同步阶段,并按表提供以下信息:

  • 已处理/未处理分片数;
  • 已处理/未处理表数;
  • 数据条数统计(全量阶段 / 总计);
  • 最新读取时间戳;
  • 延迟指标。

此外FlinkCDC还提供更丰富的功能,如细粒度的 Schema 变更策略。

在数据同步过程中,为了避免在下游执行潜在危险操作(如 drop table),FlinkCDC提供了更细粒度的表变更序列控制,允许用户进行过滤和跳过。此外,FlinkCDC还支持变更的宽容模式,支持更多类型的变更操作。FlinkCDC还支持原始 binlog 数据同步,以满足用户的多样化开发需求。

5. 与 SQL/CTAS 对比优势

相较于传统的 SQL 作业开发方式,FlinkCDC对 CCM 开发方式进行了对比分析:

特性

SQL/CTAS

Flink CDC EMO

Schema Evolution 支持

Binlog 原始格式保留

多表同步支持

细粒度变更控制

传统 SQL 作业无法支持 Schema Evolution,需要预先定义 schema,且作业启动后无法更改,限制了灵活性。此外,SQL 依赖 row data 传递数据,会破坏 binlog 原始格式。例如将 update 数据拆分为 update before 和 update after 两条记录,导致 SQL 作业无法支持原始 binlog 同步。此外,SQL 方式通常仅支持单表读写,而 CDC EMO 是专为数据同步设计的工具,支持自动同步 schema 变更,并提供细粒度的 schema 变更控制。更重要的是,CDC EMO 在传递内容时保留了原始 change log 格式,包含 data change event 和 schema change event。同时,schema 压缩还支持多表读写功能。

对于熟悉 Flink 的用户而言,SQL 提供的 CTS 和 CTAS 语法可用于数据同步。但由于 CTS/CTAS 基于 SQL API,依赖 raw data 格式传递数据,无法完成原始表结构的同步。此外,schema 变更需等待新数据到达才会触发同步,且 CTS/CTAS 会破坏原有的 change log 结构,无法实现原始 change 同步。而在 CDC EMO 中,FlinkCDC支持更多类型的 schema 变更,如 job table 等,支持原始 binlog 同步,并提供更细粒度的 schema 变更策略。通过 Routing 模块可灵活定义目标表名称。此外,YAML 配置支持数据过滤功能,以及通过 Transform 模块裁剪字段,去除冗余数据。

6. 与 DataStream 作业对比优势

DataStream 作业的主要挑战在于用户需深入了解 Java 编程语言和分布式系统原理,包括框架机制及相关技术。此外,用户还需自行管理依赖项,熟悉相关构建工具,且 DataStream 代码复用性较差。

相比之下,CDC EMO 在多个方面展现出显著优势,尤其适合初级用户。CDC EMO 隐藏了底层细节,使开发更为简洁。采用 YAML 格式不仅易于开发,也易于理解。更重要的是,CDC EMO 的作业配置清晰明了,极大提升了配置的复用性。


三、典型应用场景:整库同步至 Kafka

在许多业务场景中,Flink CDC 与 Kafka 的结合成为一种高效的数据流传输和实时业务加速方案。

当多个作业依赖于 MySQL 的同一张表时,频繁建立数据库连接会导致数据库压力过大。通过整库同步后,Upsert Kafka 表可作为原表替代读取,有效减轻系统压力。

示例配置流程:

  1. 定义 MySQL 数据源;
  2. 在 EMO 端配置数据连接信息;
  3. 在整库同步至 Kafka 时,可通过 Routing 模块定义下游 topic 名称;
  4. 若未特别指定,默认 topic 名称将使用数据库名加表名组合而成。

除了将整张表的数据同步至 Upsert Kafka 外,还有一种场景是用户希望将完整的变更信息(即 binlog 原始内容)进行存储。这一功能在 CTS 或 CTAS 中无法实现,但在 CDC YAML 中得到了支持。

如果用户需要将 binlog 原始数据同步至 Kafka,可按如下方式配置:

  • 首先定义 MySQL 的连接信息;
  • 若用户需要记录操作时间戳等元数据信息,可额外添加 metadata 列;
  • 系统将在对应的 topic 中自动添加该列。

目前FlinkCDC支持 Debezium JSON 和 Default JSON 两种变更格式,默认使用 Default JSON 类型。由于 update 操作格式较为复杂,图中展示的是 update 格式,包含 before 和 after 内容、操作类型及来源信息。


四、实战 DEMO 演示

本次 DEMO 演示将展示整库同步 binlog 至 Kafka 的全过程,具体演示请观看视频:https://developer.aliyun.com/live/255088

首先可以看到FlinkCDC选择了三张表进行数据同步。共有 93 张表,共九条数据参与同步。通过 Routing 模块指定了 topic 名称。

在部署整库同步作业后,可以看到作业已成功启动。检查监控告警发现,目前已完成从全量到增量的切换。全量阶段每张表三条数据,共计九条已完成同步。

接下来FlinkCDC查看 Kafka,可见三个 topic 已成功创建。查询具体表数据时,FlinkCDC选择较早的时间点进行检索。此处FlinkCDC使用默认的 Debezium JSON 格式保留数据。在 customer 表中FlinkCDC进行了 schema 变更、插入新数据、删除及更新操作。

继续查询 Kafka 数据,可见数据已正常同步。

FlinkCDC还执行了数据更新、删除和修改操作,并验证其同步情况。

最后FlinkCDC在 customer 表中新增了一列,并再次验证数据是否同步成功。


五、Flink CDC 整体数据同步方案

目前阿里云基于 Flink CDC 提供了一套完整的数据同步解决方案。相较于传统数据集成流水线,Flink CDC 提供了全量与增量一体化的同步方案。

对于一个同步任务,只需一个 Flink 作业即可将上游的全量与增量数据一致同步至下游系统。此外,FlinkCDC采用了增量快照算法,用户无需额外配置即可实现全量与增量数据的无缝切换。感兴趣的用户可通过阿里云平台体验 Flink CDC 的整体数据同步功能。


六、未来规划方向

  1. 增强数据处理能力
  • 整合数据处理与采集能力,提升异常数据处理效率。
  1. 引入限流机制
  • 控制同步速度,避免影响线上业务。
  1. 日志并行解析优化
  • 支持 MongoDB、PolarDB 等高性能日志拉取。
  1. AI 能力集成
  • 内置 AI Model,实现数据分类、实体识别、特征提取等高级处理。
  1. 扩展上下游生态
  • 支持 Iceberg、PostgreSQL、Flink Flusher 等更多组件。
相关文章
|
1月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
211 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
1月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
|
27天前
|
数据采集 SQL canal
Amoro + Flink CDC 数据融合入湖新体验
本文总结了货拉拉高级大数据开发工程师陈政羽在Flink Forward Asia 2024上的分享,聚焦Flink CDC在货拉拉的应用与优化。内容涵盖CDC应用现状、数据入湖新体验、入湖优化及未来规划。文中详细分析了CDC在多业务场景中的实践,包括数据采集平台化、稳定性建设,以及面临的文件碎片化、Schema演进等挑战。同时介绍了基于Apache Amoro的湖仓融合架构,通过自优化服务解决小文件问题,提升数据新鲜度与读写平衡。未来将深化Paimon与Amoro的结合,打造更高效的入湖生态与自动化优化方案。
116 1
Amoro + Flink CDC 数据融合入湖新体验
|
1月前
|
SQL 关系型数据库 MySQL
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
Apache Flink CDC 3.4.0 版本正式发布!经过4个月的开发,此版本强化了对高频表结构变更的支持,新增 batch 执行模式和 Apache Iceberg Sink 连接器,可将数据库数据全增量实时写入 Iceberg 数据湖。51位贡献者完成了259次代码提交,优化了 MySQL、MongoDB 等连接器,并修复多个缺陷。未来 3.5 版本将聚焦脏数据处理、数据限流等能力及 AI 生态对接。欢迎下载体验并提出反馈!
277 1
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
|
2月前
|
SQL API Apache
Dinky 和 Flink CDC 在实时整库同步的探索之路
本次分享围绕 Dinky 的整库同步技术演进,从传统数据集成方案的痛点出发,探讨了 Flink CDC Yaml 作业的探索历程。内容分为三个部分:起源、探索、未来。在起源部分,分析了传统数据集成方案中全量与增量割裂、时效性低等问题,引出 Flink CDC 的优势;探索部分详细对比了 Dinky CDC Source 和 Flink CDC Pipeline 的架构与能力,深入讲解了 YAML 作业的细节,如模式演变、数据转换等;未来部分则展望了 Dinky 对 Flink CDC 的支持与优化方向,包括 Pipeline 转换功能、Transform 扩展及实时湖仓治理等。
449 12
Dinky 和 Flink CDC 在实时整库同步的探索之路
|
3月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
3月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
539 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
3月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
386 1
Flink CDC + Hologres高性能数据同步优化实践
|
5月前
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
8月前
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
302 1