Flink CDC在阿里云DataWorks数据集成应用实践

news2024/11/25 16:25:29

摘要:本文整理自阿里云 DataWorks 数据集成团队的高级技术专家 王明亚(云时)老师在 Flink Forward Asia 2023 中数据集成专场的分享。内容主要为以下四部分:

  1. 阿里云 DataWorks 数据集成介绍
  2. 基于 Flink CDC 数据集成新版引擎架构和原理
  3. 新版引擎在 DataWorks 数据集成产品化案例分享
  4. 未来规划

一、阿里云DataWorks数据集成介绍

1. 下图是阿里云DataWorks数据集成发展历史

阿里云 DataWorks 数据集成发展已经超过 10 年,起步于 2011 年的阿里巴巴内部数据平台事业部同步中心。2014 年正式对外提供云服务功能,2019年完成公共云商业化,发布了独享资源组功能。2020年发布了实时同步,支持整库全增量以及资源连通性自助诊断等功能。2023 年初,基于 Flink CDC 重构后的新版引擎功能正式发布上线,具备流批一体、弹性扩缩容等功能特性。

2. 业务规模

目前业务规模离线和实时,每天同步的数据量在10PB量级、10万亿量级。服务阿里巴巴内部淘宝、天猫、Lazada、菜鸟等130多个BU,同时支持国内、海外Region,金融云、政务云等21个 Region。

3. 数据上云核心枢纽

阿里云 DataWorks 数据集成是数据上云的核心枢纽(异构数据存储、可靠、安全、低成本、可弹性扩展的数据同步平台),支持几十种丰富的异构数据源,并且支持这些异构数据源之间任意组合,包含关系型数据库、MMP、NoSQL、文件储存、消息流等各大类型系统。同时,也支持复杂的网络全联通,无论用户的数据源在公网、IDC 机房、VPC 内还是跨云等场景,数据集成都具备成熟可以提供连接到各数据源的网络解决方案,支持用户进行数据迁移。同时针对云上各种丰富的数据集成场景,支持包括整库迁移、周期性离线同步、全增量同步等多种同步能力。同时背靠 DataWorks,数据集成具备成熟的安全控制机制,以及完善的运维报警监控能力。

4. 离线数据同步原理

下面介绍基于 Flink CDC 引擎重构之前的技术架构。

首先离线同步:底层基于数据库 JDBC 协议或者数据源 SDK 来进行读写。

例如:用户购买 1,000万 的数据,要周期性离线同步到阿里云大数据存储系统上,做离线数仓分析,我们会在源端对其进行数据分片切分,针对不同的数据字段类型,有多种不同的切分算法,最常见的就是按照主键,进行数据分片切分,每一个切分后的分片就是一个 Task,若干个 Task 分为一个 Task Group,被调度系统调度到资源层 Worker 上进行同步,Worker 是进行数据实际读写的基本物理执行单元,这样就能够完成离线同步的能力。

5. 实时数据同步原理

区别于离线同步,实时同步主要是基于数据库变更日志增量解析或者消息订阅等方式来进行的。

例:以 MySQL 为例,基于 Socket MySQL Dump 协议实时订阅 Binlog 二进制流, 将订阅到的二进制流进行事件解析, Connector 进行转换处理, 最后在目标端进行数据重放。

6. 阿里云数据集成解决方案系统

除了离线同步与实时同步外,云上很多业务场景是需要客户把历史的数据,比如关系型数据库里的数据,先全量同步到云上,然后再启动实时增量同步。2020年,我们发布了整库全增量解决方案的产品功能,具备自动批量进行用户表结构从源端迁移到目标端系统,迁移完成后,自动启动全量离线同步任务,将历史数据一次性搬迁到云上;全量同步完成后,系统会进行自动的位点衔接,启动实时增量任务将增量数据实时同步到目标端系统,完成自动的全增量流程。不需要用户手工每张表配置单独的离线和实时任务,大幅简化了配置流程,提升任务配置运维效率。

7. 期望的数据集成引擎

上述介绍了在基于 Flink CDC 引擎重构之前的技术架构,同时随着技术的迭代演进,我们期望的数据引擎应该具备四大特性:

1流批一体:希望维护一套统一的框架和技术栈,具有既能够支持流同步,也能够支持批同步的能力,可以极大提高团队研发效能。

2开源生态:需要有一个丰富的开源生态和活跃社区,能够复用和集成社区丰富的 Connector。

3全事件流同步:支持 DML、DDL、HeartBeat 等全事件流的解析及同步。

4良好的性能和成本:同步资源能够弹性扩缩容,支持分布式的海量数据同步,具备高吞吐高性能特性。

Flink CDC 以及 Flink 引擎本身,就具备上述特性,因此我们基于 Flink CDC 进行了 DataWorks 数据集成新版引擎的重构升级。

二、基于Flink CDC数据集成新版引擎架构和原理

1. 数据集成平台架构

重构以后的数据集成平台架构,从系统分层角度看主要分为4层。

第一层是接入层,接入层直接面向用户,用户可以通过 OPEN API 的方式来集成创建同步任务, 也可以通过 Web UI 的方式, 进行界面向导化的一键简单配置。接入层主要支持流控、权限检查、任务创建、数据源的更新删除等功能。

第二层是管控层,管控层主要负责任务的全生命周期的管理,包括开发态(作业配置、作业检查),运行态(任务渲染、任务启停),运维态(告警监控、Metric 查询展示)等。

第三层是引擎层,主要分为两个部分:Catalog Server 和新的流批一体同步引擎。Catalog Server 主要用于和用户的数据源进行连接,例如进行用户数据源的连通性检查、表结构获取、结构迁移等功能。接下来重点介绍基于 Flink CDC 框架 + DataX(多种数据格式 Reader & Writer)重构后的新版流批一体同步引擎。

第四层是资源层,支持任务资源调度部署、ECS 物理机等多种资源部署形态。

2. 基于Flink CDC新版引擎架构特点

基于 Flink CDC 新版引擎架构特点,首先在功能特性方面,得益于 Flink 流批一体架构,因此新版引擎天然具备了流批一体架构特点,同时支持整库多表、分库分表全增量同步、全事件流解析和同步、分布式动态限流等能力特性。在性能成本方面,支持按照 Primary key 进行 Shuffle 可以避免数据热点提高同步性能,新版引擎对 Sink 进行了增强,支持实时写多表、支持连接复用等特性,可以极大节省同步资源和成本。最后,基于 Flink 底层资源调度层,具备了分布式云原生架构特点。

3. 基于Flink CDC新版引擎架构设计

下面是重构以后基于 Flink CDC 新版引擎架构设计,针对数据集成的业务场景,新版引擎基于 Flink CDC 进行功能上的扩展和增强。源端大量的数据库(例如 MySQL、PostgreSQL、MongoDB 等), 基于 Flink CDC Source 自动完成全量数据初始化、增量数据同步以及全增量自动切换,同时 CDC Source 具备加表不断流等能力特性。CDC Source 将源端数据读取转换以后,数据在执行拓扑中,会经过事件流解析器、 数据分发器(支持多种分发模式:primary key,table,shard key, random 等),Table Mapping(为支持整库多表、分库分表场景服务),以及大量内置的 Transformer 算子(字符串替换 、动态列配置、数据脱敏、JSON 解析、数据过滤、逻辑删除等)。最后,基于Flink FLIP-191 Sink V2和 Coordinator 机制,对现有的 Sink connector 进行增强,支持并发写多表、schema evolution 等能力。

4. 架构详解-全事件流解析与同步

首先针对 DML 事件,会将其解析为 INSERT、UPDATE 或 DELETE 数据,如果是全量初始化数据 DML 事件会全部解析为 INSERT 数据。HeartBeat 事件,主要用于更新延迟指标、及同步给下游系统起到保活作用等。DDL事件,将原始的 DDL SQL 变更基于 Druid 解析为标准的 AST 抽象语法树,所有的目标端 Sink Connector 对接标准的 AST 抽象语法树,将其转换为目标端可执行的 DDL 事件进行重放,无需关心源端的数据库类型。

5. 架构详解-Table Mapping

Table Mapping 支持源端表到目标表表名及列名映射,例如:在分库分表场景下,要支持用户的表名正则匹配,需要将满足用户自定义的正则条件下的表,数据都同步写到目标端某一个表里,就需要依赖于 Table mapping 映射的能力。在离线同步场景下,需要兼容现有的离线同步能力,用户除表名映射以外,用户的源端字段列名和目标端字段列名也不一定相同,则还需要进行列名映射。

6. 架构详解-Power CDC Sink

Power CDC Sink 是基于 Flink FLIP-191 Sink V2 以及 Coordinator 机制进行了增强,支持单 SubTask 实时写多表,支持链接复用以节省资源,同时支持实时的 Schema Evolution。

基于 Coordinator 机制开发了 Schema Evolution Coordinator,在 schema evolution 场景下能够实现分布式协调,保证 DML 和 DDL 的执行有序性。具体工作流程是,当某个 Subtask 收到 DDL 事件后,Coordinator 可以分布式协调其他的 Subtask,驱动其它 Subtask 先将数据全部 Flush 到目标端并暂停写数据,Flush 完成后 Coordinator 驱动收到 DDL 事件的 Subtask 进行 schema evolution 执行,执行完成后由 Coordinator 通知其它 Subtask 继续同步数据,基于上述协调过程可以保证在 Schema Evolution 时,DML 和 DDL 执行的有序性、保证数据一致。同时,结合 Primary key Shuffle 等数据分发策略,能够避免数据热点问题提升同步性能。

7. 架构详解-事件通知及异常诊断

实时同步任务因为是 7 * 24 小时运行,用户需要能够对其有比较强的可观测性,为了提升任务的可观测性,新版引擎扩展新增了大量可观测指标,当任务出现故障或收到预期外的事件时,任务会将 Metric 实时推送到我们自研的报警系统 Mario, Mario 在收到 Metric 后根据用户设定的告警规则自动触发告警用户介入处理。例如:用户在 DataWorks 数据集成平台上配置了任务心跳告警、任务延迟告警、 DDL 事件通知报警,当出现任务延迟、任务异常失败或者出现其它预期外的事件,能够及时以短信、电话、钉钉、Webhook 等多种方式告警到用户,用户能够及时到数据集成运维平台上做任务运维处理。数据集成运维平台支持 Logview 可视化异常诊断,帮助客户分析任务延迟、异常等原因并提供相应的解决建议,提升客户运维效率。

三、新版引擎在DataWorks数据集成产品化案例分享

1. 新版引擎数据集成产品化演示和案例分享

这里分享新版引擎 MySQL 到阿里云实时数仓 Hologres 全增量实时同步产品 Demo。

首先在数据集成数据源列表里,建两个数据源 MySQL 和 Hologres ,用户的 MySQL 在用户自己云上的 VPC 里,与 DataWorks 网络环境不一样,由于网络环境不同默认网络不可达,测试连通性会报错,数据集成提供了自动的连通性诊断级网络打通工具,可以帮助用户进行自动的网络打通和连通性检查。这样就不需要用户的数据源,与 DataWorks 网络环境在一个网络环境下, 可以轻松实现跨网络环境的数据集成能力。

数据源建好测试连通性通过以后,在数据集成页面进行任务配置,在此次演示中建三个库,每个库里有三张表,演示分库分表写入场景。数据集成支持表名替换, 附加逻辑列等能力,任务配置完成后点击启动执行,会进行自动的结构迁移,全量数据初始化,全增量自动切换。

2. 案例分享

阿里云某出海客户,使用 DataWorks 数据集成基于 Flink CDC 的新版引擎,将海外云厂商 1 和海外云厂商 2 的跨云、跨时区 MySQL 实例,全增量实时同步汇总到阿里云实时数仓 Hologres,做实时数仓分析。基于任务执行调度可以弹性扩缩容,以及新版引擎 Power CDC Sink 支持连接复用写多表等能力特性,可以为客户带来较大的资源成本优化, 用户成本下降近 60%。

四、未来规划

未来 DataWorks 与 Flink CDC 会更加紧密深度的合作,在数据集成引擎的通用能力上期望和社区共同演进,在任务智能弹性扩容方面进行更多维的探索,进一步帮助客户降本增效。
同时能够基于 AI 对任务进行问题的智能诊断,帮助用户更加高效便捷的排查,降低用户的问题排查门槛。最后在数据离线实时质量校验方面,进一步推进使其产品落地。

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

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

相关文章

为硬刚小米SU7,华为智界S7整出了「梅开二度」操作

如今国产中大型新能源轿车市场,在小米 SU7 加入后,可算彻底活了过来。 过去几年,咱们自主新能源品牌在 20-30 万元级轿车上发力明显不足,老牌车厂比亚迪汉几乎以一己之力扛起销量担当。 随着新能源汽车消费升级、竞争加剧&#x…

盲人安全导航技巧:科技赋能让出行更自如

作为一名资深记者,长期关注并报道无障碍领域的发展动态。今日,我将聚焦盲人安全导航技巧,探讨这一主题下科技如何赋能视障人士实现更为安全、独立的出行。一款融合了实时避障、拍照识别物体及场景功能的盲人出行辅助应用叫做蝙蝠避障&#xf…

4月16号总结

java学习 网络编程 1.网络分层 网络分层是将网络通信划分为不同的逻辑层次,每一层负责特定的功能,从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI(开放系统互联)模型和TCP/IP模型。 特点和作用: 分…

计算机网络的七层模型

序 OSl(Open System Interconnect),即开放式系统互联。一般都叫OSI参考模型。在网络编程中最重要的模型就是OSI七层网络模型和TCP/IP四层网络模型 一、OSI七层参考模型以及功能概述 二、各层的具体职能以及实际应用 1.应用层: OSI参考模型中最接近用…

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL 解决方案 1、确定自己电脑的位数; 2、右击MathType桌面图标,点击“打开文件所在位置”,然后找到MathPage.WLL ,复制一份进行…

ES源码二:集群启动过程

命令行参数解析 Elasticsearch:在main里面创建了Elasticsearch实例,然后调用了main方法,这个main方法最终会调用到父类Command的main方法 这里做了几件事: 注册一个 ShutdownHook,其作用就是在系统关闭的时候捕获IO…

配置路由器实现互通

1.实验环境 实验用具包括两台路由器(或交换机),一根双绞线缆,一台PC,一条Console 线缆。 2.需求描述 如图6.14 所示,将两台路由器的F0/0 接口相连,通过一台PC 连接设备的 Console 端口并配置P地址(192.1…

基于栈求解迷宫的单条路径和所有路径

数据结构与算法课的一个实验,记录一下。 单纯想要了解利用栈求解迷宫的算法可以直接跳转到相应的小标题。 完整代码链接code_2024/mazeLab LeePlace_OUC/code - 码云 - 开源中国 (gitee.com) 文章目录 要求栈的实现MazeType类型的组织迷宫的初始化和销毁打印路径…

死磕GMSSL通信-java/Netty系列(二)

死磕GMSSL通信-java/Netty系列(二) 在上一篇文章中,我们探讨了如何利用C/C++实现国密通信。而本文将聚焦于Java环境下,特别是基于Netty框架,如何实现与国密系统的安全通信。为了确保新项目遵循最新的国密标准,我们将优先推荐使用GB/T 38636-2020(TLCP)协议。对于Java开…

python 如何使用windows系统自带的定时功能运行脚本

亲测此定时可以在电脑重启后,仍会自动运行 1.搜索栏搜索‘任务’,打开任务计划程序,点击创建任务 2.写一下任务名称和描述 3.选择触发器,点新建,可以创建定时计划 4.默认只有一次,每天,每月&am…

BackTrader 中文文档(二十七)

原文:www.backtrader.com/ 数据 - 多个时间框架 原文:www.backtrader.com/blog/posts/2015-08-24-data-multitimeframe/data-multitimeframe/ 有时,使用不同的时间框架进行投资决策: 周线用于评估趋势 每日执行进入 或者 5 分钟…

解决 MSYS2 Qt 6.7 默认 stylesheet 在 windows 11 下的显示故障

项目场景: MSYS2 升级到 Qt6.7.0,发现显示故障,所有Qt6程序以及 QtCreator的SpinBox都显示不全,Combox的底色不对。 问题描述 2024年4月1日,pacman升级MSYS2后,Qt6遇到风格错误。如果使用官方的 Qt onlin…

CSS设置内外边距

目录 内边距(paddingj): 前言: 设置内边距: 外边距(margin): 前言: 设置外边距: 补充(折叠): 内边距(padding)&#…

【程序分享】bopcalc 程序:一种评估分子动力学模拟中键序参数的高效方法(二)

分享一篇使用一种评估键序参数的高效程序:bopcalc 。 感谢论文的原作者! 主要内容 “ 我们提出了一种新颖、高效的方法来评估键序参数 (BOP)。我们的方法利用球谐函数和 Wigner 符号的特性来减少 BOP 表达式中的项数,并采用归一化关联勒让德…

APP测试基本流程以及APP测试要点梳理,保证您看了不后悔!

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

使用Pandas解决问题:对比两列数据取最大值的五种方法

目录 一、使用max方法 二、使用apply方法结合lambda函数 三、使用np.maximum函数 四、使用clip方法 五、使用where方法结合条件赋值 总结: 在数据处理和分析中,经常需要比较两个或多个列的值,并取其中的最大值。Pandas库作为Python…

前端大屏项目适配方法

要在F11全屏模式下查看 方法一,rem font-size 动态设置HTML根字体大小 和 body 字体大小(lib_flexible.js) 将设计稿的宽(1920)平均分成 24 等份, 每一份为 80px。HTML字体大小就设置为 80 px&#xff…

OSPF大型实验

OSPF大型实验 实验拓扑图 实验思路 1、R4为ISP,其上只配置IP地址;R4与其他所直连设备间均使用公有IP; 2、R3-R5、R6、R7为MGRE环境,R3为中心站点; 3、整个OSPF环境IP基于172.16.0.0/16划分;除了R12有两…

智慧园区可视对讲广播解决方案

智慧园区可视对讲广播解决方案 目前而言智慧园区管理者主要需要解决的问题是: 1.面对庞大的园区小区规模,能源管理全部依赖人工已经无法实现; 2.节能管理工作难度大,面对问题,没有好的解决方案; 3.面临…

详解电源测试系统自定义报告模板功能:如何轻松实现数据导出

在NSAT-8000电源测试系统内,数据一般分为三级架构:原始数据、数据报告和数据分析。数据报告可以直接展示出电源模块的各项测试数据和测试结果,帮助用户评估电源性能,为电源的优化提升提供数据支持。 系统的记录报告板块展示着历史…