关于后端:Flink-CDC-24-正式发布新增-Vitess-数据源更多连接器支持增量快照升级-Debezium-版本

36次阅读

共计 6163 个字符,预计需要花费 16 分钟才能阅读完成。

一、Flink CDC 简介

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

作为新一代的实时数据集成框架,Flink CDC 具备全增量一体化、无锁读取、并行读取、表构造变更主动同步、分布式架构等技术劣势,同时社区提供了欠缺的中英文文档反对 [2]。在 Flink CDC 开源的三年工夫里,社区倒退迅速,目前 Flink CDC 社区已有 91 位贡献者,7 位 Maintainer 成员,社区钉钉群 (群号: 33121212) 超过 8900 人。

二、Flink CDC 2.4 概览

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

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

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

本文通过下图带你 10 分钟疾速理解 Flink CDC 2.4 版本的重大改良和外围个性。

  • 新增 Vitess CDC 连接器,反对 Vitess 增量数据同步。
  • PostgreSQL CDC,SQL 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 数据类型的反对。

三、详解外围个性和重要改良

3.1 深刻解读

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

  • 新增 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,方盛凯和任庆盛共同完成。

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

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

  • 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 将会在全量读取进行后删除。

  • SQL Server CDC 连接器反对增量快照原理

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

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

  • 增量快照框架反对主动开释资源

Flink CDC 的增量快照框架有两个次要阶段:全量阶段和增量阶段。这两个阶段的并行度并不相同,全量阶段反对多并行度,放慢大量数据的同步过程,增量阶段读取变更日志,须要应用单并发保障事件的程序和正确性。在全量阶段读取完结后,因为增量阶段只须要一个并发,会呈现大量的闲暇 Reader,比拟浪费资源。2.4 版本应用增量快照连接器时,反对配置关上主动敞开闲暇 Reader 的性能来敞开这些闲暇 Reader。因为这个性能依赖于 Flink 1.14 之后反对的 Checkpoint on finished Task 个性,所以只反对在 Flink 1.14 或更新的 Flink 版本上应用。

  • 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 连接器反对打印配置信息,便于排查问题。

四· 将来布局

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 个版本。

致谢:

感激社区的 Maintainer 成员阮航,徐榜江,孙家宝,龚中强,任庆盛为该版本所做的社区和发版工作。感激所有为该版本做出突出贡献的 Tigran Manasyan,川粉,Xiao Meng,Yaroslav Tkachenko, Simonas Gelazevicius, gintarasm 等 32 位社区贡献者。

贡献者列表 (按字母排序):

Hang Ruan,He Wang,JasonLee,Jiabao Sun,Jingsong Lee,Xiao Meng,Leonard Xu,Qingsheng Ren,Robert Metzger,Sergey Nuyanzin,Simonas Gelazevicius,Yaroslav Tkachenko,Tigran Manasyan,Tyrantlucifer,ZhongLinLeo,bb chen,ehui,emhui,gintarasm,gongzhongqiang,liangyaohui97,lin.zl,molsionmo,skylines,tison,wallkop,wangxiaojing,wuzhenhua,xixingya,zhaomin,zhuyuan03,含风

附录

[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-expla…

[5] https://www.postgresql.org/docs/current/logicaldecoding-outpu…

[6] https://learn.microsoft.com/en-us/sql/relational-databases/tr…

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

[8]https://cwiki.apache.org/confluence/display/FLINK/Externalize…

流动预报|6 月 29 日 Flink CDC 2.4 新版本公布,专家在线解读

流动详情

工夫: 6 月 29 日 19:00

直播观看链接:https://gdcop.h5.xeknow.com/sl/8T3ku

点击下方图片扫码中转直播间:

观看直播的小伙伴们还能一起退出到“答疑环节中”跟大咖在线交换哦!

「直播过程中,同学们能够在评论区踊跃发问,讲师将在分享完结后对立解答。分享完结后有 10 分钟的答疑互动环节!」

理解更多 Flink CDC 相干技术问题,可扫码退出社区钉钉交换群~

<p style=”text-align:center”><img src=”https://img.alicdn.com/imgextra/i1/O1CN01UkstMC1b5f1VpCfgh_!!6000000003414-0-tps-1170-1530.jpg” alt=”img” style=”zoom:30%;” /></p>


为进一步帮忙开发者学习应用 Flink,Apache Flink 中文社区近期发动 Flink-Learning 实战营我的项目。本次实战营通过实在乏味的实战场景帮忙开发者实操体验 Flink,课程包含实时数据接入、实时数据分析、实时数据利用的场景实。并联合小松鼠助教模式,全方位帮忙入营开发者轻松玩转 Flink, 点击下方图片扫码即刻入营

点击中转直播间


更多内容

流动举荐阿里云基于 Apache Flink 构建的企业级产品 - 实时计算 Flink 版现开启流动:0 元试用 实时计算 Flink 版(5000CU* 小时,3 个月内)理解流动详情:https://click.aliyun.com/m/1000372333/

正文完
 0