构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

作者:柳下

概述

随着企业规模和数据量的增长,数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂,因此及时捕获和处理这些变化变得至关重要。为了满足这一需求,数据库 CDC(Change Data Capture)技术应运而生。然而,从 ETL 架构的角度来看,CDC 仅满足了数据的提取(Extract)能力。


为了实现完整的 ETL 架构,并完成高效、实时的数据集成、处理和同步,阿里云 Serverless 函数计算(FC)与数据库 CDC 技术深度融合。助力企业构建完整的 ETL 架构,实现数据的提取、转换和加载。通过将 CDC 作为事件驱动的数据源,将数据变化作为事件触发 Serverless 函数的执行,可以实现实时的数据处理和同步,有助于提升业务决策和分析的准确性和效率。


架构介绍


下面将从 ETL 模型入手,逐步讲述 FC + CDC 如何适配符合 ETL 模型的业务。


ETL 模型

在大数据领域,承载数据流转、加工业务的系统架构都可抽象为 ETL 模型,它由三个主要步骤组成:提取(Extract)、转换(Transfomr)和加载(Load)。


  1. 提取:从数据源中提取数据。数据源可以是各种数据存储系统。如:数据库、文件系统、消息队列、API接口等。
  2. 转换:数据经过一系列的转换操作转换为目标系统可以接受的格式和结构。如:数据清洗、数据合并、数据富化等。
  3. 加载:将转换后的数据加载到目标服务中。目标服务可以是数据仓库、数据湖、BI 系统等。


此架构应用广泛,帮助企业管理和利用数据,实现数据驱动的决策和业务转型。



CDC + ETL

CDC 和 Extract(E) 是数据处理的两个概念,前者目的是捕获数据库中的变化数据,后者目的是从数据源中提取特定的数据集合。但回归业务本身,两者均是从数据源获取业务所需的数据,因此 CDC 和 ETL 的结合也是必然结果。两者的结合可构建更完整高效的数据处理流程,实现实时增量数据抽取和处理。相比传统的定期批量抽取方式,CDC 可更及时地捕获数据变化,使目标系统中的数据更加实时和准确。



阿里云 DTS + FC

在阿里云数据库产品体系中,数据传输服务 DTS(Data Transmission Service)扮演了 CDC 的角色,作为实时数据流传输服务,它能够捕获上游数据库的变更信息,并将这些变更推送给下游服务。当下游服务是函数计算时,可以利用函数计算的自定义代码能力,对数据进行自定义加工(T)和投递(L)。如下图所示,FC 和 DTS 的深度集成构建了完整的 ETL 体系,为业务系统的快速搭建提供了帮助。



功能详解


针对上文提到的 DTS + FC 架构,下面将剖析内部细节,深入理解系统的运行方式。


DTS 架构

DTS 在数据采集和数据传输上提供了完备的能力,DTS 系统可抽象为如下三大模块:


  1. Poller:从上游丰富的数据库服务获取数据,具体如下:
  • 传输数据类型:可传输存量数据或增量数据;
  • 数据获取方式:针对存量数据,DTS Poller 以并发查询方式扫描全表,将扫描结果投递至下游;针对增量数据,DTS Poller 监听并读取上游数据库的增量日志文件,解析文件中的日志信息并投递至下游;
  • 增量数据源:针对不同的上游数据库,DTS 会读取不同的增量日志文件。例如:当数据库为 MySQL 时读取 Binlog 文件,当数据库为 MongoDB 时读取 Oplog 文件。
  1. Format Plugin:将获取的数据统一格式化为 Canal Json 格式,格式的统一标准化便于数据解析逻辑复用于不同的数据源;
  2. Sinker:将格式化后的数据推送给下游 FC。



FC 架构

FC 和 DTS 的深度集成保证了 FC 可以接收 DTS 采集的数据库数据,并根据用户自定义代码实现数据加工和数据投递功能,具体如下:


  1. 请求路由:FC 网关将 DTS 发送的事件路由到 FC 后端;
  2. 调度处理:FC 调度层自动扩容计算节点运行用户代码,处理上游传递的 DTS 事件;
  3. 代码执行:用户的代码按预期运行,通常逻辑为加工处理 event 事件,并将处理后的结果以 SDK/API 等方式发送给外部服务。



从上图可以看到,您仅需关注数据加工和投递的业务逻辑,并通过简单代码片段完成实现,FC 后端会自动伸缩计算节点执行代码,您无需关注系统的基础设施建设、资源运维、伸缩、监控、报警等一系列繁琐工作,极大提升开发效率。同时 FC 作为 Serverless 应用,支持按量付费,避免长期预留机器资源带来的资源低效问题。


应用场景


OLTP 到 OLAP 的数据传输

什么是 OLTP 和 OLAP?


  • OLTP:指在线事务处理。通过以事务单位进行操作,并需要支持高并发写入和数据一致性。常见的服务如:关系型数据库( MySQL、PostgreSQL 等)、订单处理系统、客户关系管理系统等。
  • OLAP:指在线分析处理。通常用于从大量的数据中提取、聚合和分析信息,满足数据分析和决策支持。OLAP 系统通常以查询为基础,可以进行复杂的数据查询和分析操作。常见的服务如:AnalyticDB、ClickHouse、Power BI 等。


从上面描述看,OLTP 和 OLAP 是两种不同的数据处理服务,用于满足不同的业务需求。OLTP 系统适用于处理实时的交易和业务操作,而 OLAP 系统适用于从大量数据中进行分析和决策支持。在实际应用中,OLAP 的数据来源就是不同的 OLTP 数据库,所以 OLAP 本身不产生数据,通过 ETL 从 OLTP 抽取数据到 OLAP 数据库即数据仓库中做整合清洗达到可分析的数据标准。而 DTS + FC 恰好可以连接两类服务,打通数据通路。



CDC 事件驱动模型

什么是事件和事件驱动?


  • 事件:在业务系统中,事件是指系统或业务中发生的重要、有意义的事情或状态变化。事件可以是内部触发的,也可以是外部输入的,通常与业务流程、数据更改、用户操作等相关。
  • 事件驱动:事件驱动架构是一种系统设计范式,其中事件是系统中的核心组成部分。在这种架构中,系统的各个组件通过订阅和响应事件来进行通信协作,实现松耦合、可扩展的系统架构。


CDC 因用于捕获数据库中的数据变化,常被当做事件驱动后续流程的执行,常见的场景如下:


  • 订阅和发布系统:CDC 可作为订阅和发布系统的一部分,将数据库中的数据变化作为事件发布给相关的订阅者。这可以用于实现发布-订阅模式的事件驱动系统架构。
  • 数据校验:CDC 可将数据库中变化的数据推送给 FC。做定制化数据校验,校验数据的合理合规,这在金融、财务订单等系统非常重要。
  • 数据审计:CDC 可将数据库中变化的数据推送给 FC,经由 FC 持久化至任意三方服务,用于数据审计和数据可追溯需求。
  • 变更通知:当特定关键数据变动后,以任意方式发送特定通知,如:邮箱、钉钉、短信、电话等。



总结&展望


CDC 和 Serverless 函数计算的结合,可以实现实时的数据处理和响应,同时减少对基础设施的依赖和管理。在实际应用中,可将 CDC 作为事件驱动的数据源,将数据变化作为事件触发 Serverless 函数的执行。这样可以实现实时的数据处理和分发,同时利用 Serverless 函数计算的弹性扩展能力,根据实际负载动态分配计算资源。总而言之,DTS 和 Serverless 函数计算的集成为企业提供了更高效、灵活和可靠的数据处理解决方案。未来函数计算将探索更多的数据源(Oracle、PolarDB PostgreSQL、PolarDB MySQL 等),满足更多的业务需求。更多信息或需求请钉钉与我们联系,官方钉钉群号:11721331


更多功能体验请点击阅读原文。


2023 云原生产业大会阿里云云原生专场报名中

中国信通院将于2023 年 12 月 1 日举办“2023 云原生产业大会”,阿里云受邀参与本次大会,并将在主论坛分享《Serverless 范式升级,加速云上创新》主题演讲,同时阿里云会独立举办技术分论坛多位行业专家将带来对云原生产业的解读,深入剖析 Serverless 最新趋势,深度解读云原生产业趋势洞察,全面了解云原生为企业云上创新打造的产品与技术布局。

查看海报了解详细议程👇

扫码即可报名阿里云云原生专场


相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
23天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
25天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
84 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
22天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
25天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
72 3
|
24天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
22 1
|
30天前
|
人工智能 Cloud Native 容灾
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
|
1月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
97 3
|
1月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
34 2
|
1月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
1月前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    无影云桌面