Flink CDC:一个基于流的实时数据集成工具

在实时数仓、实时数据集成快速发展的今天,如何稳定、低延迟、低成本地把业务数据从数据库同步到下游系统,成为很多数据团队绕不开的话题。

过去,我们可能会选择 Canal + Kafka + 自研消费,或者离线同步工具 + 定时调度;如今,越来越多团队开始把目光投向一个新的选择:Flink CDC

Flink CDC(Change Data Capture) 是一个基于 Apache Flink 的流式数据集成平台,用于实时捕获外部数据源中的数据变更(INSERT、UPDATE、DELETE 以及 DDL),并且将其以流的方式同步到下游系统(例如消息队列、数据库、数据仓库或数据湖)。

Flink CDC 深度集成并且由 Apache Flink 驱动,源代码托管在 GitHub:

https://github.com/apache/flink

功能特性

  • 基于日志的 CDC:Flink CDC 通过解析数据库的操作日志,例如 MySQL Binlog、PostgreSQL WAL、Oracle Redo Log、MongoDB OpLog,实现低延迟(亚秒级)、低侵入、无锁的变更捕获,性能和一致性优于查询型 CDC。

  • 基于 YAML 的数据管道:使用基于配置文件的 Pipeline 模型自动生成并提交 Flink 作业,基本无需编写 Java 或者 SQL 代码,极大地降低了使用门槛。

  • 丰富的连接器:Flink CDC 提供了丰富的连接器生态系统,用于与各种外部系统进行交互;数据源(Source)支持 MySQL、Oracle、PostgreSQL、Db2、MongoDB、SQL Server、TiDB、Vitess,目标(sink)支持 Apache Doris、Elasticsearch、Fluss、Hudi、Iceberg、Kafka、MaxCompute、OceanBase、Paimon、StarRocks。

  • 表结构自动同步:Schema Evolution 功能可以用于将上游的 DDL 变更事件同步到下游,例如创建新表、添加新列、重命名列或更改列类型、删除列、截断和删除表等。

  • 全量增量一体化:Flink CDC 提供增量快照框架,启动时自动做一致性全量快照,快照完成后无缝切换到增量日志。

  • 精确一次语义:Exactly-Once 语义可以确保每一条数据变更在整个处理链路中一定且只被处理一次,同时只产生一次结果。

  • 数据转换:Transform 模块允许用户对数据进行字段级或行级的加工处理,例如字段选择、重命名、派生字段或者函数计算。

  • 路由规则:Route 代表一个路由规则,用来匹配一个或多个源表,并且映射到目标表。最常见的场景是合并子数据库和子表,将多个上游源表路由到同一个目标表。

配置示例

以下是一个 YAML 文件的示例,它定义了一个数据管道,可以从 MySQL 捕获实时变更,并且将它们同步到 Apache Doris:

yaml 复制代码
source:
  type: mysql
  hostname: localhost
  port: 3306
  username: root
  password: 123456
  tables: app_db.\.*
  server-id: 5400-5404
  server-time-zone: UTC

sink:
  type: doris
  fenodes: 127.0.0.1:8030
  username: root
  password: ""
  table.create.properties.light_schema_change: true
  table.create.properties.replication_num: 1

pipeline:
  name: Sync MySQL Database to Doris
  parallelism: 2

通过使用 flink-cdc.sh 提交以上 YAML 文件,一个 Flink 作业将会被编译并部署到指定的 Flink 集群。

官方文档列出了常用的数据管道构建示例,参考文档:

https://nightlies.apache.org/flink/flink-cdc-docs-release-3.6/zh/docs/get-started/introduction/

相关推荐
暴躁小师兄数据学院8 小时前
【AI大数据工程师特训笔记】第15讲:大数据环境安装
大数据·hadoop·flink·spark
抛砖者9 小时前
flink打包方式问题
大数据·flink
大大大大晴天️15 小时前
Flink Resource Providers 深度解析:机制原理、部署模式与最佳实践
大数据·flink
大大大大晴天1 天前
Flink Resource Providers 深度解析:机制原理、部署模式与最佳实践
flink
uyermw_4111 天前
PyTorch数据集与加载器全解析
flink·etcd
阿坤带你走近大数据2 天前
Flink中背压的详细介绍
大数据·flink
yyoc972 天前
本地 Flink on K8s + Iceberg + MinIO 实时数仓平台 — AI部署指南与踩坑实录
大数据·ai·flink·kubernetes·iceberg
阿坤带你走近大数据2 天前
flink的架构介绍
大数据·架构·flink
HEADKON3 天前
Synagis帕利佐单抗给药季节为11月至次年4月,过敏体质者需备肾上腺素
flink
korry243 天前
flink实时计算实例(保姆级操作)
大数据·flink