【Flink】快速理解 FlinkCDC 2.0 原理

快速理解 FlinkCDC 2.0 原理

要详细理解 Flink CDC 原理可以看看这篇文章,讲得很详细:深入解析 Flink CDC 增量快照读取机制 (https://juejin.cn/post/7325370003192578075)。

FlnkCDC 2.0:

Flink 2.x 引入了增量快照读取机制,还带来了一些其他功能的改进。以下是对Flink 2.x的主要功能的介绍:

  1. 增量快照读取:Flink 2.x引入了增量快照读取机制,这是一种全新的数据读取方式。该机制支持并发读取和以chunk为粒度进行checkpoint。在增量快照读取过程中,Flink首先根据表的主键将其划分为多个块(chunk),然后将这些块分配给多个读取器并行读取数据。这一机制极大地提高了数据读取的效率。
  2. 精确一次性处理:Flink 2.x引入了Exactly-Once语义,确保数据处理结果的精确一次性。MySQL CDC 连接器是Flink的Source连接器,可以利用Flink的checkpoint机制来确保精确一次性处理。
  3. 动态加表:Flink 2.x支持动态加表,通过使用savepoint来复用之前作业的状态,解决了动态加表的问题。
  4. 无主键表的处理:Flink 2.x对无主键表的读取和处理进行了优化。在无主键表中,Flink可以通过一些额外的字段来识别数据记录的唯一性,从而实现准确的数据读取和处理。

通过 MysqlCDC 快速理解 FlinkCDC 2.0 原理

这里将 Mysql Binlog CDC 流程简单分成了六个阶段,通过这六个阶段可以应该大致了解 Flink CDC 原理。

Snapshot 准备阶段:
SourceEnumerator 根据配置从数据库中获取每张表主键的最大值,然后根据每张表主键最大值和配置的粒度大小分为若干个键值范围 Chunk,然后将 Chunk 和表名等信息封装成 MySqlSnapshotSplit,发送给多个 MysqlSourceReader。

Chunk 读取阶段:
MysqlSourceReader 创建 MySqlSnapshotSplitReadTask 快照读取任务, 任务通过 MySqlSnapshotSplit 的 Chunk 的键值范围从数据库中 SQL 查询并保存相关数据,查询数据前后还会记录 binlog 的偏移量,也就是 binlog 当前的位置,查询前的为低位偏移量,查询后的为高位高位偏移量,用于修正部分中途修改的数据。
在这里插入图片描述

在这里插入图片描述

Binlog Upsert 修正数据阶段:
SQL 获取在读取 Chunk 数据时 binlog 改动的数据, 也就是获取 binlog 低位到高位偏移量的修改的数据,如果修改的数据键值在 chunk 范围内,那么修正 chunk 范围内的数据,这里的修正只会修正读取 chunk 过程中的一部分变动数据,后面的 Binlog 阶段将会修正其他遗漏的变动数据。

在这里插入图片描述
在这里插入图片描述

Snapshot 完成并准备开启 Binlog 阶段:
Chunk 读取阶段 和 Binlog Upsert 阶段都完成后,将修正后的数据发送给下游,并将完成的 SplitId 以及每个 Chunk 读取过程中的 Binlog 高位偏移量发送给 SourceEnumerator。
SourceEnumerator 在所有快照数据读取完后,创建 MySqlBinlogSplit,并将 MySqlBinlogSplit 发送给 MysqlSourceReader。
MysqlSourceReader 收到 MySqlBinlogSplit 后,向 SourceEnumerator 请求 Binlog 元数据信息。
SourceEnumerator 将已完成的 SplitId 和高位偏移量封装成 Binlog 元数据中发送给 MysqlSourceReader。

Binlog 阶段:
MySqlSplitReader 开始读取 MySqlBinlogSplit, 它从 Binlog 元数据中读取所有已完成的 Chunk 信息和高位偏移量,开始从 Binlog 最低位偏移量读取并处理数据,处理数据时只需要处理读取的偏移量大于当前数据所在 Chunk 的高位偏移量的数据,原因如下:
假设有已完成的 SnapshotSplit 信息 ssp,它的 Chunk 范围为 (id1,id2), 偏移量高低位为 (lw1, hw1)。
这时读取 binlog 的键值在 Chunk(id1, id2) 范围内, 偏移量为 k,开始做对数据做以下判定:
偏移量 k < lw1 的数据, 这部分数据在之前快照读取 Chunk(id1, id2) 前已经对完成了数据的修改,而快照读取 Chunk(id1, id2) 时是已经修改后的数据,可以不用管。
偏移量 lw1 <= k <= hw1 的数据,这部分数据在之前快照读取 Chunk(id1, id2) 后的 binlogUpsert 操作里面,已经完成了对数据的修改,可以不用管。
偏移量 k > hw1的数据,说明在读完 ssp 后又对 Chunk(id1, id2) 范围数据进行修改了,需要修正数据。
在这里插入图片描述

Pure Binlog Phase 阶段:
当达到了所有已完成的 SnapshotSplit 中最大的高位偏移量后,将进入 Pure Binlog Phase阶段,这时将不会对 binlog 进行任何比较,将直接发送给下游。

引用:

深入解析 Flink CDC 增量快照读取机制: https://juejin.cn/post/7325370003192578075。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为悦盒【EC6108V9】通用刷机固件及详细教程

固件特点&#xff1a; 高度精简&#xff0c;删除原机 IPTV 等 APP。删除在线升级功能。支持多屏互动功能。内置 U 盘自动安装程序功能&#xff0c;或用当贝市场-文件管理安装程序。 自动安装说明&#xff1a;在 U盘 根目录新建名为“YueMe_BOX”的文件夹&#xff0c;把需要安装…

算法的NPU终端移植:深入探讨与实践指南

目录 ​编辑 引言 算法选择 模型压缩 权重剪枝 量化 知识蒸馏 硬件适配 指令集适配 内存管理 并行计算 性能测试 速度测试 精度测试 功耗测试 案例分析 图像识别算法的NPU移植案例 结论 引言 在人工智能技术的浪潮中&#xff0c;神经网络处理器&#xff08;…

尚硅谷学习笔记——Java设计模式(一)设计模式七大原则

一、介绍 在软件工程中&#xff0c;设计模式&#xff08;design pattern&#xff09;是对软件设计中普遍存在&#xff08;反复出现&#xff09;的各种问题&#xff0c;提出的解决方案。我们希望我们的软件能够实现复用性、高稳定性、扩展性、维护性、代码重用性&#xff0c;所以…

CentOS7如何同时安装Java8和Java17

Java17是长期支持版本&#xff0c;升级到Java17的公司越来越多&#xff0c;特别是Spring Boot3.0最低要求Java17&#xff0c;放弃了对Java8的支持。 但是在升级的时候&#xff0c;还不能保证服务器上的所有Java进程都同步升级&#xff0c;所以系统需要同时安装Java8和Java17。 …

Python Turtle召唤童年:《哆啦A梦的奇妙世界》

Python Turtle召唤童年&#xff1a;《哆啦A梦的奇妙世界》 &#x1f438; 前言 &#x1f438;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f438; 前言 &#x1f438; 欢迎来到 《哆啦A梦的奇妙世界》&#xff0c;在这个博客里&#xff0c;我们…

Java接收LocalDateTime、LocalDatee参数

文章目录 引言I java服务端的实现1.1 基于注解规范日期格式1.2 json序列化和反序列化全局配置自动处理日期格式化II 知识扩展: 枚举的转换和序列化III 签名注意事项引言 应用场景举例:根据时间段进行分页查询数据 前后端交互日期字符串统一是yyyy-MM-dd HH:mm:ss 或者yyyy-M…

LayaBox1.8.4实现战争迷雾效果

实现思路&#xff1a; 和Unity实现思路一样&#xff0c;可看我写的下面的一篇文章 战争迷雾FogOfWar---Unity中实现-CSDN博客 根据碰撞点可以计算出需要透明的位置&#xff0c;怎样计算如下&#xff1a; 根据迷雾mesh的长宽和纵向横向的的像素数可以得出&#xff0c;每个小方…

linux安装部署mysql资料

安装虚拟机 等待检查完成 选择中文 软件选择 网络和主机名 开始安装 设置root密码 ADH-password 创建用户 等待安装完成 重启 接受许可证 Centos 7 64安装完成 安装mysql开始 Putty连接指定服务器 在 opt目录下新建download目录 将mysql文件传到该目录下 查看linux服务器的…

【计算机系统基础】程序数据与ELF数据节

目录 1. 任务描述 2. 实验阶段 2.1 反汇编获取重定位记录 2.2 分析 2.3 查看节头表&#xff0c;确定偏移量 2.4 使用hexedit工具修改指定内容 1. 任务描述 修改二进制可重定位目标文件“phase1.o”的数据&#xff08;.data&#xff09;节内容&#xff08;不允许修改其他节…

csp-j初赛模拟试题(解析)

题目&#xff1a; 在 C中&#xff0c;以下哪个关键字用于实现多态性&#xff1f; A. virtualB. staticC. externD. const 以下数据结构中&#xff0c;不属于线性结构的是&#xff08; &#xff09;。 A. 栈B. 队列C. 二叉树D. 链表 一个有 8 个顶点的无向图&#xff0c;若每个…

OSG开发笔记(三十五):OsgUtil::Optimizer:优化场景策略,提升显示性能和渲染效率

​若该文为原创文章&#xff0c;未经允许不得转载 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/144092964 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 长沙红胖子Qt…

Axure RP教程:创建高效用户界面和交互

Axure RP是一款广受好评的软件&#xff0c;专门用于设计精致的用户界面和交互体验。这款软件提供了众多UI控件&#xff0c;并根据它们的用途进行了分类。与此同时&#xff0c;国产的即时设计软件作为Axure的替代品&#xff0c;支持在线协作和直接在浏览器中使用&#xff0c;无需…

1 ISP一键下载

BOOT0BOOT1启动模式说明0X用户Flash用户闪存存储器&#xff0c;也就是Flash启动10系统存储器系统存储器启动&#xff0c;串口下载11SRAM启动SRAM启动&#xff0c;用于在SRAM中调试代码 闪存存储器 是STM32 的内置FLASH,一般使用JTAG或者SWD模式下载程序时&#xff0c;就是下载…

【数据结构与算法】链表之美-复杂链表的复制与链表的插入排序

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 1.复杂链表的复制 题目&#xff1a;请实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中…

统计字符串中单词出现的次数

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <map> #include <string> int main() {std::string s;//std::cin >> s;s " aaa aaaaa a aa aaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaa Hi I am a person a…

comfyui使用记录-PuLID_Flux模型使用

文章目录 1.PuLID模型简介&#xff1a;2.PuLID_Flux 工作流的部署流程安装pulid节点 3.部署遇到的一些问题加载这个节点错误&#xff1a;PulidFluxInsightFaceLoaderPulidFluxEvaClipLoader加载错误 4.PuLID模型的出图效果5.一些参数的设置用到的提示词 1.PuLID模型简介&#x…

threeJs学习 贴图 :地球

效果图&#xff1a; 贴图以后的效果&#xff1a; vue代码&#xff1a; <template><div class"scene_box"><p>创建纹理贴图TextureLoader</p><div class"canvas"></div></div> </template><script s…

联想品牌的电脑 Bios 快捷键是什么?如何进入 Bios 设置?

在某些情况下&#xff0c;您可能需要通过U盘来安装操作系统或进行系统修复。对于联想电脑用户来说&#xff0c;了解如何设置U盘作为启动设备是非常有用的技能之一。本文简鹿办公将指导您如何使用联想电脑的 U 盘启动快捷键来实现这一目标。 联想笔记本 对于大多数联想笔记本电…

SmartSQL:一款方便、快捷的数据库文档查询、导出工具

&#x1f6a9; 项目介绍 SmartSQL 是一款方便、快捷的数据库文档查询、导出工具&#xff01;从最初仅支持SqlServer数据库、CHM文档格式开始&#xff0c;通过不断地探索开发、集思广益和不断改进&#xff0c;又陆续支持Word、Excel、PDF、Html、Xml、Json、MarkDown等文档格式…

Transformer?Attention?——Are All You Need!

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文主要较为深入地讲述 transformer 模型及 attention 机制等相关深度学习的知识&#xff0c;主要介绍模型结构、原理等。Transformer 属于是当下比较流行和创新的深度学习的基础模型架构&#xff0c;主要应用于自然语言处理&a…