Flink CDC

CDC(Change Data Capture):这是一种技术,用于捕获数据库中的数据变更(例如插入、更新、删除操作),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。CDC通常是通过轮询数据库事务日志或使用数据库特定的触发器来实现的。

Flink CDC(Apache Flink Change Data Capture):Flink是一个流处理引擎,Flink CDC是指利用Apache Flink框架来实现数据变更捕获的技术(即用Apache Flink这个流处理框架来实现CDC的技术)。FlinkCDC是一个开源的数据库变更日志捕获和处理框架,它可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB等)中捕获数据变更并将其转换为流式数据,FlinkCDC 可以帮助实时应用程序实时地处理和分析这些流数据,从而实现数据同步、数据管道、实时分析和实时应用等功能。它可以实时地捕获数据源中的变更,并将这些变更推送到目标系统或进行实时分析处理。Flink 社区开发了 flink-cdc-connectors 组件,这是一个可以直接从 MySQL、PostgreSQl等数据库直接读取全量数据和增量变更数据的source 组件。开源地址:https://github.com/ververica/flink-cdc-connectors

主要区别:在于实现的方式和技术栈。CDC是一种通用的数据管理技术,而Flink CDC是特定利用Apache Flink框架实现的数据变更捕获技术。 Flink CDC提供了更高级的功能,如实时处理和流式数据分析,适用于需要处理大规模实时数据的场景。

二.CDC实现方式:

  1. 基于触发器的CDC:在表上创建触发器,当数据发生更改时,触发器会将更改的数据记录到其他系统或表中。
  2. 基于事务日志的CDC:通过读取数据库事务日志,将日志中的更改记录解析为可操作的数据。这种方法通常用于增量备份和恢复。
  3. 基于游标的CDC:在数据库中使用游标,逐行处理数据更改,并将这些更改应用于其他系统或表。
  4. 基于时间戳的CDC:为表中的每个数据行分配一个时间戳,当数据发生更改时,更新相应的时间戳。然后,可以使用时间戳来识别和处理数据更改。
  5. 基于消息队列的CDC:将数据更改作为事件发送到消息队列,以便其他系统或应用程序可以订阅和处理这些事件。

CDC主要分为基于查询 和基于Binlog 两种方式:

三.CDC原理与机制:

复制代码
	Debezium 和 Canal 是目前最流行使用的 CDC 工具,这些 CDC 工具的核心原理是抽取数据库日志获取变更。目前 Debezium (支持全量、增量同步,同时支持 MySQL、PostgreSQL、Oracle 等数据库),使用较为广泛。Flink SQL CDC 内置了 Debezium 引擎,利用其抽取日志获取变更的能力,将changelog 转换为 Flink SQL 认识的 RowData 数据。Debezium的数据格式如下:

通过 Debezium 采集的数据,包含了旧数据(before)和新数据行(after)以及原数据信息(source),op 的 u 表示是update 更新操作标识符(op 字段的值 c,u,d,r 分别对应 create,update,delete,reade),ts_ms 表示同步的时间戳。

四. Flink CDC 主要特点:

  1. 支持多种数据库类型:Flink CDC 支持多种数据库,如 MySQL、PostgreSQL、Oracle、MongoDB 等。
  2. 实时数据捕获:Flink CDC 能够实时捕获数据库中的数据变更,并将其转换为流式数据。
  3. 高性能:Flink CDC 基于 Flink 引擎,具有高性能的数据处理能力。
  4. 低延迟:Flink CDC 可以在毫秒级的延迟下处理大量的数据变更。
  5. 易集成:Flink CDC 与 Flink 生态系统紧密集成,可以方便地与其他 Flink 应用程序一起使用。
  6. 高可用性:Flink CDC 支持实时备份和恢复,确保数据的高可用性。

其他常见的开源CDC方案:

开源地址:https://github.com/ververica/flink-cdc-connectors

相关推荐
starzy199020 小时前
Flink 提交任务源码深度剖析:从CliFrontend到JobMaster的完整提交链路
大数据·flink
starzy19902 天前
Flink Rpc通信源码级详解:从RpcService到动态代理的完整调用链路
大数据·rpc·flink
starzy19903 天前
Flink Akka底层原理深度剖析:从ActorSystem到Dispatcher调度器的底层实现
大数据·flink
nvd113 天前
# 从 192 秒到 13 秒:Apache Flink 批处理极速调优实战记录
大数据·flink·apache
starzy19904 天前
Flink 优化之网络缓存优化及参数详解:从数据传输机制到反压原理的生产调优指南
网络·缓存·flink
智码看视界5 天前
Edge AI 全栈实战 ④:向量数据库 + RAG 让 IoT 诊断拥有“记忆“
flink·向量数据库·rag·全栈开发·edgeai·iot诊断
starzy19906 天前
Flink 优化之 CheckPoint 优化及参数详解:从原理到生产环境调优的完整指南
大数据·flink
nvd116 天前
深入解构 Flink FLIP-27 数据摄取内核:从 env.execute() 到工业级 Source 运行机制
大数据·flink
nvd117 天前
Flink 极简入门与零常驻批处理架构实战:从双模式辨析到 GitOps 通用模具治理
大数据·架构·flink
俊哥大数据7 天前
Flink1.20.3 实时消费 Kafka 数据并解析入湖 Paimon1.4.2 全流程实战
分布式·flink·kafka·数据湖·paimon