>本文讲解Flink-CDC的数据读取流程:全量阶段通过“快照+Binlog修正”并行读取数据保证一致性,随后无缝切换到增量Binlog流。 Flink-CDC的数据读取流程: 1. 切片的划分 全量阶段数据读取为分布式读取,会先对当前表数据按主键划分多个chunk,后续子任务读取chunk区间内的数据,根据主键列是否为数值类型对表划分为均匀分布的chunk及非均匀分布的chunk 1.1. 均匀分布: 主键列类型为数值类型,查询出主键列的最小值,最大值,按chunkSize大小将数据均匀划分 1.2. 非均匀分布: 主键列为非数值类型,每次划分需要对未划分的数据按主键进行升序排序,取出chunkSize条数据的最大值为当前chunk的结束位置 2. 全量切片数据读取 Flink-cdc将表数据划分为多个chunk后,子任务在不加锁的情况下,并行读取chunk数据,因为全程无锁在数据分片读取过程中,可能有其他事务对切片范围的数据进行修改,此时无法保证数据一致性 因此,在全量阶段flink使用快照记录读取+Binlog数据修正的方式保证数据的一致性 2.1. 快照读取:通过JDBC...