【Flink Flick CDC】学习笔记

news2024/9/20 6:34:16

文章目录

  • Flink
  • Flink CDC
  • 关于转换算子的解释(Transformation)
  • Flink CDC 与 Debezium 有何关系
  • Savepoint 和 Checkpointing
  • Savepoint 和 Checkpointing 的区别 ![请添加图片描述](https://i-blog.csdnimg.cn/direct/8834c721df794978bde12e4e764ed946.png)


Flink

Flink是一个无边界 流式计算引擎。Flink一共有4中API

  • SQL(目前主流都使用这种的,高级用法,不需要上传任何代码,只需要写SQL就好了)

  • Table API【目前公司使用的API(比较低级)】

  • DataSteam/DataSet API【自己写算子】

  • StatefulSteam Processing 【最低版本得,(针对实时性较高得数据计算)】

Flink CDC

是一个基于流的数据集成工具,旨在为用户提供一套功能更加全面的编程接口(API)。
该工具使得用户能够以 YAML 配置文件的形式,优雅地定义其 ETL(Extract, Transform, Load)流程,
并协助用户自动化生成定制化的 Flink 算子并且提交 Flink 作业。 Flink CDC 在任务提交过程中进行了优化,
并且增加了一些高级特性,
如表结构变更自动同步(Schema Evolution)、
数据转换(Data Transformation)、
整库同步(Full Database Synchronization)
以及 精确一次(Exactly-once)语义。

二者关系承上启下,通俗来讲 Flink是计算引擎 CDC 可以理解为是一个“数据连接器”【先统一数据格式,使得Flick可以接受不同类型的数据库的数据】
开源的CDC技术方案对比(只梳理了目前中小型公司常用)

支持功能/产品FlinkCDCDebezuimDataXCanal
CDC机制基于日志基于日志主动查询基于日志
是否支持增量支持支持不支持支持
是否支持全量支持支持支持支持
是否分布式

我公司使用FlickCDC是最优选择,而且社区相比Canal相比长期更加活跃。

关于转换算子的解释(Transformation)

一个的大数据处理的工具肯定会有自己的Transformation,可以理解为每个大数据处理的一个通用的处理逻辑,类似于Hadop的MapReduce… (可以理解为JDK8 Stream 中的一些API)

Flink CDC 与 Debezium 有何关系

1、Flink CDC:Flink CDC 是 Apache Flink 生态系统中的一部分,旨在通过 Flink 连接器实现对数据库中变更数据的捕获。Flink CDC 使得用户可以将数据库中的变更数据作为 Flink 流处理应用程序的输入,从而实现实时数据处理。

2、Debezium:Debezium 是一个独立的开源项目,专注于提供 Change Data Capture(CDC)的解决方案。Debezium 支持多种数据库,包括 MySQL、PostgreSQL、MongoDB 等。它通过连接到数据库的事务日志,实时捕获数据库中的变更,然后将这些变更事件发送到消息队列(如 Apache Kafka)中。

3、Flink CDC 与 Debezium 关系:Flink CDC 可以与 Debezium 集成,将 Debezium 发送到 Kafka 中的变更事件作为 Flink 应用程序的输入。这种集成使得用户可以利用 Debezium 提供的数据库变更捕获能力,并通过 Flink 进行更复杂的实时数据处理。

4、Debezium Connector for Flink:Debezium 还提供了一个特殊的连接器,称为 Debezium Connector for Flink,它允许直接将 Debezium 捕获到的变更事件发送到 Flink 中。这样,用户可以直接从 Flink 中处理 Debezium 产生的 CDC 数据,而不需要经过 Kafka。

总体而言,Flink CDC 和 Debezium 在数据变更捕获方面有一些重叠,但它们的关系是可以互相配合使用的。使用 Debezium 可以提供丰富的数据库支持和 CDC 功能,而使用 Flink 则可以进行更灵活和复杂的流处理

2024年9月11日 1.20.0的版本已经支持了很多的的格式【不仅仅是Debezium】
请添加图片描述
由于使用了FlikCDC 使用了 Debezium 作为连接MYSQL,然后在查看了Debezium 对于SQL 的conntctor的解释:请添加图片描述
说明FlikCDC也是伪装成了MySQL得一个从节点,定时读取二进制binlog文件机械能数据变更以及推送。只不过Debezium铜通过Kafaka得Topic类型进行推送变更消息。

FlickCDC官方文档 中支持可以通过MySQL的配置文件来指定全量同步后进行增量同步,还是全量同步还是指定时间后的binlog文件。

下面翻译了上面不同状态的含义:

  • initial (默认):在第一次启动时对受监视的数据库表执行全量同步,并继续读取最新的
    binlog【也就意味着如果你在初次启动的时候,不指定checkpoint,将重新全量同步】
  • earliest-offset:跳过快照阶段,从可读取的最早 binlog 位点开始读取
  • latest-offset:首次启动时,从不对受监视的数据库表执行快照, 连接器仅从 binlog
    的结尾处开始读取,这意味着连接器只能读取在连接器启动之后的数据更改。
  • specific-offset:跳过快照阶段,从指定的 binlog 位点开始读取。位点可通过 binlog 文件名和位置指定,或者在
    GTID 在集群上启用时通过 GTID 集合指定。
  • timestamp:跳过快照阶段,从指定的时间戳开始读取 binlog 事件

Savepoint 和 Checkpointing

请添加图片描述
Checkpointing:

  • Checkpointing 是 Flink 的自动机制,用于定期对流处理作业的状态进行快照,并将这些快照存储到配置的持久化存储中。
    Checkpointing 确保了作业在发生故障时可以从最近的检查点恢复,保证数据的一致性和作业的容错性。
    Checkpoint 的频率和行为(如精确一次或至少一次处理语义)可以在作业配置中设置。
    Savepoint:

  • Savepoint 是 Flink 作业的手动快照,通常在作业停止时由用户触发,或者可以通过配置自动定期创建。
    Savepoint 可以用于作业的升级、迁移或恢复到特定状态,因为它们包含了作业的完整状态和配置信息。
    Savepoint 是检查点的一种,但通常用于管理目的,而不是实时故障恢复。
    请添加图片描述

文档的意思就是,会有一个所谓算子ID的概念,这个东西是实现SavePoint的核心逻辑,

这个东西和前面的算子(Transformation)是一个东西,当你使用的是一些较高的API的时候,Flink就会随机生成【笔者猜测可能是一个基于Flick分布式节点计算的出的一个值】算子的 ID 通常是内部由 Flink 的作业调度器自动生成和管理的。

这是因为 Flink 的设计理念是让用户专注于逻辑层面的数据处理,而不需要关心底层的执行细节。

给出“highly recommended” (强烈建议 🤣)按照规则分配“算子id”,如果不按照规则来 ,可能会导致未来的版本你所生产的算子id不支持Flink的SavePoint【例如下面】(如何修改自行百度吧 ,这个东西一般不会动)

Operator ID | State
------------+------------------------
source-id   | State of StatefulSource
mapper-id   | State of StatefulMapper

Savepoint 和 Checkpointing 的区别 请添加图片描述

通过文档和上面的大致功能,savePoints和checkpoint的和文档中的解释,最大区别似乎就是这个

  • savePoints【用户触发】
  • checkpoint【Flink触发】

还有一个需要注意的,如果出发了checkpoint 会自动删除,但是savepoint 不会自动删除,除非用户制定了savenpoint的删除时机,还是用户在Flink是第一公民。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows服务管理插件 nssm

NSSM是一个windows下服务管理插件,可以填加、删除、启动、停止服务 1.下载 官网:http://nssm.cc 下载页面:http://nssm.cc/download 直接下载:http://nssm.cc/release/nssm-2.24.zip 2.食用 以填加php8.2为例 2.1.将nssm.ex…

HarmonyOS开发实战( Beta5.0)自定义装饰器实践规范

介绍 本示例介绍通过自定义装饰器在自定义组件中自动添加inspector (布局回调)方法并进行调用。 效果图预览 不涉及 使用说明 在自定义组件上添加自定义装饰器CallbackObserver,并根据参数设置对应的方法名和需要绑定的组件的ID。编译工程,可以根据…

[240912] X-CMD 发布 v0.4.10:新增 spf 模块 | 新增 gh model 功能 | advise、brew 等模块修复

目录 X-CMD 发布 v0.4.10📃Changelog✨ gh✨ spf - 终端文件管理器💡 advise📦 brew - MacOs 系统的包管理工具📂 df 💿📝 TLDR✅ 升级指南 X-CMD 发布 v0.4.10 📃Changelog ✨ gh 新增了 gh …

软考 -- 软件设计师 -- 二轮复习(3) -- 数据结构(持续更新)

软考 – 软件设计师 – 二轮复习(3) – 数据结构(持续更新) 文章目录 软考 -- 软件设计师 -- 二轮复习(3) -- 数据结构(持续更新)前言一、时间、空间复杂度二、递归式时间复杂度三、线性表四、栈五、栈和队列六、串七、朴素模式匹配八、KMP模式匹配九、数组十、矩阵十一、树、二…

思路好!硕士生一作发TOP期刊!!!

2024年8月26日,福建理工大学建筑与城乡规划学院2023级城乡规划学硕士研究生岳谞攀以第一作者在国际知名期刊《Sustainable Cities and Society》在线发表题为“Constructing an urban heat network to mitigate the urban heat island effect from a connectivity p…

[网络]TCP/IP协议 之 TCP协议的核心机制(2)

文章目录 TCP核心机制1. 确认应答2. 超时重传3. 连接管理三次握手四次挥手 4. 滑动窗口5. 流量控制6. 拥塞控制7. 延时应答8. 捎带应答9. 粘包问题10. 异常情况 TCP核心机制 1. 确认应答 (上篇) 2. 超时重传 (上篇) 3. 连接管理 建立连接的流程: 三次握手 断开连接的流程…

大模型书籍丨国内顶尖院校出品,非常火爆的LLM大模型入门中文书来了

最近有一本人工智能入门的书比较火,这本书集合了最新的产品、技术,并通过顶尖院校的教授书写而成。我今天阅读了第一章,感觉浅显易懂,顺便把笔记也做出来了,供大家参考。 大语言模型入门 第一部分 背景与基础知识 第…

【小沐学OpenGL】Ubuntu环境下glad的安装和使用

文章目录 1、简介1.1 OpenGL简介1.2 glad简介 2、安装glad2.1 手动安装glad2.2 git安装glad2.3 源码编译成glad单独库 3、测试glad3.1 例子13.2 例子2 结语 1、简介 1.1 OpenGL简介 OpenGL作为图形界的工业标准,其仅仅定义了一组2D和3D图形接口API,而对…

【最新】全球各国新冠疫情数据集(2020.1-2024.8)

新冠疫情,即新型冠状病毒引发的肺炎疫情,自2019年底首次爆发以来,对全球公共卫生、经济和社会生活产生了深远影响。本次分享的是全球新冠疫情数据,世界各国的新冠疫情数据呈现出复杂多变的态势,不同国家和地区的疫情严…

【软件设计师真题】下午题第四大题---算法设计

系列文章目录 1.【软考之软件设计师】PPT课件 2.【软考之软件设计师】学习笔记 3.【软件设计师真题】下午题第一大题—数据流图设计 4.【软件设计师真题】下午题第二大题—数据库设计 5.【软件设计师真题】下午题第三大题—UML 分析与设计 6.【软件设计师真题】下午题第四…

UEFI学习笔记(八):Memory Services

UEFI学习笔记(八):Memory Services 一、内存服务概况1、PEI阶段2、DXE阶段(系统内存)3、SMM阶段 二、HOB概述1、为什么在PEI阶段要引入HOB?2、HOB的类型 三、MEMORY类型四、内存分布1、PEI内存分布2、DXE内…

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升,深成指、创业板指盘中跌逾1%,午后集体拉升翻红。华为产业链午后走强…

一天一道算法题day05

目录 合并两个有序链表 什么是链表? 链表的基本概念: Java 中的链表实现 Java 内置 LinkedList 类: 回到题目 解题思路 代码实现 总结: 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼…

【几维安全-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

设计模式之建造者模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、建造者模式2、建造者模式使用场景3、优点4、缺点5、主要角色6、代码示例:1)实现要求2)UML图3)实现步骤:1)创建一个表示食物条目和食物包装的接口2)创建实现Packing接口的实体类3&a…

828华为云征文 | 深入解析华为云X实例保障云上业务安全的关键策略

前言 在云计算快速发展的背景下,安全问题一直是企业上云过程中关注的焦点。随着数据迁移至云端,企业对云计算平台的安全性能提出了更高要求,特别是如何防止数据泄露、网络攻击、以及确保合规性等问题至关重要。华为云作为全球领先的云服务提供…

分类预测|基于哈里斯鹰优化最小二乘支持向量机的数据分类预测Matlab程序HHO-LSSVM多特征输入多类别输出

分类预测|基于哈里斯鹰优化最小二乘支持向量机的数据分类预测Matlab程序HHO-LSSVM多特征输入多类别输出 文章目录 一、基本原理1. 哈里斯鹰优化算法(HHO)2. 最小二乘支持向量机(LSSVM)HHO-LSSVM模型流程总结 二、实验结果三、核心…

2024/9/12 408“回头看”之文件元数据和索引节点

文件元数据: 索引节点: 把所有文件元数据放在一起,其中只保存文件名和索引节点号,然后通过索引节点来指向其他信息: 索引节点放在外存。 未采用索引节点:找目录项得一个磁盘块、一个磁盘块的找&#xff…

通用四期ARM架构银河麒麟桌面操作系统V10【安装、配置FTP客户端】

一、操作环境 服务端:银河麒麟桌面操作系统V10SP1 客户端:银河麒麟桌面操作系统V10SP1 二、服务端配置 注:以下命令均在终端执行 鼠标点击桌面右键,选择打开终端 操作步骤: 1、安装vsftpd软件:如果提…

【运维监控】Prometheus+grafana+kafka_exporter监控kafka运行情况

本示例通过kafka_exporter收集kafka的监控指标,然后将数据收集到prometheus中,最后通过grafana的dashboard导入模板进行可视化。本示例分为四个部分,即prometheus、grafana部署、kafka_exporter部署与配置和最后的集成。说明:本示…