Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

news2025/7/20 9:48:15

01

Flink CDC 简介

Flink CDC [1] 是基于数据库的日志 CDC 技术,实现了全增量一体化读取的数据集成框架。配合 Flink 优秀的管道能力和丰富的上下游生态,Flink CDC 可以高效实现海量数据的实时集成。

4209811088d7ae056e9ed03c09217257.png

作为新一代的实时数据集成框架,Flink CDC 具有全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等技术优势,同时社区提供了完整的文档支持 [2]。在 Flink CDC 开源的两年多时间里,社区成长迅速,目前 Flink CDC 社区已有 76 位贡献者,7 位 Maintainer,社区钉钉用户群超过 7800 人。

02

Flink CDC 2.3 概览

在社区用户和贡献者们的共同努力下, Flink CDC 2.3 正式发布了:

https://github.com/ververica/flink-cdc-connectors/releases/tag/release-2.3.0

7901b3e4769c89f95a9ea9c83282b1e6.png

2.3 版本共有 49 位社区贡献者参与贡献,累计解决 126 个 issue,合并了 133 个 PR,贡献者们累计贡献了 170+ 提交。从代码分布上看,MySQL CDC, MongoDB CDC, Oracle CDC,增量快照框架(flink-cdc-base)模块以及文档模块均为用户带来了很多特性和改进。

面对如此多的改进和特性,本文通过下图带你 3 分钟快速了解 Flink CDC 2.3 版本的重大改进和核心特性。

532122e89c00d9b65271a0f1fa1ee5e9.png

  • 新增 Db2 CDC 连接器, 解锁读取 Db2 数据库,支持全量和增量一体化同步。

  • MongoDB CDC,Oracle CDC 两大连接器均接入了增量快照框架,从而提供了无锁读取,并发读取和断点续传的能力。

  • MySQL CDC 连接器在 2.3 版本里进行了诸多性能优化和稳定性大改进,极大提升了生产稳定性和性能。

  • Flink CDC 2.2 版本兼容了 Flink 1.13 和 Flink 1.14,Flink CDC 2.3 在此基础上继续兼容了 Flink 1.15 & 1.16 大版本,从而兼容了 Flink 的四个大版本。这意味着 CDC 的 SQL connector 可以跑在不同的 Flink 集群上而无需任何修改,如果是 DataStream 用户也可以参考 SQL Connector 的打包方式,实现跨版本兼容。

  • OceanBase CDC 连接器支持将全部数据库类型对接到 Flink SQL,也就是说 OceanBase 所有类型的字段均支持同步。

  • MySQL CDC 和 OceanBase CDC 连接器提供中文文档,这可以更好地帮助到中文用户。


03

详解核心特性和重要改进

Flink CDC 2.3 版本带来了诸多重要的改进和特性,本文挑选最重要的四个进行深入解读。

ea95ae6d8725432b4e6816c85cd8d93d.png

3.1 新增 Db2 CDC 连接器

Db2 是 IBM 开发的关系型数据库 [3]。Db2 CDC 连接器可以捕获 Db2 数据库中表的行级变更,其实现原理是基于 ASN Capture/Apply agents 提供的 SQL 复制能力 ,将数据库中开启 capture mode 的表的变更存到指定的 change table 中。Db2 CDC 连接器首先通过  JDBC 读取表中的历史数据,再从 change table 中获取增量变更数据,从而实现全增量同步。

3.2 MongoDB CDC,Oracle CDC 连接器支持增量快照算法

在 Flink CDC 2.3 版本中,MongoDB CDC 连接器和 Oracle CDC 连接器都对接到了 Flink CDC 增量快照框架上,实现了增量快照算法,从而提供无锁读取,并行读取和断点续传的功能。

aa854ae1fd32a8683d1e350e46552383.png

至此,Flink CDC 支持增量快照算法的数据源不断扩大,在接下来的版本中,社区也在规划让更多的连接器对接到增量快照框架上。

3.3 MySQL CDC 连接器优化

作为社区最受用户关注的 MySQL CDC 连接器,2.3 版本中社区引入了诸多高级特性,极大地提升了性能和稳定性,具体包括:

3.3.1 支持指定位点启动

MySQL CDC 连接器支持从指定的位点启动作业。可以通过 timestamp,binlog offset 或 binlog gtid 的方式指定作业启动时的 binlog 具体位置,还支持设置为 earliest-offset 从最早的 binlog 位点启动作业。

3.3.2 分片算法优化

2.3 版本对全量阶段分片算法进行优化。将目前的同步分片改为异步进行,支持用户指定主键中某一列作为分片的切分列,并且分片过程支持 checkpoint,提升了全量读取阶段时因为同步分片阻塞导致的性能问题。

3.3.3 稳定性提升

MySQL CDC 连接器支持全部字符集对接到 Flink SQL,解锁更多用户场景,支持宽容默认值提升作业对不规范 DDL 的容忍度,支持自动获取数据库的时区从而解决时区问题。

3.3.4 性能提升

2.3 版本 MySQL CDC 重点优化了内存和读取性能,通过 JM 里的 meta 复用和 TM 中流式读取等改进降低了 JM 和 TM 的内存使用;同时通过优化 binlog 解析逻辑提升了 binlog 读取性能。

3.4 其他改进

  • Flink CDC 2.3 版本兼容了 Flink 1.13,1.14,1.15 和 1.16 四个大版本,极大地降低用户 Connector 的升级和运维成本。

  • OceanBase CDC 修复了时区问题,支持全类型对接到 Flink SQL,并提供了更多的配置项,支持更灵活的配置。如新增加 table-list 配置项,支持访问多张 OceanBase 数据表等。

  • MongoDB CDC 支持了更多的数据类型,优化了捕获表的筛选过程。

  • TiDB CDC 修复了全增量切换时数据丢失问题,支持读取时 region 切换。

  • Postgres CDC 支持 geometry 类型,开放了更多配置项,支持配置 changelog mode 来过滤发送的数据。

  • SqlServer CDC 支持了更多的版本,并对文档 [4]进行完善。

  • MySQL CDC 和 OceanBase CDC 连接器提供了中文文档 [5][6],此外还对 OceanBase CDC 连接器提供了视频教程 [7]


04

 未来规划

Flink CDC 开源社区的发展,得益于贡献者们的无私贡献和 Maintainer 成员的开源布道,更离不开广大 Flink CDC 用户群体的积极反馈和宣传布道,Flink CDC 社区将会继续做好开源社区建设。当前 Flink CDC 社区正在做 2.4 版本的规划 [8],也欢迎所有用户和贡献者参与反馈,在接下来的 2.4 版本,社区主要方向计划从下述四个方面展开:

  • 数据源完善

支持更多的数据源,推动更多的 CDC 连接器接入增量快照框架,支持无锁读取、并发读取、断点续传等特性。

  • 可观测性提升

提供限流功能,以降低全量阶段对数据库产生的查询压力;提供更丰富的监控指标,可以获取到任务进度相关指标监控任务状态。

  • 性能提升

全量阶段支持使用 Batch 模式同步全量阶段数据,提升全量阶段性能;全量读取阶段结束后自动释放空闲 reader 资源等。

  • 易用性提升

提升连接器的易用性,比如简化开箱即用的配置参数,提供 Datastream API 程序示例等。

致谢:

感谢所有为 Flink CDC 2.3 版本做出贡献的覃立辉、莫贤彬、rookiegao、He Wang 等 49 位社区贡献者,特别感谢社区的四位 Maintainer 成员阮航、孙家宝、龚中强和任庆盛为 2.3 版本发布所做的杰出工作。

阿里云实时计算 Flink 版提供更多企业级 Flink CDC 能力 [9],包括了分库分表合并、表结构变更同步、整库同步等重要功能,更好的支持了阿里云实时数仓 ODPS-Hologres 等产品,同时使用可无缝构建实时数据仓库。欢迎感兴趣的用户移步阿里云产品官网体验使用。

贡献者列表:

01410172,Amber Moe,Dezhi Cai,Enoch,Hang Ruan,He Wang,JiaJia,Jiabao Sun,Junwang Zhao,Kyle Dong,Leonard Xu,Matrix42,Paul Lin,Qingsheng Ren,Qishang Zhong,Rinka,Sergey Nuyanzin,Tigran Manasyan,camelus,dujie,ehui,empcl,fbad,gongzhongqiang,hehuiyuan,hele.kc,hsldymq,jiabao.sun,legendtkl,leixin,leozlliang,lidoudou1993,lincoln lee,lxxawfl,lzshlzsh,molsion,molsionmo,pacino,rookiegao,skylines,sunny,vanliu,wangminchao,wangxiaojing,xieyi888,yurunchuan,zhmin,阿洋,莫贤彬


附录:

[1] https://github.com/ververica/flink-cdc-connectors

[2] https://ververica.github.io/flink-cdc-connectors

[3] https://www.ibm.com/products/db2

[4] https://ververica.github.io/flink-cdc-connectors/release-2.3/content/connectors/sqlserver-cdc.html

[5] https://ververica.github.io/flink-cdc-connectors/release-2.3/content/connectors/mysql-cdc%28ZH%29.html

[6] https://ververica.github.io/flink-cdc-connectors/release-2.3/content/connectors/oceanbase-cdc%28ZH%29.html

[7] https://ververica.github.io/flink-cdc-connectors/release-2.3/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/oceanbase-tutorial-zh.html

[8] https://github.com/ververica/flink-cdc-connectors/issues/1728

[9] https://www.alibabacloud.com/help/zh/realtime-compute-for-apache-flink/latest/data-synchronization-quick-start


Flink Forward Asia 2022

移动端直播预约

PC 端直播预约

建议前往 FFA 2022 大会官网预约直播

https://flink-forward.org.cn/

eac8521ccb047bbf959efe6b01ad5891.jpeg

点击议题,即可查看议题详情以及讲师介绍

▼ 关注「Apache Flink」,获取更多技术干货 ▼

05b2240382a09e9c3ec523aa16f2de51.png

 687f08222412b8dffee04ee85781e0cd.gif  点击「阅读原文,预约 FFA 大会直播~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子班牌解决方案-最新全套文件

电子班牌解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 电子班牌全套最新解决方案合集一、建设背景 信息技术已渗透到经济发展和社会生活的各个方面,人们普遍关注教育信息化在提高国民素质和增强国家创新能力方面的重要作用。 《国家中长…

分块查找 确定查找位置

此时 当low和high指在某个相同的位置mid时(此时low,mid,high指向同一位置),mid的左边元素小于19,因为low左边的元素一定小于19,mid右边的元素大于19,因为high右边的元素大于19。我们需要寻找的是位置是大于…

PMI新人才三角如何构建自己的影响力?【洞见1】

背景: VUCA时代,Volatility(易变性),Uncertainty(不确定性),Complexity(复杂性),Ambiguity(模糊性),这个时代…

c++new和delete的匹配问题与raii的定制删除器

目录 1.关于new与delete 2.智能指针的定制删除器 1.关于new与delete 这里我想介绍的是new[]与delete[]没有配套使用带来的影响。这个是否发生错误和使用的ide有很大的关系。(这里我用vs平台做示例) 如果对内置类型采用new[]来开辟开辟空间&#xff0c…

postgresql源码学习(50)—— 小白学习Dtrace追踪源码函数调用

不知不觉第50篇了,昨天在文章里(https://mp.weixin.qq.com/s/AzBGzYhGxYjSf7Sptj55lQ)学到一个追踪源码执行情况的利器 —— Dtrace,本篇记录下实验和笔记。 一、 解决痛点 学习以来一直有一个疑惑,如何将pg中执行的SQ…

Spring Boot 3.0 正式发布,这份升级指南必须收藏

Spring Boot 3.0 现已正式发布,它包含了 12 个月以来 151 个开发者的 5700 多次代码提交。这是自 4.5 年前发布 2.0 以来,Spring Boot 的第一次重大修订。它也是第一个支持 Spring Framework 6.0 和 GraalVM 的 Spring Boot GA 版本,同时也是…

Nginx环境搭建及前端部署教程(Windows版)

1、Nginx简介 Nginx (engine x) 是一个轻量级、高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性…

2022年,数字化转型升级,越来越重要

所谓数字化营销,指的是使用数字传播渠道推广产品和服务,从而以一种及时、相关、定制化和节省成本的方式与消费者进行沟通。 进入2022年,数字化转型升级,变得越来越重要。 01政策推动数字化发展 国家“十四五”期间将加快推进企业…

arthas进阶版排查问题之idea插件工具操作

arthas前面的文章讲了怎么去使用命令排查线上问题,线上出了问题就需要我们去排查问题和处理程序异常,但是线上一般出问题不太好解决,总有一些奇怪的问题,当然很多场景是测试测试不到的,我们不能百分百保证线上不出问题…

Unreal地形高级材质之根据斜率分配材质

目的:根据地形的斜率来混合地形材质,制作地形时,当地形有高度抬升时,被拉伸部位的贴图会出现拉伸,或者想要在拉伸区域使用其他类型种类的贴图时。如果使用笔刷对地形进行更改是耗费时间的,所以想要整体一次…

数据结构中的树和二叉树(0基础讲解+代码)

树和二叉树树的定义树的一些基本概念树的代码链接方式二叉树完全二叉树和满二叉树二叉树的性质链式二叉树前序遍历后序遍历中序遍历层序遍历二叉树的深度二叉树第k层的结点个数二叉树的叶子节点个数总结前言:前面我们所学习的数据结构比如链表,顺序表&am…

【博客542】k8s使用EndpointSlices扩展大规模service后端服务数量

k8s使用EndpointSlices扩展大规模service后端服务数量 EndpointSlices 端点切片(EndpointSlices) 提供了一种简单的方法来跟踪 Kubernetes 集群中的网络端点(network endpoints)。 它们为 Endpoints 提供了一种可扩缩和可拓展的替…

长时间序列模型DLinear(代码解析)

前言 今年时间序列SOTA,DLinear模型,论文下载链接,也可以看我写的论文解析当然最好是读原文。Dlinear,NLinear模型Github项目地址,下载项目文件这里提供我写过注释的项目文件,下载地址 参数设定模块(run_…

图神经网络之预训练大模型结合:ERNIESage在链接预测任务应用

1.ERNIESage运行实例介绍(1.8x版本) 本项目原链接:https://aistudio.baidu.com/aistudio/projectdetail/5097085?contributionType1 本项目主要是为了直接提供一个可以运行ERNIESage模型的环境, https://github.com/PaddlePaddle/PGL/blob/develop/e…

笔记redis

redis特点: 1.这些数据类型都支持 push/pop. add/remove 及取交集并集和差集及更丰富的操作 2.Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中进行持久化 3.单线路IO多路复用 4.redis操作是原子性操作 redis 单线程模型: Redis 内…

chrome插件开发(manifest_version版本V3 + Ant Design Vue)

1.什么是 Chrome 插件 谷歌浏览器插件是一种小型的定制浏览器体验的程序,通过插件可以自定义浏览器的一些行为来适合个人的需求,例如上面的查看服务器状态插件。 在应用商店中下载下来的插件基本上都是以.crx 为文件后缀,该文件其实就是一个…

Word2Vec

Word2Vec 在自然语言发展的早期阶段,词的表示经历了不断地发展和改进,直到后来有一种word vector的思想被提出以及后续的实现,才极大地促进了NLP的发展。 word vector的核心思想: 为每个单词构建一个密集向量,选择后…

傻白入门芯片设计,先进封装技术(五)

集成电路芯片与封装之间是不可分割的整体。没有一个芯片可以不用封装就能正常工作,封装对芯片来说是必不可少的,随着IC生产技术的进步,封装技术也不断更新换代,每一代IC都与新一代的IC封装技术紧密相连。 一、什么是封装&#xf…

什么蓝牙耳机颜值高音质好?颜值高音质好的蓝牙耳机推荐

朋友让我推荐蓝牙耳机的时候,总是喜欢问哪款蓝牙耳机的性能更强,想要直接入手那款性能更强的蓝牙耳机,以此节省对比的时间。但是用户自行进行对比的步骤,显然是不能省的,所以今天我给四款蓝牙耳机做了横向对比&#xf…

C语言tips-NULL指针和void指针

0.写在最前 最近因为工作需要开始重新学c语言,越学越发现c语言深不可测,当初用python轻轻松松处理的一些数据,但是c语言写起来却异常的复杂,这个板块就记录一下我的c语言复习之路 1. void指针 1.1 解释 void 用在函数定义中可以表…