实时捕获数据库变更

1.CDC概述

CDC 的全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。我们目前通常描述的CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术,CDC 技术应用场景非常广泛:

  1. 数据同步,用于备份,容灾
  2. 数据分发,一个数据源分发给多个下游系统
  3. 数据采集,面向数据仓库/数据湖的 ETL 数据集成,是非常重要的数据源

2.常用的CDC工具对比

3.CDC实现方案Kafka Connect + Flink

3.1系统架构

在该场景下,由于 CDC 变更记录会暂存到 Kafka 一段时间,因此可以在这期间任意启动/重启 Flink 作业进行消费;也可以部署多个 Flink 作业对这些数据同时处理并写到不同的数据目的(Sink)库表中,实现了 Source 变动与 Sink 的解耦。

3.2优缺点分析

优点:

  1. 数据采集和数据消费通过kafka解耦

缺点:

  1. 不支持表结构变更同步
  2. 需额外部署kafka connect工具,采集源端变更数据
  3. 数据链路太长,变更的数据到下游有一定的延迟

3.3Debezium版本选择

Debezium 1.5.3.Final支持的数据库有:MySQL、MongoDB、PostgreSQL、Oracle、SQL Server、Db2。 PS:高版本的debezium使用的是openjdk11。

3.4Flink版本选择

Flink版本与cdc相关的特性列表:

Flink版本

CDC特性

Flink1.10

不支持

Flink1.11

支持debezium-json和canal-json(mysql)

Flink1.12

支持maxwell-json(mysql)

支持debezium-avro-confluent

Flink1.13+

未变化

PS: debezium-avro-confluent格式依赖的jar是flink-avro-confluent-registry

其他格式依赖的jar是flink-json (Flink 内置)

4.CDC实现方案​​​​​​​Flink CDC Connectors

Flink CDC Connectors 是一组用于 Apache Flink 的源连接器,使用变更数据捕获 (CDC) 从不同的数据库中获取变更。 Flink CDC 连接器集成了 Debezium 作为引擎来捕获数据变化。所以它可以充分发挥 Debezium 的能力。

4.1系统架构​​​​​​​

----Table/SQL API 示例----

----DataStream API 示例----

​​​​​​​4.2优缺点分析

Table/SQL API的方式

优点:

  1. 使用SQL方式,易于使用,且支持多表联合进行数据处理

缺点:

  1. 不支持表结构变更同步
  2. 每张CDC表都内嵌了debezium采集器,对源业务系统影响较大

DataStream API的方式

优点:

  1. 一个source可以同步多表数据

缺点:

  1. 不支持表结构变更同步
  2. 需开发数据落地算子,将devezium-json格式的数据解析后,分别写入目标表中

​​​​​​​​​​​​​​4.3支持的数据源

4.4支持的Flink版本

5.CDC实现方案—OceanMind

基于以上方案的优缺点分析,OceanMind在Flink CDC路线基础上进行了技术创新,通过新建实时任务,进行可视化的算子拖拽配置,即可生成定制的flink cdc流程。此方式降低了使用门槛,可快速满足业务部门的实时数据捕获使用需求,提升工作效率。

5.1系统架构
​​​​​​​

5.2使用示例

5.3方案对比分析

OceanMind集成Flink CDC

Flink CDC Table/SQL

Flink CDC DataStream

Kafka Connect + Flink

全量+增量

资源消耗

★★★

★★

★★★★

对源端系统影响

★★★

处理效率

★★★★

★★★★

★★★

★★★

支持SQL处理

X

X

变更数据延迟

★★★

易用性

★★★★★

★★★★

★★

★★

5.4方案创新点

  1. 新增元数据op_type字段,记录操作标识
  2. 落地算子新增Append模式,将历史变更数据全部记录下来,用于历史溯源
  3. 解决Oracle 全量同步阶段切片不均匀问题
  4. 解决PostgreSQL CDC不支持中文库表名

5.5支持的数据源

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

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

相关文章

Linux嵌入式学习——数据结构——队列

一、概念 1)定义 是只允许在一端进行插入操作,而在另一端进行删除操作的线性表 队列 是一种 先进先出(First In First Out) 的线性表 线性表有顺序存储和链式存储,栈是线性表,所以有这两种存储方式 同样…

【在开发小程序的时候如何排查问题】

在开发小程序的时候如何排查问题 在最近开发小程序的时候,经常出现本地在浏览器中调试没有问题,但是一发布到预发环境就出现各种个样的问题 手机兼用性问题 有时候会出现苹果🍎手机键盘弹出,导致ui界面高度出现异常边界问题&#…

Arduino IDE界面和设置(基础知识)

Arduino IDE界面和设置(基础知识) 1-2 Arduino IDE界面和设置如何来正确选择Arduino开发板型号如何正确选择Arduino这个端口如何来保存一个Arduino程序Arduino ide 的界面功能按钮验证编译上传新建打开保存工作状态 1-2 Arduino IDE界面和设置 大家好这…

如何穿透模糊,还原图片真实面貌

目录 图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌 前言 论文背景 论文思路 模型介绍 复现过程 演示视频 使用方式 本文所涉及所有资源均在传知代码平台可获取。 图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌 在我…

全网最最实用--模型高效推理:量化基础

文章目录 一、量化基础--计算机中数的表示1. 原码(Sign-Magnitude)2. 反码(Ones Complement)3. 补码(Twos Complement)4. 浮点数(Floating Point)a.常用的浮点数标准--IEEE 754(FP32…

状态机 XState 使用

状态机 一般指的是有限状态机(Finite State Machine,FSM),又可以称为有限状态自动机(Finite State Automation,FSA),简称状态机,它是一个数学模型,表示有限个…

【计算机网络】数据链路层实验

一:实验目的 1:学习WireShark软件的抓包操作,分析捕获的以太网的MAC帧结构。 2:学习网络中交换机互相连接、交换机连接计算机的拓扑结构,理解虚拟局域网(WLAN)的通信机制。 3:学习…

cas 和 synchronized 优化过程

cas 什么是CAS CAS:全称Compareandswap,字⾯意思:”⽐较并交换“,⼀个CAS涉及到以下操作: 我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。 1. ⽐较A与V是否相等。(⽐较) 2. 如果⽐较…

ubuntu22.04单个网口两个IP

其中 4网段IP可用来上网,3 网段用来内网 界面显示: 配置文件: 01-network-manager-all.yaml 放在 /etc/netplan/ # Let NetworkManager manage all devices on this systemnetwork:version: 2renderer: networkdethernets:eth0:dhcp4: falsedhcp6: …

开放式耳机哪个牌子好?五大超值机型整理,速速收藏!!

大家都知道现在的开放式耳机是越来越火了,后台也有非常多的小伙伴来私信,作为一个耳机测评师,当然是为了你们服务啦,所以这一期文章,就是为了个大家答疑解惑,告诉大家如何才能选购出一款比较好用的开放式耳…

万字长文详解Java反射技术 | JavaSE | Java进阶知识 | 源码

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 📌今天分享的是JavaSE中的进阶知识🛑:反射技术。内容有点长,非常全面,记得点赞👍、收藏✅加关…

【网络世界】HTTP协议

目录 🌈前言🌈 📁 概念 📁 URL 📂 urlencode 和 urldecode 📁 协议格式 📁 方法 📂 GET/get 📂 POST/post 📁 常见的报头 📁 状态码 &…

模型大小的指标和模型量化的指标和手段

一、模型大小的指标 1.计算量 计算次数,反映了模型对硬件计算单元的需求。计算量的单位是 OPs(Operations) 。最常用的数据格式 为 float32,因此float32类型下的计算量单位被写作 FLOPs (Floating Point Operations),即浮点计算次数。模型的…

3D Web轻量化引擎HOOPS Communicator针对复杂大模型Web端可视化的解决方案

随着工程设计、制造和建筑领域中三维模型的日益复杂化,如何在Web端高效处理和展示这些大规模数据成为一大挑战。HOOPS Communicator作为一款强大的3D可视化工具,提供了一套针对复杂大模型的轻量化解决方案,涵盖了模型轻量化及格式转换、超大模…

PostgreSQL成为最受欢迎的数据库; TiDB马拉松大赛开启, Serverless和Vector为比赛焦点

重要更新 1. TiDB Hackathon大赛报名开启,总奖金达21万,主题是基于 TiDB Serverless 内置的向量搜索功能(Vector Search)构建 AI 创新应用,感兴趣的可以报名参加。( [1] ) 2. Stack Overflow 2024 开发者调研结果公布…

自学JavaScript(放假在家自学第一天)

目录 JavaScript介绍分为以下几点 1.1 JavaScript 是什么 1.2JavaScript书写位置 1.3 Javascript注释 1.4 Javascript结束符 1.5 Javascript输入输出语法 JavaScript(是什么?) 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。 2.作用(做什么?)网…

从头开始微调Llama 3.1模型

在今天的科技专栏中,我们将深入探讨如何微调Llama 3.1模型,以使其更好地适应您的特定领域数据。微调大型语言模型(如Llama)的主要目的是为了在特定领域的数据上表现更好,从而生成更符合您需求的输出。以下是我们将要介…

SpringBoot知识笔记

一、基本概念 1.1 特性 起步依赖 自动配置 其它特性:内嵌的Tomcat、Jetty(无需部署WAR文件),外部配置,不需要XML配置(properties/yml)。 1.2 配置文件 SpringBoot提供了多种属性配置方式 //application.properties server.port=9090 server.servlet.context-path…

Python爬虫知识体系-----Urllib库的使用

数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新:https://blog.csdn.net/grd_java/article/details/140574349 文章目录 1. 基本使用2. 请求对象的定制3. 编解码1. get请求方式:urllib.parse.quote()2. ur…

邦布带你从零开始实现图书管理系统(java版)

今天我们来从零开始实现图书管理系统。 图书管理系统 来看我们的具体的实现,上述视频。 我们首先来实现框架,我们要实现图书管理系统,首先要搭框架。 我们首先定义一个书包,在书包中定义一个书类和一个书架类,再定义…