Flink CDC 3.0 简介
所属分类 flink
浏览量 298
Flink CDC 是基于数据库日志 CDC(Change Data Capture)技术的实时数据集成框架,
支持全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等高级特性。
2023 年 12 月 7 日
社区首先支持实时同步 MySQL 数据至 Apache Doris 和 StarRocks 两条链路。
实现 schema 变更自动同步、整库同步、分库分表等场景的高性能同步
用户无需在数据源发生 schema 变更时手动介入,大大降低用户的运维成本;
只需对同步任务进行简单配置即可将多表、多库同步至下游,并进行合并等逻辑,降低用户的开发难度与入门门槛。
FlinkCDC 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 变更、路由、变换等高级功能
使用 YAML 格式描述数据来源与目标端即可快速构建一个数据同步任务
外部系统对接 Flink CDC 3.0 数据同步流水线,Flink CDC 3.0 定义了 Pipeline Connector API
DataSource
由负责构建 Flink Source 的 EventSourceProvider 和 提供元信息读取能力的 MetadataAccessor 组成。
DataSource 从外部系统中读取变更事件 Event,并传递给下游算子。
DataSink
由负责构建 Flink Sink 的 EventSinkProvider 和 提供对目标端元信息修改能力的 MetadataApplier 构成。
DataSink 将上游算子传递来的变更事件 Event 写出至外部系统,
MetadataApplier 负责处理上游的 schema 变更信息并应用至外部系统,实现 schema 变更的实时处理
Schema Evolution 设计
Flink CDC 3.0 在作业拓扑中引入了 SchemaRegistry,结合 SchemaOperator 协调并控制作业拓扑中的 schema 变更事件处理。
当上游数据源发生 schema 变更时,SchemaRegistry 会控制 SchemaOperator 以暂停数据流,并将流水线中的数据从 sink 全部刷出以保证 schema 一致性。
当 schema 变更事件在外部系统处理成功后,SchemaOperator 恢复数据流,完成本次 schema 变更的处理。
整库同步设计
在配置文件中指定 DataSource
同步任务捕获上游多表或整库变更,结合 Schema Evolution 的设计,
SchemaRegistry 在读取到新表的数据后,自动在目标端外部系统建表,实现自动化的数据整库同步。
分库分表同步设计
在数据同步中,一个常见的使用场景是将上游由于业务或数据库性能问题而拆分的多表在下游系统合并为一张表。
Flink CDC 3.0 使用路由(Route)机制实现分库分表合并的能力。
在配置文件中定义 route 规则使用正则表达式匹配多张上游表,并将其指向同一张目标表,实现分库分表数据的归并。
高性能数据结构设计
降低数据在 Flink 作业中流转时产生的额外序列化开销
变更数据与 Schema 信息的分离
在发送变更数据前,source 先发送 schema 信息对其进行描述并由框架追踪,
因此 schema 信息无需绑定在每条变更数据之上,降低了在宽表场景下 schema 信息的序列化成本。
二进制存储格式
数据在同步过程中使用二进制存储,并只在需要读取某个字段的详细数据时(如按主键进行分区)再进行反序列化,进一步降低序列化成本。
上一篇
下一篇
物联网六大核心技术
springboot异步处理 @Async 注解
JDK 和 openJDK 区别
Skywalking简介
H2 web console
杭州市内游玩交通