Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本

这篇具有很好参考价值的文章主要介绍了Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

来源:https://ververica.github.io/flink-cdc-connectors/master/

01. Flink CDC 简介

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

具体关于Flink CDC是什么?可以看下这篇文字

Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本,# Flink,flink,大数据
作为新一代的实时数据集成框架,Flink CDC 具有全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等技术优势,同时社区提供了完善的中英文文档支持 [2]。

02. Flink CDC 2.4 概览

在社区用户和开发者们的共同努力下, Flink CDC 2.4 在端午假期后正式发布了:

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

Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本,# Flink,flink,大数据

2.4 版本共有 32 位社区贡献者参与贡献,计解决 141 个 issue,合并了 86 个PR,贡献了 96 个 commits。从代码分布上看,MySQL CDC, MongoDB CDC, PostgreSQL CDC,增量快照框架(flink-cdc-base)模块以及文档模块均为用户带来了很多特性和改进。

本文通过下图带你 10 分钟快速了解 Flink CDC 2.4 版本的重大改进和核心特性。

Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本,# Flink,flink,大数据

  • 新增 Vitess CDC 连接器,支持 Vitess 增量数据同步。

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

  • 2.4 版本升级 Debezium 的依赖版本到 1.9.7.Final,引入了 Debezium 新版本的功能,优化和修复,比如:修复部分 DDL 无法解析的问题,修复解析 MySQL JSON 函数问题,Oracle 事件增加 scn 信息等。

  • 增量快照框架在 2.4 版本增加了自动关闭全量阶段结束后的空闲 Reader 功能,该功能非常实用,可以在生产环境节省资源。

  • MySQL CDC 连接器在 2.4 版本支持读取无主键表,同时支持新增表时原有实时同步链路不断流。

  • 社区 2.4 版本兼容 Flink 1.13 ~ 1.17 五个 Flink 版本。CDC 的 SQL Connector 可以跑在不同的 Flink 集群上而无需任何修改,实现跨版本兼容。如果是 Datastream 作业,则需要根据不同的 Flink 版本引入不同版本的 flink-shaded-guava 依赖,DataStream 用户可以参考 SQL Connector 的打包方式管理正确的依赖。

  • MongoDB CDC 支持指定时间戳消费数据,支持 mongodb + srv 连接协议,并修复了若干问题,如:无法解析带连字符的库名,‘poll.await.time.ms’ 配置未生效,解析 DDL出现空指针等。

  • OceanBase CDC 连接器支持 JDBC 参数设置,支持指定 Oracle 驱动,完善对 Oracle 数据类型的支持。

03. 详解核心特性和重要改进

3.1 深入解读

Flink CDC 2.4 版本带来了很多重要的改进和特性,本文挑选最重要的五个进行进一步解读。

Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本,# Flink,flink,大数据

1、新增 Vitess CDC 连接器

Vitess [3] 是一个用于部署,扩展和管理大型 MySQL 实例集群的数据库解决方案。

Vitess 的 VStream 是一个变更事件订阅服务,它能够提供与来自 Vitess 集群底层 MySQL 分片的二进制日志相同的信息。下游可以订阅一个 keyspace 的多个分片,很方便的实现 Vitess 的下游 CDC 处理工具。Vitess CDC 连接器利用 VStream 获取数据变更消息并发送,目前只支持读取增量阶段的变更同步,相当于仅支持 latest 的启动模式。

Vitess CDC 连接器的支持背后还有个小故事,该 Connector 是来自 Vinted 的 Simonas Gelazevicius 开发,秉持 upstream first 的开源贡献精神,这位贡献者从 2.0 版本就请求社区合并。但是这个数据源国内用户非常少,各个Maintainer 都不熟悉其技术细节,所以一直没能合并到社区主干分支。Simonas Gelazevicius 在 Flink CDC 社区每发布一个版本后都会主动 rebase PR, 这股坚持打动了社区全体 Maintainer 成员,社区 Maintainer 任庆盛和方盛凯主动学习 Vitess 相关技术,帮助 review 并改进 PR。最终该连接器由贡献者Simonas Gelazevicius, Gintarasm ,方盛凯和任庆盛共同完成。

2、PostgreSQL CDC 和 SQL Server CDC连接器接入增量快照框架

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

Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本,# Flink,flink,大数据

3、PostgreSQL CDC 连接器支持增量快照原理

PostgreSQL CDC 连接器需要结合 logical decoding [4] 功能读取 PostgreSQL 事务日志中的变更数据,这需要启动一个在整个集群中唯一的 Replication Slot,并在 output plugin [5] 的帮助下处理这些变更,通过记录读取到的 WAL 位点来实现增量阶段的切换和故障恢复。

增量快照框架除了在增量阶段需要读取变更数据,在全量阶段对每个 SnapshotSplit 也需要启动 Backfill Task 同步做快照时发生的变更。为了避免 Replication Slot 出现冲突,PostgreSQL CDC 连接器采用以下方法建立 Slot。首先 ‘slot.name’ 配置项为必填,需要用户指定,这里指定的 slot name 会用在增量阶段启动的 Slot,并且这个 Slot 在作业启动时就会创建,在作业停止后也不会删除,以此来保证增量阶段读到启动后完整的变更数据,并可以从 Checkpoint 重启。对于全量阶段每个 Backfill Task 的 Slot,会使用“slotname_subTaskId”的命名风格,为了避免冲突和浪费 Slot 资源,这些 Slot 将会在全量读取停止后删除。

4、SQL Server CDC连接器支持增量快照原理

SQL Server CDC 连接器通过变更数据捕获功能 [6] 读取指定数据库和表的变更数据,并存到专门建立的 change table 中。这需要对指定的数据库和表开启 CDC 功能,来获取行级别的变更。通过记录数据库日志的 LSN (Log Sequence Number),来实现增量阶段的切换和故障恢复。

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

5、增量快照框架支持自动释放资源

Flink CDC 的增量快照框架有两个主要阶段:全量阶段和增量阶段。这两个阶段的并行度并不相同,全量阶段支持多并行度,加快大量数据的同步过程,增量阶段读取变更日志,需要使用单并发保证事件的顺序和正确性。在全量阶段读取结束后,由于增量阶段只需要一个并发,会出现大量的空闲 Reader,比较浪费资源。2.4 版本使用增量快照连接器时,支持配置打开自动关闭空闲 Reader 的功能来关闭这些空闲 Reader。由于这个功能依赖于 Flink 1.14 之后支持的 Checkpoint on finished Task 特性,所以只支持在 Flink 1.14 或更新的 Flink 版本上使用。

6、MySQL CDC 连接器功能更新

作为社区最受用户关注的 MySQL CDC 连接器,2.4 版本中社区引入了一些高级特性,具体包括:

  1. 支持无主键表

    MySQL CDC 连接器 2.4 版本支持使用无主键表,相比于有有主键的 MySQL 表,无主键表存在一些使用上需要额外注意的事项。无主键表使用时需要通过 ‘scan.incremental.snapshot.chunk.key-column’ 配置指定一列作为分片列,用于将表分为多个分片进行同步,建议选择有索引的列作为分片列,使用无索引的列将会导致全量阶段多并发同步时使用表锁。其次,选择的分片列需要保证不存在数据的更新操作(比如从 1 更新到 2),如果存在更新操作,则只能保证 At-Least-Once 语义。

  2. 支持新增表实时不断流

    MySQL CDC 之前在处理新增表时,原有的实时同步链路会发生断流现象,需要等待新增加表的全量读取结束后,才会继续进行同步,会对延迟敏感的用户造成较大影响。例如,新增加的表历史数据比较多,完成新增表的全量同步需要花费 30 分钟,那么对于已经处于增量阶段的表,将需要等待 30 分钟后才可以继续同步属于该表的增量数据。2.4 版本对新增表的处理逻辑进行进一步优化,确保新增加的表的全量阶段不会影响已有的实时同步链路,极大地提升了用户体验。

  3. 问题修复

    2.4 版本中,MySQL CDC 连接器对社区用户反馈的使用问题进行了修复,如指定 Binlog 位点消费无法从 savepoint 启动,数据库存在特殊字符无法处理,大小写敏感导致的分片错误问题等。

3.2 其他改进

Debezium 版本依赖升级到 1.9.7.Final 版本,引入对应 Debezium 版本的新功能和修复。

Flink CDC 2.4 版本兼容了 Flink 1.13 ~ 1.17 五个大版本,极大地降低用户 Connector 的升级和运维成本。

OceanBase CDC 连接器支持 JDBC 参数设置,支持指定驱动,完善对 Oracle 数据类型的支持,同时修复了异常重连总是失败等问题。

MongoDB CDC 支持指定时间戳消费数据,支持 mongodb + srv 连接协议,并修复如无法解析带连字符的库名,‘poll.await.time.ms’ 配置未生效,解析 DDL 出现空指针等问题。

Oracle CDC 修复了全量阶段存在的数据正确性问题。

所有 CDC 连接器支持打印配置信息,便于排查问题。

04. 未来规划

Flink CDC 开源社区的发展,得益于全体贡献者的无私贡献和 Maintainer 成员出色的社区工作,更离不开广大 Flink CDC 用户群体的积极使用和反馈报错。Flink CDC 社区将会坚持做好开源社区的建设, 当前社区正在规划 2.5 版本[7], 欢迎贡献者和用户积极反馈,在接下来的版本,社区主要方向会围绕下述四个方面展开:

  • 丰富数据源

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

  • 优化增量快照框架

    对增量快照框架接入中遇到的问题进行优化,各个 CDC 连接器在增量快照框架可重用的代码进行提取整理。

  • 完善限流与监控

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

  • 更丰富的使用方式

    支持 At least once 语义,支持 Snapshot only 的启动模式等,可以为使用者提供更多的场景应用。

  • 收敛支持的 Flink 版本

    随着 Flink 版本逐渐增多,CDC 为兼容多个Flink版本的维护压力也逐渐增加。参考目前 Flink 连接器的规则[8],在后续版本中,CDC 连接器将会考虑仅支持 Flink 最新的 3-4 个版本。

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

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

[3] https://vitess.io/

[4] https://www.postgresql.org/docs/current/logicaldecoding-explanation.html

[5] https://www.postgresql.org/docs/current/logicaldecoding-output-plugin.html

[6] https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/about-change-data-capture-sql-server?view=sql-server-2017

[7] https://github.com/ververica/flink-cdc-connectors/issues/2239

[8] https://cwiki.apache.org/confluence/display/FLINK/Externalized+Connector+development#ExternalizedConnectordevelopment-Flinkcompatibility文章来源地址https://www.toymoban.com/news/detail-517747.html

到了这里,关于Flink CDC 2.4 正式发布,5分钟了解CDC 2.4新内容,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Flink 1.15正式发布

    Apache Flink 核心概念之一是流 (无界数据) 批 (有界数据) 一体。 流批一体极大的降低了流批融合作业的开发复杂度。在过去的几个版本中,Flink 流批一体逐渐成熟,Flink 1.15 版本中流批一体更加完善,后面我们也将继续推动这一方向的进展。目前大数据处理的一个趋势是越来越

    2024年01月20日
    浏览(32)
  • Java 22正式发布,一文了解全部新特性

    就在昨晚,Java 22正式发布!该版本提供了 12 项功能增强,其中包括 7 项预览功能和 1 项孵化器功能。它们涵盖了对 Java 语言、API、性能以及 JDK 中包含的工具的改进。 下面就来一起学习一下该版本都更新了哪些新特性! JEP 456 - 未命名变量和模式:当需要但未使用变量声明或

    2024年03月20日
    浏览(36)
  • SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka

    最近做的一个项目,使用的是pg数据库,公司没有成熟的DCD组件,为了实现数据变更消息发布的功能,我使用SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka。 监听数据变化,进行异步通知,做系统内异步任务。 架构方案(懒得写了,看图吧): -- 创建pg 高线数据同步用

    2024年02月02日
    浏览(33)
  • 大数据学习之Flink,10分钟带你初步了解Flink

    目录 前摘 一、认识Flink的Logo​编辑 二、了解Flink的起源 三、了解Flink的发展 四、明白Flink的定位 五、Flink主要的应用场景 六、流式数据处理的发展和演变 1. 流处理和批处理 2. 传统事务处理 2.1传统事务处理架构​编辑 3. 有状态的流处理 4. Lambda 架构 5. 新一代流处理器 七、

    2024年02月20日
    浏览(36)
  • Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

    01 Flink CDC 简介 Flink CDC  [ 1] 是基于数据库的日志 CDC 技术,实现了全增量一体化读取的数据集成框架。配合 Flink 优秀的管道能力和丰富的上下游生态,Flink CDC 可以高效实现海量数据的实时集成。 作为新一代的实时数据集成框架,Flink CDC 具有全增量一体化、无锁读取、并行读

    2024年02月01日
    浏览(26)
  • 微软Windows 11正式发布!一文带你了解免费升级方法、最低系统要求

    2.备份用户所有的重要文件、应用程序和数据。 3.在用户的Windows 10电脑上,进入设置更新和安全Windows更新。 4.检查更新。 5.如果有免费的Windows 11升级,用户会看到一个下载和安装的选项。 点击“下载和安装”后,按照屏幕上的提示,配置Windows 11设置。 如果用户没有看到免

    2024年03月26日
    浏览(85)
  • 大数据学习之Flink、10分钟了解Flink的核心组件以及它们的工作原理

     第一章、Flink的容错机制 第二章、Flink核心组件和工作原理 第三章、Flink的恢复策略 第四章、Flink容错机制的注意事项 第五章、Flink的容错机制与其他框架的容错机制相比较 目录 第二章、Flink核心组件和工作原理 Ⅰ、核心组件 1. Checkpoint组件: 2. Savepoint组件: 3. Barrier组件

    2024年01月23日
    浏览(28)
  • 【Flink-CDC】Flink CDC 介绍和原理概述

    CDC是( Change Data Capture 变更数据获取 )的简称。 核心思想是, 监测并捕获数据库的变动(包括数据 或 数据表的插入INSERT、更新UPDATE、删除DELETE等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。 CDC 主要分为基于查询和基于

    2024年01月20日
    浏览(33)
  • hadoop3.2.4集成flink 1.17.0

    flink安装部署有三种方式 local:单机模式,尽量不使用 standalone: flink自带集群,资源管理由flink集群管理,开发环境测试使用,不需要hadoop集群 flink on yarn: 把资源管理交给yarn实现,计算机资源统一由Haoop YARN管理,生产环境测试,需要先启动hadoop集群。(这里分为可以继续细分

    2024年02月17日
    浏览(32)
  • Flink学习13-Flink CDC

    一、CDC简介 cdc全称 Change Data Capture 变更数据捕获。通俗来讲只要能捕获到变更的数据的技术都可以称为cdc。常见的开源技术有以下几种: canal:https://github.com/alibaba/canal maxwell:https://github.com/zendesk/maxwell Debezium:https://github.com/debezium/debezium flink-cdc:https://github.com/ververica/fli

    2024年01月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包