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

摘要:本文整理自阿里云 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.mfbz.cn/a/549945.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字革命的先锋:Web3对社会的影响

引言 在信息技术飞速发展的当下,Web3作为一个新兴的互联网模式,正在逐渐改变我们的生活方式、商业模式和社会结构。本文将深入探讨Web3的核心特点、它在各个领域中的应用以及对社会产生的深远影响。 1. Web3的核心特点 1.1 去中心化 Web3强调去中心化…

03.卸载MySQL

卸载MySQL 1.Windows卸载MySQL8 停止服务 用命令停止或者在服务中停止都可以 net stop mysql(服务名字可以去服务里面看一下)控制面板卸载MySQL 卸载MySQL8.0的程序可以和其他桌面应用程序一样直接在控制面板选择卸载程序,并在程序列表中…

Excel高效办公:人力资源管理(AI版)

AI人力资源管理一本通:147个“温馨提示”53个“教您一招”,掌握使用Excel高效完成人力资源管理工作的“心法”,助你早做完、不加班。 一本书掌握人力资源高效管理的“心法”! 案例丰富,参考性强:本书不是…

AR、VR、MR 和 XR——它们的含义以及它们将如何改变生活

我们的工作、娱乐和社交方式正在发生巨大变化。远程工作的人比以往任何时候都多,屏幕已成为学习和游戏的领先平台。这种演变为元宇宙铺平了道路——如今,像 Meta Quest 2 这样的流行设备将您无缝地带入一个身临其境的世界,您可以在其中购物、创作和玩游戏、与同事协作、探索…

ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写教程

原文链接:ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601506&idx2&sn5dae3fdc3e188e81b8a6142c5ab8c994&chksmfa820c85cdf58593356482880998fc6eb98e6889b261bf621e1d…

win10 鼠标箭头自己乱动解决方案

我这里只说我碰到的然后我的解决方案,不一定对其他问题有效; 1. 首先拔掉鼠标线查看鼠标箭头是否仍然在乱动,如果是则非鼠标问题,如果不再乱动则是鼠标的问题;验证非鼠标问题; 2. 因为鼠标乱动跟鼠标无关…

Django中的实时通信:WebSockets与异步视图的结合【第167篇—实时通信】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代Web应用程序中,实时通信已经成为了必不可少的功能之一。无论是在线聊天、…

AppBuilder升级!工作流编排正式上线!AssistantsAPI开放邀测!

>>【v0.5.3版本】 上线时间:2024/4/14 关键发版信息: 低代码态:新增工作流,低代码制作组件 自定义组件:支持用户自定义创建组件,并被Agent自动编排调用
 工作流框架:组件支持流式编排…

OpenCV轻松入门(八)——图片卷积

对图像和滤波矩阵进行逐个元素相乘再求和的操作就相当于将一个二维的函数移动到另一个二维函数的所有位置,这个操作就叫卷积。 卷积需要4个嵌套循环,所以它并不快,除非我们使用很小的卷积核。这里一般使用3x3或者5x5 图像滤波 图像滤波是尽…

Linux内核之aligned用法实例(四十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

五大地推网推拉新平台,带你打开副业之门

2024年从事地推网推拉新,没有人脉,没有资源,怎么找项目?单纯依靠自己像无头苍蝇一般盲目地去找是很困难的。其次,随着现在市场上拉新接单赚钱的平台越来越多,很多人不知道怎么去辨别和选择,也不…

【ElasticSearch】安装(bug篇)

以下解决办法参考自网友们的分享 1. JDK绑定问题 但其实这样也没有问题,因为内嵌的jdk版本与当前的es版本是适配的 但是,如果内嵌的jdk与当前es不适配,那就要修改配置文件 / 添加环境变量,让es启动的时候能扫描到我们本地的jdk …

Flutter 插件站新升级: 加入优秀 GitHub 开源项目

Flutter 插件站新升级: 加入优秀 GitHub 开源项目 视频 https://youtu.be/qa49W6FaDGs https://www.bilibili.com/video/BV1L1421o7fV/ 前言 原文 https://ducafecat.com/blog/flutter-awesome-github-repo-download 这几天晚上抽空把 Flutter 插件站升级,现在支…

景区导览系统平台|智能导览|数字人导游|VR游园

随着人工智能、元宇宙等技术的飞速发展,文旅行业正迎来一场前所未有的变革。道可云文旅元宇宙平台以其独特的智慧景区导览系统、元宇宙空间以及数字人导游等创新应用,为景区和游客带来了全新的旅游体验,也标志着文旅行业正式步入了元宇宙时代…

如何用flutter写一个好的登录页面

编写一个好的登录页面是构建用户友好且安全的移动应用的重要一步。下面是使用Flutter编写一个好的登录页面的一些建议和步骤: 1. 设计用户界面 1.简洁明了的布局:确保界面简洁明了,不要过分复杂,避免用户感到困惑。 2.清晰的输入框…

HTML中div/span标签、音频标签、视频标签与特殊字符

目录 div/span标签 音频标签 视频标签 特殊字符 div/span标签 在HTML中&#xff0c;<div></div>和<span></span>是没有语义的&#xff0c;可以将两个标签当做两个盒子&#xff0c;里面可以容纳内容 两个标签有以下两个特点&#xff1a; 1. <…

微软正式发布Copilot for Security

微软公司近日宣布&#xff0c;其备受期待的安全自动化解决方案——Copilot for Security现已全面上市&#xff0c;面向全球用户开放。这一创新工具的推出标志着微软在提升企业安全防护能力方面迈出了重要一步&#xff0c;同时也为安全专业人士提供了强大的支持。 Copilot for …

MapReduce 机理

1.hadoop 平台进程 Namenode进程: 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个&#xff0c;分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log)&#xff…

mp3转m4a怎么转?4种方法无损转换音频~

M4A文件格式&#xff0c;或称MPEG-4 Audio&#xff0c;崭露头角于音频时代。其诞生旨在提供更高保真度和更高效的音频压缩&#xff0c;为多媒体应用和苹果设备赋能。 M4A格式与MP3格式的优缺点对比 M4A与MP4格式密不可分&#xff0c;均属于MPEG-4标准。相较MP3&#xff0c;M4A…

C++入门之类和对象

C入门之类和对象 文章目录 C入门之类和对象1. 类的6个默认对象2. 构造函数2.1 概念2.2 特性2.3 补丁 3. 析构函数3.1 概念3.2 特性3.3 总结 4. 拷贝构造函数4.1 概念4.2 特性4.3 总结 1. 类的6个默认对象 如果一个类中什么都没有&#xff0c;那么这个类就是一个空类。但是&…