Flink CDC 2.2 正式发布,新增功能概述

2023-11-02

一、Flink CDC 2.2 概览

经过3个多月的紧张开发,在社区开发者们的共同努力下,Flink CDC 2.2 版本正式发布了:

Release Release-2.2.0 · ververica/flink-cdc-connectors · GitHub

2.2 版本共有 34 位社区贡献者参与贡献,累计贡献了 110+ commits。一图胜千言,本文通过下图带你一分钟快速了解 Flink CDC 2.2 版本的重大改进和核心特性。





2.2 版本新增 OceanBase,PolarDB-X,SqlServer,TiDB 四种数据源接入,均支持全量和增量一体化同步。至此,Flink CDC 已支持 12 种数据源。

Flink CDC 兼容 Flink 1.13 和 Flink 1.14 两个大版本,2.2 版本的所有 Connector 都支持跑在 Flink 1.13.* 或 Flink 1.14.* 的集群上。

提供增量快照读取框架,方便其他连接器接入,其他连接器采用该框架后,便可以提供无锁算法,并发读取,断点续传等功能。

MySQL CDC 支持动态加表,该功能可以在无需重新读取已有表的基础上,增加需要监控的表,添加的表会自动先同步该表的全量数据再无缝切换到同步增量数据。

MongoDB CDC 支持正则表达式过滤集合,该功能可以让用户在作业中指定所需监控的库名和集合名,用户可以用一个作业中监控多个数据库或多个集合。


二、新增 4 种数据源支持

Flink CDC 2.2 版本新增了 OceanBase CE,PolarDB-X,SqlServer,TiDB 四种数据源接入。其中新增 OceanBase CDC,SqlServer CDC,TiDB CDC 三个连接器,而 PolarDB-X 的支持则是通过对 MySQL CDC 连接器进行兼容适配实现。

OceanBase CE

OceanBase CE[3]是一款开源分布式数据库管理系统,同时支持在线事务处理与在线分析处理。OceanBase CDC 的实现机制是全量部分通过 JDBC 读取表中的历史数据,增量部分则是通过 OceanBase 提供 LogProxy Client 获取增量变更数据。

PolarDB-X

PolarDB-X[4]是一款云原生分布式数据库系统。PolarDB-X 高度兼容 MySQL 系统及生态等特点, 其内部的日志节点提供了完全兼容 MySQL Binlog 格式和协议的增量消费能力。这些特性是的 PolarDB-X 通过适配 MySQL CDC 即可快速接入 Flink CDC,PolarDB-X 的支持正式通过 MySQL CDC 适配实现,这种方式接入代价相对较小,但却可以获取 MySQL CDC 连接器的全部能力。

SqlServer

SqlServer[5]是一种使用广泛的数据库, SqlServer CDC 连接器支持捕获并记录 SqlServer 数据库服务器中发生的行级变更,其原理是使用 SqlServer 自身提供的 CDC 特性,SqlServer自身提供的 CDC 能力可以将数据库中指定的变更存档到指定的 change tables 中。SqlServer CDC 连接器首先通过 JDBC 读取表中的历史数据,再从 change tables 中或缺增量变更数据,从而实现全增量同步。

TiDB

TiDB[6]是一款开源分布式关系型数据库,同时支持在线事务处理与在线分析处理。TiDB CDC 的原理是通过直接读取其底层 TiKV 存储中的全量数据和增量数据实现数据捕获,其中全量部分是通过按 key 划分 range 读取,增量部分使用 TiDB 提供的 CDC Client 获取增量变更数据。



三、详解核心 feature 和重要改进

3.1 核心 feature

提供增量快照读取框架

大家都知道之前只有 MySQL CDC 支持无锁 + 多并发 + 全程断点续传等高级功能,这些功能最开始是在 2.0 版本中为 MySQL CDC 定制的增量快照读取算法实现,2.2 版本将增量快照读取算法抽象成了公共框架,方便其他 connector 接入。





在增量框架完成后,其他 connector 只需要接入这个框架便可以提供无锁算法,并发读取,断点续传的能力。社区提供了一个基于增量快照框架的样例实现[7],开发者可以参考该样例实现一个支持增量快照读取的 CDC Source。


兼容 Flink 1.13 & Flink 1.14

在 2.2 版本之前,Flink CDC 连接器都只对应一个 Flink 大版本,比如很多用户反馈 Flink CDC 2.1 只能在 Flink 1.13 版本的集群上使用,没法在 Flink 1.14 的集群上使用。为了帮用户解决此类问题, Flink CDC 2.2 版本兼容 Flink 1.13.* 和 Flink 1.14.* 两个大版本,这意味 2.2 版本的所有 Connector 既可以跑在 Flink 1.13.* 集群上,又可以跑在 Flink 1.14.* 的集群上。通过提供兼容多版本的能力,让 Flink CDC 在提供 1.14 支持的同时,还极大地降低用户的 connector 管理成本。

MySQL CDC 支持动态加表

设想下假如你一个 CDC pipeline 监控了 4 张表,突然有天业务需求需要再加几张表,你肯定不想另起作业 (浪费资源),那么这个 feature 可以让你在当前作业直接增加需要监控的表。新增表都是先做全量再优雅地切换到增量,遇到新增监控表时不用新起作业,极大地节约了资源。Flink CDC 网站也提供了该功能的使用文档[2],用户在开发时可以参考。

MongoDB CDC 支持自定义数据库,自定义集合

在 2.1 版本里 MongoDB CDC 只能捕获单个集合或者单个 DB 下的全部集合,2.2 版本提供了正则匹配支持,用户可以指定自己需要的多个库和多个表。

MySQL CDC 支持 MySQL 5.6

从 2.2 版本开始, MySQL CDC 支持了 MySQL 5.6 版本,满足低版本的 MySQL 用户需求。


3.2 重要改进
MySQL CDC 通过心跳信息解决 binlog 过期问题

大家可能遇到过 binlog 过期问题,这种问题一般出现在更新缓慢的表身上,这是因为 state 中记录的慢表位点总是最后一次更新的位点,假如 MySQL server 端只保留最近 1 天的 binlog,而某个慢表最近一天都没有更新过,那么 state 中记录的该表位点还是一天以前的位点,当 MySQL server 清理 binlog 后,作业再次访问该位点就会报 binlog 无法找到的错误。2.2 版本中通过心跳信息,将慢表的位点保持与当前 binlog 位点同步,避免了慢表 binlog 过期问题。

MySQL CDC 修复数组越界问题

该问题的根因是 MySQL CDC 依赖的第三方 binlog Client 存在数组越界 Bug,且是一个和网络相关的不稳定复现 Bug。在 Flink CDC 2.2 版本中,社区对这个问题做了修复,提升了MySQL CDC binlog 读取阶段的稳定性。

Oracle CDC 修复 Numeric 类型映射问题

在 2.1 版本,Oracle CDC 在处理 Numeric 类型数据会出现转换异常,在 2.2 版本中做了修复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flink CDC 2.2 正式发布,新增功能概述 的相关文章

  • 【大数据】基于 Flink CDC 高效构建入湖通道

    基于 Flink CDC 高效构建入湖通道 1 Flink CDC 核心技术解析 2 CDC 数据入湖入仓的挑战 2 1 CDC 数据入湖架构 2 2 CDC 数据 ETL 架构 3 基于 Flink CDC 的入湖入仓方案 3 1 Fli
  • FLINK SQL实战案例之商品销量实时统计

    问题导读1 本文的业务包含哪些流程 2 本文难点在什么地方 3 如何通过flink sql实现商品销量实时统计 1 案例背景介绍互联网电商往往需要对订单商品销量实时统计 用于实时大屏展示 库存销量监控等等 本文主要介绍如何通过flink s
  • 完全详解权限系统设计方案

    1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们 程序员新入职一家公司需要找人开通各种权限 比如网络连接的权限 编码下载提交的权限 监控平台登录的权限 运营平台查数据的权限等等 在很多时候我们会觉得这么多繁杂的申请给工作带来不
  • ClickHouse(二十三):Java &Spark读写ClickHouse API

    进入正文前 感谢宝子们订阅专题 点赞 评论 收藏 关注IT贫道 获取高质量博客内容 个人主页 含各种IT体系技术 IT贫道 Apache Doris 大数据OLAP体系技术栈 Kerberos安全认证 CSDN博客 订阅 拥抱独家专题 你的
  • vue 项目中使用 Loading 组件

    当在vue项目中请求后台接口时 常常会使用 loding 过渡数据的加载时间 如果 loading 作为一个全局的加载状态 应该写在项目中的App vue中
  • Apache Flink-使用FlinkSQL开发应用

    这是我毕业设计项目中的一个模块 后面会提供源码 1 数据链路图 这个模块做的是实时统计用户每10分钟内的搜索次数 也就是10分钟级别的搜索频率 用户搜索时 服务端会把搜索数据发送的Kafka中 直接看Flink的部分吧 这部分做的事情就是消
  • 数据仓库之ODS层设计概要

    ODS层辨析 ODS全称是Operational Data Store 即操作数据存储 Inmon VS Kimball Bill Inmon的定义 ODS是一个面向主题的 集成的 可变的 当前的细节数据集合 用于支持企业对于即时性的 操作
  • 数据仓库指标体系实践

    指标体系 1 痛点分析 主要从业务 技术 产品三个视角来看 业务视角 业务分析场景指标 维度不明确 频繁的需求变更和反复迭代 数据报表臃肿 数据参差不齐 用户分析具体业务问题找数据 核对确认数据成本较高 技术视角 指标定义 指标命名混乱 指
  • Flink SQL CDC 的实时增量同步数据

    问题导读 1 怎样实现基于 Flink SQL CDC 的数据同步方案 2 CDC 是否需要保证顺序化消费 3 GROUP BY 结果如何写到 Kafka 传统的数据同步方案与 Flink SQL CDC 解决方案业务系统经常会遇到需要更新
  • 数据治理-数据质量监控

    数据质量人人有责 这不仅仅只是一句口号 更是数据工作者的生命线 数据质量的好坏直接决定着数据价值高低 数据质量管理是指在数据创建 加工 使用和迁移等过程中 通过开展数据质量定义 过程控制 监测 问题分析和整改 评估与考核等一系列管理活动 提
  • Solidity编程开发实例

    Solidity 编程开发实例 Voting 投票 接下来的智能合约教程非常复杂 但展示了很多Solidity的特性 它实现了一个入门的投票合约 当然 电子选举的主要问题是如何赋予投票权给准确的人 并防止操纵 我们不能解决所有的问题 但至少
  • 实战--Kafka入门(一)

    问题导读 1 如何理解消息队列 MessageQueue 2 如何解析Kafka基础架构 3 如何安装Kafka集群 4 Kafka命令行操作有哪些 第1章 Kafka概述1 1定义 Kafka是一个分布式的基于发布 订阅模式的消息队列 主
  • 大数据数据倾斜问题

    数据倾斜 数据倾斜是我们在处理大数据量问题时绕不过去的问题 也是在面试中几乎必问的考点 正常的数据分布理论上都是倾斜的 就是我们所说的 二八原理 80 的财富集中在20 的人手中 80 的用户只使用20 的功能 20 的用户贡献了80 的访
  • 实战--Kafka学习(二)

    问题导读1 Kafka工作包含哪些流程 2 为防止log文件过大导致数据定位效率低下 kafka引入了什么 3 Kafka生产者分区的原因和原则是什么 4 Kafka数据可靠性是如何保证的 3 1 Kafka工作流程及文件存储机制Kafka
  • Flink实战之实时风控规则引擎

    问题导读 1 怎样构建一个风控业务架构 2 风控规则模型有哪些 3 怎样实现Flink CEP 动态更新 一 项目背景 目前钱大妈基于云原生大数据组件 DataWorks MaxCompute Flink Hologres 构建了离线和实时
  • Apache InLong百万亿级数据流处理

    全球最大的开源软件基金会Apache软件基金会正式宣布 Apache InLong成功从Apache孵化器毕业成为社区顶级项目 这个最初由腾讯捐献给Apache社区的一站式海量数据集成框架 可以为大数据开发者提供百万亿级数据流高性能处理能力
  • Springboot程序开启远程DEBUG

    一 远程debug的原理 Spring Boot程序远程debug的原理主要是通过在启动时指定JVM参数来启用远程调试模式 并在调试器中连接到程序所在的调试地址 从而实现对程序的远程调试 具体步骤如下 在运行Spring Boot程序时 在
  • 面试总结(七):大数据与高并发-1

    问题导读 1 秒杀系统的架构设计是怎样的 2 为什么要使用NOSQL NOT ONLY SQL 3 传统RDBMS和NOSQL的区别是什么 大数据与高并发一 秒杀架构设计业务介绍什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢
  • 基于宽表的数据建模

    一 业务背景 1 1 数据建模现状 互联网企业往往存在多个产品线 每天源源不断产出大量数据 这些数据服务于数据分析师 业务上的产品经理 运营 数据开发人员等各角色 为了满足这些角色的各种需求 业界传统数仓常采用的是经典分层模型的数仓架构 从
  • Hive千亿级数据倾斜解决方案

    数据倾斜问题剖析 数据倾斜是分布式系统不可避免的问题 任何分布式系统都有几率发生数据倾斜 但有些小伙伴在平时工作中感知不是很明显 这里要注意本篇文章的标题 千亿级数据 为什么说千亿级 因为如果一个任务的数据量只有几百万 它即使发生了数据倾斜

随机推荐

  • 2021年华数杯数学建模A题电动汽车无线充电优化匹配研究求解全过程文档及程序

    2021年华数杯数学建模 A 题 电动汽车无线充电优化匹配研究 原题再现 电动汽车以环境污染小 噪音低 能源利用效率高 维修方便等优势深受消费者青睐 但现有电动汽车的有线充电方式操作复杂 且存在安全隐患 因此采用无线充电方式对电动汽车进行快
  • 算法——最小生成树与最短路径相关算法

    最小生成树算法 普利姆算法代码参考 https blog csdn net tingting256 article details 50471033 具体如何判断是否构成回路 举例说明 克鲁斯卡尔算法代码参考 https blog csdn
  • ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() ora.l

    小白随手记录改bug过程 if G nodes node source print type G nodes node 开始的代码 报错如标题 分析应该是将一个值与多个值或一个列表中的值相比较 匹配的原因 source是一个列表有多个值 遂
  • 华为OD题目: 预订酒店

    预订酒店 预订酒店 题目 放暑假了 小明决定到某旅游景点游玩 他在网上搜索到了各种价位的酒店 长度为 的数组 A 他的心理价位是X元 请都他篇先出k 个最接近x 元的酒店 n gt k gt 0 并由低到高打印酒店的价格 输入 第一行 n
  • 关于R实现多重插补及其可视化

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 进行多重插补 二 多重插补结果可视化 三 结果评估与结果选择 前言 接着对前文数据集进行多重插补来填补缺失值 利用的是mice包中的airquality数
  • VC++ 程序启动即隐藏

    所谓的隐藏是程序启动后不显示主窗体 网上介绍了很多方法 是否达到效果 众说纷纭 这里只介绍一种在项目中实际应用到的切实可行的方法 这里假设主窗体为CMainDialog 1 变量声明 BOOL m bShowWindow 2 给变量赋初始值
  • 爬虫python能做什么-Python除了能做爬虫之外还能做什么?

    原标题 Python除了能做爬虫之外还能做什么 1 web开发python拥有非常完善的与web服务器进行交互的库 以及大量的免费的前端网页模板 更具优势的是 有非常优秀且成熟的Django Web框架 功能一应俱全 请输入图片描述 2 l
  • Linux-交叉编译-linuxptp

    参考文档 https blog csdn net BUPTOctopus article details 86246335 Linux PTP官网介绍 http linuxptp sourceforge net 1 LinuxPTP源码下载
  • 这30个CSS选择器,你必须熟记(上)

    关注前端达人 与你共同进步 CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计 我们能轻而易举的改变颜色 布局 制作出漂亮的影音效果等等 我们只需要改几行代码 不需要借助任何软件 就能轻而易举的实现 感觉就像魔法师一般 几秒钟就能得
  • 多线程并行 Dijkstra与A*算法结合实践

    多线程并行 Dijkstra与A 算法融合 1 Dijkstra总能找到最优解 但是时间消耗大 本文实现了多线程并行的搜索算法 使得路径搜素时间缩短约1 3 2 H作为传入参数可以使得本算法可以切换为A 也可以变为Dijkstra 3 本算
  • 冒泡法对10个数升序排序

    include
  • 智能合约编写之Solidity的编程攻略|FISCO BCOS超话区块链专场(篇5)

    前 言 作为一名搬砖多年的资深码农 刚开始接触Solidity便感觉无从下手 昂贵的计算和存储资源 简陋的语法特性 令人抓狂的debug体验 近乎贫瘠的类库支持 一言不合就插入汇编语句 让人不禁怀疑 这都已经过了9012年了 居然还有这种反
  • 在这么“内卷”的时期,作为转行python两年的人,想给学python的提个醒....

    近日 顶级互联网外企 PayPal 的秋招要求引发了技术界热议 其官方招聘公众号上显示 本次校招仅面向硕士和博士 消息一出 不少程序员都震惊了 现在已经这么卷了吗 只要硕士 其实 不仅是PayPal 许多世界级外企如微软 Intel在招聘时
  • 移动端Loading的两种方式--RN

    方式一 1 先封装一个 Loading 组件 import React from react import StyleSheet View ActivityIndicator from react native const Loading
  • python pip换源、更新

    pip临时使用 pip install i https pypi tuna tsinghua edu cn simple some package pip更新 使用镜像源更新 pip install pip U pip install i
  • FILE结构体与fd文件标识符

    FILE结构体 我们通常对文件进行操作时 都会使用一些与文件相关的函数 比如 打开文件 FILE fopen const char path const char mode 关闭文件 int fclose FILEE fp 读文件 size
  • Java实战03之idea pringboot 整合log4j2日志,可以多日志文件

    目录 前言 一 先添加pom xml 依赖 二 log4j2 xml 配置 三 application yml 四 加几条测试日志 五 采用注解 log4j2 1 log4j2 xml 配置 2 测试类 编辑 启动项目 编辑 六 打印多个不
  • Python并发编程——多线程thread,多进程process,多协程coroutine的区别与选择

    目录 1 IO Bound与CPU Bound 2 多进程 多线程 多协程的对比 3 如何进行选择 1 IO Bound与CPU Bound IO Bound IO Bound指的是程序的运行效率受计算机IO能力的限制 在程序的运行过程中
  • Java 进程

    目录 什么是进程 操作系统 进程控制块 PCB PCB中的一些属性 pid 进程id 内存指针 文件描述符表 状态 优先级 记账信息 上下文 并行 并发 CPU分配 进程调度 内存分配 内存管理 进程间是如何通信的 什么是进程 如图 当我们
  • Flink CDC 2.2 正式发布,新增功能概述

    一 Flink CDC 2 2 概览经过3个多月的紧张开发 在社区开发者们的共同努力下 Flink CDC 2 2 版本正式发布了 Release Release 2 2 0 ververica flink cdc connectors G