Flink CDC 高频面试题_flinkcdc面试

1 cdc 简介

CDC (Change Data Capture) 是一种用于捕捉数据库变更数据的技术,Flink 从 1.11 版本开始原生支持 CDC 数据(changelog)的处理,目前已经是非常成熟的变更数据处理方案。

Flink CDC Connectors 是 Flink 的一组 Source 连接器,是 Flink CDC 的核心组件,这些连接器负责从 MySQL、PostgreSQL、Oracle、MongoDB 等数据库读取存量历史数据和增量变更数据。在 2020 年 7 月开源,社区保持了相当高速的发展,平均两个月一个版本,在开源社区的关注度持续走高,也逐渐有越来越多的用户使用 Flink CDC 来快速构建实时数仓和数据湖。

2 Flink cdc 2.1.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 入门文档,增加多种场景的端到端实践教程。

2.1 MySQL CDC 连接器改进详解

在 Flink CDC 2.0 版本里,MySQL CDC 连接器提供了无锁算法并发读取断点续传等高级特性, 一并解决了诸多生产实践上的痛点,随后大量用户开始投入使用并大规模上线。

在 Flink CDC 2.1 版本针对 MySQL CDC 连接器的改进主要包括两类:

  1. 稳定性提升;
  2. 功能增强。

(1) 稳定性提升

  • 针对不同的主键分布,引入动态分片算法

对主键是 非数值、Snowflake ID、稀疏主键、联合主键 等场景,通过动态分析源表的主键分布的均匀程度,根据分布的均匀程度自动地计算分片大小,让切片更加合理,让分片计算更快。

动态分片算法能够很好地解决 稀疏主键 场景下 分片过多 的,联合主键 分片过大 等问题,让每个分片包含的行数尽量维持在用户指定的 chunk size,这样用户通过 chunk size 就能控制分片大小和分片数量,无需关心主键类型。

  • 支持百亿级超大规模表

在表规模非常大时,以前会报 binlog 分片下发失败的错误。

这是因为在超大表对应的 snapshot 分片会非常多,而 binlog 分片需要包含所有 snapshot 分片信息,当 SourceCoordinator 下发 binglog 分片到 SourceReader 节点时,分片 size 超过 RPC 通信框架支持的最大 size 会导致分片下发失败。虽然可以通过修改 RPC 框架的参数缓解分片 size 过大问题,但无法彻底解决。

Flink cdc 2.1 版本里通过将多个 snapshot 分片信息划分成 group 发送,一个 binlog 分片会切分成多个 group 逐个发送,从而彻底解决该问题。

  • 引入连接池管理数据库连接,提升稳定性

通过引入连接池管理数据库连接,一方面降低了数据库连接数,另外也避免了极端场景导致的连接泄露。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值