Flink CDC 原理

news2024/11/18 8:30:22

文章目录

CDC,Change Data Capture 变更数据捕获

目前CDC有两种实现方式,一种是主动查询、一种是事件接收。

主动查询:
相关开源产品有Sqoop、Kafka JDBC Source等。
用户通常会在数据原表中的某个字段中,保存上次更新的时间戳或版本号等信息,然后下游通过不断的查询和上次的记录做对比,来确定数据是否有变动,是否需要同步变化数据。

因为要以一定的间隔不断的查询源数据库,所以随着间隔的减小和扫描数据量的增加对源数据库的压力会随之增加。

	优点1:不涉及数据库底层特性,比较通用;
	
	缺点1:如果原表中的字段无法用来区分新旧数据,那么需要对原表进行改造,从这一点看在某些场景下,可能无法使用该方式。
	缺点2:实时性不高。
	缺点3:对业务数据库有压力。
	缺点4:源数据库数据更新频繁时,可能存在数据丢失的风险。

事件接收:
相关开源产品有Canal、Maxwell、Debezium等。

通过数据库本身的触发器(Trigger)或者日志(例如Binary log、Transaction log、Write-ahead log等)媒介将数据变化记录下来,外部系统通过数据库底层的协议,订阅并消费这些事件,然后对数据库变动记录做重放,从而实现数据同步。

	优点1:实时性高,可以精确捕获数据变化。
	优点2:对源数据库不会产生额外压力。
	
	缺点1:需要独立安装部署插件或服务,比Debezium 采集 MySql数据时。
	缺点2:需要将采集到的数据额外存储到Kafka等外部组件中对外提供稳定的实时数据流。
	缺点3:支持的数据库种类少。

Flink cdc 通过嵌入Debezium、Kafka的方式实现CDC,降低了实现源数据库数据实时同步到Flink的操作难度。如下图红色虚线部分,就是被简化的内容。

在这里插入图片描述

这里以flink-connector-postgresql-cdc依赖进行分析

在这里插入图片描述
从中可以看到debezium和kafka的相关依赖。

随后再更新(ง •_•)ง

参考资料:
https://www.jianshu.com/p/616d6c5f23a0
https://blog.csdn.net/qq_32727095/article/details/120361815

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

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

相关文章

一篇博客教会你写序列化工具

文章目录什么是序列化?序列化格式JSON序列化精简序列化数据总结源码什么是序列化? 总所周知,在Java语言中,所有的数据都是以对象的形式存在Java堆中。 但是Java对象如果要存储在别的地方,那么单纯的Java对象就无法满…

我靠steam/csgo道具搬运实现财富自由

和莘莘学子一样,本着毕业对未来的憧憬,规划着漫漫人生,可是被残酷的事实打败。 直到一次偶然的同学聚会,谈及了现如今的生活才发现一片新大陆,通过信息差去赚取收益。 记得之前在校期间常常和哥几个通宵干CSGO,直到这…

Elasticsearch7.8.0版本高级查询—— 完全匹配查询文档

目录一、初始化文档数据二、完全匹配查询文档2.1、概述2.2、示例一、初始化文档数据 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/1,请求体内容为: { "name":"zhangsan", &quo…

【Nginx】使用Docker完成Nginx负载均衡+动静分离

前提是需要配置Nginx的反向代理,可以我看之前的文章 上篇Nginx配置动态代理的文章,我们在tomcat里写了两个简单html 这次我们依然采取同样的思路来演示负载均衡 一、负载均衡 1.在两个Tomcat容器(我这里一个端口8081,一个8082…

Gradle vs Maven 基本对比(一)

Gradle 与Maven 的基本对比 对比目录: 1、工具包目录对比 2、创建项目结构对比 3、启动进程对比 4、性能对比 5、简洁性对比 什么是gradle: Gradle 是一个开源的运行在JVM上自动化构建工具,专注于灵活性和性能。Gradle 使用 Groovy 或 Kotlin DSL(领…

低代码平台飞速创软完成3000万元A+轮融资

疫情形势下,云原生全场景低代码及数字化基础设施提供商珠海飞速创软科技有限公司(以下简称:飞速创软)依然发展迅速,逆势而上。继2021年中获得珠海正菱创投、炼金术资本等机构A轮数千万融资之后,于2022年底&…

【手写 Vue2.x 源码】第三十一篇 - diff算法-比对优化(下)

一,前言 上篇,diff算法-比对优化(上),主要涉及以下几个点: 介绍了如何进行儿子节点比对;新老儿子节点可能存在的3种情况及代码实现;新老节点都有儿子时的 diff 方案介绍与处理逻辑…

墙裂推荐,2023年最强、最实用的IDEA插件推荐合集

插件目录Alibaba Java Coding Guidelines(阿里巴巴java开发规范)Alibaba Cloud AI Coding Assistant(阿里云AI代码助理)Code Glance3(代码地图)Codota AI Autocomplete for Java and JavaScriptCSDN Tools(CSDN官方插件)FindBugsGenerateAllSetter Postfix Completion (自动生成…

小程序uni-app的api

小程序uni-app的apiuni api简介uni api使用uni-app自定义组件—传统方式核心步骤uni-app自定义组件—easycom简介核心步骤uni-app组件库uViewUIuview介绍关键步骤uni api简介 uni-api 指的是uni-app 针对一些 微信小程序api所做的封装它解决了两个问题 原生的小程序api不支持…

C/C++const关键字详解(全网最全)

目录 1、const修饰普通变量 2、const修饰指针 (1)const修饰p: (2)const修饰*p: (3)const修饰p和*p 4、const修饰数组 5、const修饰函数形参 (1)const修饰普通形参…

【数据结构】6.4 图的存储结构

文章目录6.4.1 邻接矩阵(数组)表示法无向图的邻接矩阵无向图邻接矩阵的特点有向图的邻接矩阵有向图邻接矩阵的特点网(有权图)的邻接矩阵采用邻接矩阵创建无向网邻接矩阵的优缺点6.4.2 邻接表(链式)无向图的…

【人工智能原理自学】初识Keras:轻松完成神经网络模型搭建

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 🔔本文讲解初识Keras:轻松完成神经网络模型搭建,一起卷起来叭! 目…

Eureka入门

Eureka入门Eureka入门什么是Eureka构建项目demo服务拆分远程调用创建Pom聚合工程Eureka使用搭建注册中心注册服务远程调用出现的问题Eureka入门 什么是Eureka Eureka是SpringCloud提供的注册中心,用来解决微服务之间远程调用问题,如: 消费…

交通流的微观模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Redis原理篇(四)内存回收

Redis之所以性能强&#xff0c;最主要原因是基于内存存储。但是单节点的Redis其内存大小不宜过大&#xff0c;会影响持久化或主从同步性能。 可以通过配置文件来设置最大内存 # maxmemory <bytes> maxmemory 1gb一、过期策略 可以通过expire命令给Redis的key设置TTL …

【C++算法图解专栏】一篇文章带你掌握高精度加减乘除运算

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为 0 基础刚入门数据结构与算法的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们一起交流~ &#x1f4da;专栏地址&#xff1a;https://blog.csdn.net/Newin…

Java 异常 笔记

异常体系结构 异常分为Error和Exception。Error通常是灾难性错误&#xff0c;一般发生时&#xff0c;JVM选择终止程序执行&#xff1b;Exception通常可在程序中进行处理&#xff0c;尽量避免 Exception分支中有一个重要子类RuntimeException&#xff0c;运行时异常 ArrayInd…

数据库,计算机网络、操作系统刷题笔记34

数据库&#xff0c;计算机网络、操作系统刷题笔记34 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

深入理解Promise

Promise的前提概念 Promise是一个构造函数&#xff0c;用来生成Promise实例 Promise构造函数接受一个函数作为参数&#xff0c;该函数有两个参数&#xff0c;分别是resolve和reject resolve&#xff1a;成功时的回调 reject&#xff1a;失败时的回调 Promise分别有三个状态 1…

行人属性识别研究综述(一)

文章目录摘要1、简介2 问题的表述和挑战3 标准3.1 数据集3.2 评价标准4 行人属性识别的常规流程4.1 多任务学习4.2 多标签学习5 深度神经网络&#x1f407;&#x1f407;&#x1f407;&#x1f407;&#x1f407;&#x1f407;&#x1f407; 欢迎阅读 【AI浩】 的博客&#x1f…