FlinkCDC增量快照框架
FlinkCDC简介
FlinkCDC是基于数据库的日志CDC技术,实现全量和增量的一体化读取能力,借助Flink的管道能力和上下游生态,支持实时捕获、加工多种数据库的变更并输出到下游。
FlinkCDC增量快照算法
FlinkCDC1.0痛点
- 一致性:通过加锁保证,但可能导致数据库hang住或无法更新。
- 不支持水平扩展:单并发模式,大表读取时间长。
- 全量读取阶段不支持checkpoint:失败需重头开始,效率低。
FlinkCDC增量快照算法
- DBLog算法原理:将表分块(Chunk),无锁读取,支持并行读取和断点续传。
- Chunk划分:根据主键ID范围划分Chunk,保证有序读取。
- Chunk读取:Chunk内无锁读取binlog,保证增量数据捕获的准确性。
- Chunk分发:通过SourceEnumerator和SourceReader分发Chunk数据。
- Chunk汇报:SourceReader汇报读取进度,支持断点续传。
算法整体流程
- 全量阶段:多并发读取,快速初始化数据快照。
- 增量阶段:单并发读取binlog,保证数据一致性。
FlinkCDC增量快照框架
- 框架设计:基于Flink Source API设计,支持多种数据库接入。
- 核心API:
DataSourceDialect和JdbcDataSourceDialect。
- 接入方式:支持普通JDBC数据源接入和社区Connector接入(MySQL、MongoDB、Oracle、TDSQL等)。
社区发展规划
- 发展历程:从2020年第一个commit到2022年发布2.2版本,逐步完善功能和生态。
- 社区指标:2021年7月建立社区群,2022年8月已有6000+开发者和用户。
- 未来规划:框架完善、增量快照框架推广、生态集成(数据湖、更多DB)、易用性提升(文档/教程)、端到端方案、Schema Evolution、整库同步等。