Flink CDC系列之:Apache Flink CDC 项目的各个模块作用

  • 项目整体架构
  • 核心模块详解
    • [flink-cdc-common - 公共基础模块](#flink-cdc-common - 公共基础模块)
    • [flink-cdc-runtime - 运行时核心模块](#flink-cdc-runtime - 运行时核心模块)
    • [flink-cdc-connectors - 连接器集合](#flink-cdc-connectors - 连接器集合)
    • [flink-cdc-composer - 作业编排模块](#flink-cdc-composer - 作业编排模块)
    • [flink-cdc-pipeline - 数据管道模块](#flink-cdc-pipeline - 数据管道模块)
    • [flink-cdc-ui - 用户界面模块](#flink-cdc-ui - 用户界面模块)
    • [flink-cdc-e2e-tests - 端到端测试](#flink-cdc-e2e-tests - 端到端测试)
  • 数据流架构
  • 核心特性实现
  • 使用场景

项目整体架构

bash 复制代码
flink-cdc/
├── flink-cdc-common/          # 公共基础模块
├── flink-cdc-runtime/         # 运行时核心模块
├── flink-cdc-composer/        # 作业编排模块
├── flink-cdc-connectors/      # 连接器集合
├── flink-cdc-pipeline/        # 数据管道模块
├── flink-cdc-ui/              # 用户界面模块
├── flink-cdc-e2e-tests/       # 端到端测试
└── docs/                      # 文档

核心模块详解

作用: 提供整个项目共享的基础组件和工具类

主要包含:

  • SourceConfig, SinkConfig - 配置类定义
  • CDCEvent, SchemaChangeEvent - 事件模型
  • 序列化器、异常类、常量定义
  • 公共工具类和工具方法

作用: CDC 管道执行的核心运行时逻辑

关键组件:

  • SQL 函数扩展(如你之前查看的 BuiltInScalarFunction)

  • CDC Source/Sink 基础类

  • Schema 演进处理器

  • 数据转换逻辑

  • 状态管理

    // 核心运行时流程
    CDC Source → 数据解析 → Schema 演进 → 数据转换 → CDC Sink

作用: 提供各种数据库的 CDC 连接器实现

包含的子模块:

  • flink-connector-mysql-cdc - MySQL 连接器
  • flink-connector-postgres-cdc - PostgreSQL 连接器
  • flink-connector-oracle-cdc - Oracle 连接器
  • flink-connector-sqlserver-cdc - SQL Server 连接器
  • flink-connector-mongodb-cdc - MongoDB 连接器
  • flink-connector-db2-cdc - DB2 连接器
  • flink-connector-tidb-cdc - TiDB 连接器

每个连接器负责:

  • 数据库日志解析(binlog/WAL)
  • 数据快照机制
  • 故障恢复处理
  • 数据格式转换

作用: 提供 CDC 作业的编排和部署能力

主要功能:

  • Flink SQL 生成器 - 自动生成 CDC 管道 SQL
  • 作业图构建器 - 构建 Flink 作业执行图
  • 部署管理器 - 管理作业部署到不同环境
  • 配置优化器 - 自动优化作业配置
bash 复制代码
-- 示例:自动生成的 Flink SQL
CREATE TABLE mysql_source (...)
WITH ('connector' = 'mysql-cdc', ...);

CREATE TABLE kafka_sink (...)
WITH ('connector' = 'kafka', ...);

INSERT INTO kafka_sink SELECT * FROM mysql_source;

作用: 提供声明式的数据管道定义和管理

核心特性:

  • Pipeline DSL - 管道定义语言

  • 连接管理 - 数据源和目标连接配置

  • 转换规则 - 数据映射和转换规则

  • 监控指标 - 管道运行状态监控

    示例:管道定义

    pipeline:
    source:
    type: mysql
    config: {...}
    transforms:
    - type: filter
    config: {...}
    sink:
    type: kafka
    config: {...}

作用: 提供 Web 界面用于可视化管理和监控 CDC 作业

功能包括:

  • 连接器管理 - 可视化配置数据源
  • 管道设计器 - 拖拽式管道设计
  • 作业监控 - 实时监控作业状态
  • 数据预览 - 查看变更数据流
  • 告警管理 - 设置监控告警规则

作用: 确保整个 CDC 管道的端到端正确性

测试范围:

  • 连接器集成测试 - 各数据库连接器功能验证
  • 数据一致性测试 - 确保数据不丢失、不重复
  • 故障恢复测试 - 测试断点续传能力
  • 性能基准测试 - 性能回归测试
  • 升级兼容性测试 - 版本升级测试

数据流架构

复制代码
数据库源 → CDC连接器 → Flink运行时 → 转换处理 → 目标系统
    ↓           ↓           ↓           ↓         ↓
 MySQL     mysql-cdc   flink-cdc-   SQL函数    Kafka
PostgreSQL postgres-cdc  runtime    转换规则  Elasticsearch
 Oracle    oracle-cdc               Schema演进   Hudi

核心特性实现

1. 变更数据捕获

  • 基于数据库日志的实时数据捕获
  • 支持全量快照 + 增量日志模式
  • 精确一次语义保证

2. Schema 演进

  • 自动处理 DDL 变更
  • 向后兼容的 Schema 演化
  • 类型映射和转换

3. 容错机制

  • Checkpoint 状态管理
  • 断点续传能力
  • 故障自动恢复

4. 扩展性

  • 插件化连接器架构
  • 自定义函数扩展
  • 灵活的管道配置

使用场景

  • 实时数据同步 - 数据库到数据仓库/数据湖
  • 微服务数据共享 - 服务间数据变更通知
  • ETL 管道 - 实时数据提取和加载
  • 数据备份 - 实时数据备份和容灾
  • CQRS 架构 - 命令查询职责分离

这个模块化设计使得 Flink CDC 能够灵活适应各种数据集成场景,同时保持良好的可扩展性和维护性。

相关推荐
最笨的羊羊1 年前
Flink CDC系列之:学习理解核心概念——Data Sink
flink cdc系列·学习理解核心概念·data sink
最笨的羊羊1 年前
Flink CDC系列之:学习理解核心概念——Data Source
flink cdc系列·data source·学习理解核心概念
最笨的羊羊1 年前
Flink CDC系列之:学习理解核心概念——Data Pipeline
flink cdc系列·学习理解核心概念·data pipeline
最笨的羊羊1 年前
Flink CDC系列之:学习理解standalone模式
flink cdc系列·学习理解·standalone模式
最笨的羊羊1 年前
Flink CDC系列之:理解学习YARN模式
flink cdc系列·理解学习yarn模式
最笨的羊羊1 年前
Flink CDC系列之:理解学习Kubernetes模式
flink cdc系列·理解学习·kubernetes模式
最笨的羊羊1 年前
Flink CDC系列之:学习理解核心概念——Transform
transform·flink cdc系列·学习理解核心概念
最笨的羊羊1 年前
Flink CDC系列之:学习理解核心概念——Route
route·flink cdc系列·学习理解核心概念
最笨的羊羊1 年前
Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案
mysql·flink cdc系列·flink cdc·elt·流式传输·starrocks方案