【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。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI智能体崛起:从“工具”到“助手”的进化之路

目录 AI智能体的崛起 AI智能体的定义与决策模型 AI智能体的特点与优势 AI智能体的应用与类型 面临的挑战 未来展望 近年来&#xff0c;人工智能领域的焦点正从传统的聊天机器人&#xff08;Chat Bot&#xff09;快速转向更具潜力的AI智能体&#xff08;AI Agent&#xff…

RAG架构类型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

jmeter基础06_(练习)常见的http请求

课程大纲 上节课已经尝试进行了get请求&#xff0c;获取网站http://httpbin.org/的首页。 本节课使用网站“httpbin.org”演示几种基础的http请求。post、put、delete方法使用方法相同&#xff0c;所以仅以post为例来演示。 本节课所有请求仅填写&#xff1a;请求行、请求体。j…

SycoTec 4060 ER-S德国高精密主轴电机如何支持模具的自动化加工?

SycoTec 4060 ER-S高速电主轴在模具自动化加工中的支持体现在以下几个关键方面&#xff1a; 1.高精度与稳定性&#xff1a;SycoTec 4060 ER-S锥面跳动小于1微米&#xff0c;确保了加工过程中的极高精度&#xff0c;这对于模具的复杂几何形状和严格公差要求至关重要。高精度加工…

MySQL系列之数据类型(Numeric)

导览 前言一、数值类型综述二、数值类型详解1. NUMERIC1.1 UNSIGNED或SIGNED1.2 数据类型划分 2. Integer类型取值和存储要求3. Fixed-Point类型取值和存储要求4. Floating-Point类型取值和存储要求 结语精彩回放 前言 MySQL系列最近三篇均关注了和我们日常工作或学习密切相关…

Spring |(五)IoC/DI的注解开发

文章目录 &#x1f4da;核心容器&#x1f407;环境准备&#x1f407;容器的创建方式&#x1f407;bean的三种获取方式&#x1f407;BeanFactory的使用 &#x1f4da;IoC/DI注解开发&#x1f407;环境准备&#x1f407;注解开发定义bean&#x1f407;纯注解开发模式&#x1f407…

Linux -日志 | 线程池 | 线程安全 | 死锁

文章目录 1.日志1.1日志介绍1.2策略模式1.3实现日志类 2.线程池2.1线程池介绍2.2线程池的应用场景2.3线程池的设计2.4代码实现2.5修改为单例模式 3.线程安全和函数重入问题3.1线程安全和函数重入的概念3.2总结 4.死锁4.1什么是死锁4.2产生死锁的必要条件4.3避免死锁 1.日志 1.…

AI时代的PPT革命:智能生成PPT工具为何备受青睐?

在日常工作和学习中&#xff0c;PPT是我们不可或缺的表达工具。制作一份精美的PPT常常需要耗费数小时&#xff0c;甚至几天的时间。从选择主题到调整排版&#xff0c;琐碎的细节让人筋疲力尽。但现在一种名为“AI生成PPT”的技术正悄然崛起&#xff0c;彻底颠覆了传统PPT制作的…

结构方程模型(SEM)入门到精通:lavaan VS piecewiseSEM、全局估计/局域估计;潜变量分析、复合变量分析、贝叶斯SEM在生态学领域应用

目录 第一章 夯实基础 R/Rstudio简介及入门 第二章 结构方程模型&#xff08;SEM&#xff09;介绍 第三章 R语言SEM分析入门&#xff1a;lavaan VS piecewiseSEM 第四章 SEM全局估计&#xff08;lavaan&#xff09;在生态学领域高阶应用 第五章 SEM潜变量分析在生态学领域…

CANopen多电机控制的性能分析

在 CANopen 总线上控制多台电机并实时获取位置和速度信息&#xff0c;通信速度受到总线带宽、电机数量、数据刷新频率等因素影响。在 LabVIEW 开发中&#xff0c;利用 PDO 优化数据传输&#xff0c;合理设置刷新周期&#xff0c;并结合高效任务管理&#xff0c;可以显著提高多电…

图论入门编程

卡码网刷题链接&#xff1a;98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m map(int,input().split()) graph [[0 for _ in range(n1)] for _ in range(n1)]for _ in range(m): …

政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例

目录 Cusor的主要特点 Cusor实操 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; Cursor 是 Visual Studio Code 的一个分支。这使我们能够…

Taro 鸿蒙技术内幕系列(三) - 多语言场景下的通用事件系统设计

基于 Taro 打造的京东鸿蒙 APP 已跟随鸿蒙 Next 系统公测&#xff0c;本系列文章将深入解析 Taro 如何实现使用 React 开发高性能鸿蒙应用的技术内幕 背景 在鸿蒙生态系统中&#xff0c;虽然原生应用通常基于 ArkTS 实现&#xff0c;但在实际研发过程中发现&#xff0c;使用 C…

二,[ACTF2020 新生赛]Include1感谢 Y1ng 师傅供题。

进入靶场后&#xff0c;发现tips可以点击 点击后进入此页面 猜测此为文件上传漏洞,构造payload&#xff0c;并成功得到base64编码后的源码 详解payload&#xff1a; php://filter/readconvert.base64-encode/resourceflag.php 1.php://filter是PHP中的一个流封装协议&#xf…

EXTI配置流程 含中断延时消抖点亮小灯

如图可知&#xff0c;配置流程分成以下一个部分 ①使能GPIO时钟 __HAL_RCC_GPIOA_CLK_ENABLE();// 打开时钟 ②初始化利用 HAL_GPIO_Init 一步到位&#xff0c;可以初始化外设GPIO的一切 4个参数 &#xff08;引脚 Pull 这里选择的模式是从下面这几个里面选 速度&#x…

AIGC-----AIGC在虚拟现实中的应用前景

AIGC在虚拟现实中的应用前景 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的应用也迎来了新的契机。AIGC与VR的结合为创造沉浸式体验带来了全新的可能性&#xff0c;这种组合不仅极大地降低了VR内容的…

Docker部署mysql:8.0.31+dbsyncer

Docker部署mysql8.0.31 创建本地mysql配置文件 mkdir -p /opt/mysql/log mkdir -p /opt/mysql/data mkdir -p /opt/mysql/conf cd /opt/mysql/conf touch my.config [mysql] #设置mysql客户端默认字符集 default-character-setUTF8MB4 [mysqld] #设置3306端口 port33…

大语言模型LLM的微调代码详解

代码的摘要说明 一、整体功能概述 这段 Python 代码主要实现了基于 Hugging Face Transformers 库对预训练语言模型&#xff08;具体为 TAIDE-LX-7B-Chat 模型&#xff09;进行微调&#xff08;Fine-tuning&#xff09;的功能&#xff0c;使其能更好地应用于生成唐诗相关内容的…

解决SSL VPN客户端一直提示无法连接服务器的问题

近期服务器更新VPN后&#xff0c;我的win10电脑一致无法连接到VPN服务器&#xff0c; SSL VPN客户端总是提示无法连接到服务端。网上百度尝试了各种方法后&#xff0c;终于通过以下设置方式解决了问题&#xff1a; 1、首先&#xff0c;在控制面板中打开“网络和共享中心”窗口&…

《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试

一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器&#xff0c;旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…