CDC (Change Data Capture) 是一种用于捕捉数据库变更数据的技术,Flink 从 1.11 版本开始原生支持 CDC 数据(changelog)的处理,目前已经是非常成熟的变更数据处理方案。
Flink CDC Connectors 是 Flink 的一组 Source 连接器,是 Flink CDC 的核心组件,这些连接器负责从 MySQL、PostgreSQL、Oracle、MongoDB 等数据库读取存量历史数据和增量变更数据。在 2020 年 7 月开源,社区保持了相当高速的发展,平均两个月一个版本,在开源社区的关注度持续走高,也逐渐有越来越多的用户使用 Flink CDC 来快速构建实时数仓和数据湖。
Flink CDC 2.1的改进
Flink CDC 2.1 版本重点提升了 MySQL CDC
连接器的性能和生产稳定性,重磅推出 Oracle CDC
连接器和 MongoDB CDC
连接器。新增内容如下:
(1)MySQL CDC 支持百亿级数据的超大表,支持 MySQL 全部数据类型,通过连接池复用等优化大幅提升稳定性。同时提供支持无锁算法,并发读取的 DataStream API,用户可以借此搭建整库同步链路;
(2)新增 Oracle CDC 连接器, 支持从 Oracle 数据库获取全量历史数据和增量变更数据;
(3)新增 MongoDB CDC 连接器,支持从 MongoDB 数据库获取全量历史数据和增量变更数据;
(4)所有连接器均支持metadata column
功能, 用户通过 SQL 就可以访问库名,表名,数据变更时间等 meta 信息,这对分库分表场景的数据集成非常实用;
丰富 Flink CDC 入门文档,增加多种场景的端到端实践教程。
Flink CDC 1.x 问题点
1、加锁时间不确定,极端情况会锁住数据库
针对 一致性加锁的痛点 Flink cdc 2.x 借鉴 Netflix 的 DBlog paper 设计了全程无锁算法
2、因为 Flink CDC 底层是基于 Debezium,Debezium 架构是单节点,所以 Flink CDC 1.x 只支持单并发。在全量读取阶段,如果表非常大 (亿级别),读取时间在小时甚至天级别,用户不能通过增加资源去提升作业速度。
3、全量读取阶段不支持 checkpoint
Flink CDC 读取分为两个阶段,全量读取和增量读取,目前全量读取阶段是不支持 checkpoint 的;
因此会存在一个问题:当我们同步全量数据时,假设需要 5 个小时,当我们同步了 4 小时的时候作业失败,这时候就需要重新开始,再读取 5 个小时。
Flink cdc 2.x 中定期为源执行检查点,在故障转移的情况下,作业将从上次成功的检查点状态重新启动并恢复,并保证恰好一次语义。文章来源:https://www.toymoban.com/news/detail-506567.html
Flink CDC 高频面试 13 问(万字长文吐血总结!)文章来源地址https://www.toymoban.com/news/detail-506567.html
到了这里,关于Flink CDC介绍及原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!