解读 EventBridge Transform:数据转换和处理的灵活能力

作者:木则

阿里云 EventBridge 提供了强大而灵活的事件总线服务,它可以连接应用程序、阿里云云服务和阿里云 Serverless 服务来快速构建 EDA(Event-driven Architectures)事件驱动架构,驱动应用与应用,应用与云的连接。除此之外,它还可以作为流式的数据管道,在不同的数据仓库和数据处理或分析程序之间快速构建 ETL 系统。

本文将从以下几个方面展开对阿里云 EventBridge Transform 能力的介绍:

1)首先介绍 ETL 基本概念;

2)接着介绍 T(Transform)的能力;

3)最后探讨 EventBridge Transform 能力及落地场景。

什么是 ETL?

ETL 表示的是数据提取(Extract)、转换(Transform)和加载(Load)的过程,是数据集成的核心任务。三个步骤的主要作用如下:

1. 提取: 从数据源中提取数据,数据源可以是各种数据存储系统,比如消息队列、数据库等。

2. 转换: 对提取的数据进行转换操作,比如数据富化、数据清洗、数据聚合、数据拆分、格式转换等。

3. 加载: 将经过转换后的数据加载到目标服务中,比如数据仓库、数据湖、BI 系统等。ETL 应用广泛,它可以帮助企业管理和利用数据,实现数据驱动的决策和业务转型。

图片

Transform 应用场景

ETL 中的 T(Transform)可以对提取的数据进行转换操作,它具体的使用场景如下:

  • 数据富化

    调用外部服务获取额外信息丰富原始数据,提高数据的完整度和可应用性。

  • 数据清洗

    对原始数据进行清洗或验证,去除重复、缺失或者不准确的数据,确保数据的质量和准确性,或者对数据中的信息进行脱敏,确保 数据的安全性。

  • 数据聚合

    将多条原始数据进行合并,形成一个统一的数据视图,便于后续的快速分析和查询。

  • 数据拆分

    将单条原始数据根据业务需求拆分为多条数据。

  • 数据格式转换

    将上游数据转换为目标服务可接受的格式,比如将 Base64、Avro、PB 等格式的原始数据统一转换为 json 格式。

通过 Transform,可以将原始数据转化为一致性、准确性和安全性兼具的高质量数据,为后续的数据分析等操作提供可靠的基础。

业界 Transform 架构概述

目前业界的 Transform 能力,常见的做法有以下几类:

  1. 内置开箱即用的简单且轻量的 Transform 能力:

a. 数据清洗:去除数据中的敏感字段、处理噪音数据等;

b. 数据格式转换:将数据中的指定字段转换为特定格式。

  1. 内置 Custom Transform 能力:

用户可自定义 Transform 的逻辑。这种常见的做法是:用户根据 Custom Transform 的接口规范,实现接口并将实现的代码打成 jar 包,之后在系统导入该 jar 包即可使用自己编写的 Transform 逻辑。

  1. Remote Custom Transform 能力:

通过 Remote 调用的方式调用外部系统对数据进行 Transform。

上述 1、2 两种做法,由于其 Transform 与系统逻辑高度耦合,共享计算资源,并不太适合在 Transform 中进行重量级计算,仅适合应用在一些轻量、简单的业务场景。更优的做法是 Remote Custom Transform,它解耦了 Transform 业务逻辑与数据通路,更具灵活性。

阿里云 EventBridge Transform 设计

阿里云 EventBridge 通过集成阿里云函数计算实现了 Custom Transform 能力,通过 Remote 调用的方式将 Transform 业务逻辑与数据通路解耦。提高了 Transform 的灵活性,降低计算资源的挤兑风险。

链路架构

使用阿里云的函数计算进行 Transform 时,EventBridge 的整体链路如图所示。

  1. EventBridge 从 Source 侧提取数据。

  2. 提取的数据,先经过攒批(window)逻辑的处理,达到攒批条件后,数据将以批的方式交由下一步处理。

  3. 过滤(Filter)会遍历每一条数据,判断是否要丢弃该条数据。过滤完成后,数据将仍以批的方式交由下一步处理。

  4. 转换(Transform)阶段会调用函数计算,将数据交由用户编写的函数代码进行处理,Transform 阶段会等待函数执行完成并接收其返回的处理结果。

  5. EventBridge 将 Transform 处理后的数据加载到 Sink 侧。

图片

下文在此基础之上继续探讨链路中涉及的几个关键问题。

攒批问题

攒批可以批量聚合多条数据,在达到攒批条件后再将数据批量推送给下一步进行处理。EventBridge 将攒批能力置于 Transform 之前,通过攒批能力提升了数据的处理效率和吞吐量,并且显著降低 Transform 调用函数计算的次数。

EventBridge 从数量和时间两个条件来控制攒批的行为,只要达到其中一个条件时就会触发批量推送。

  • 批量推送条数: 单次可聚合的最大数据条数。
  • 批零推送间隔: 聚合的间隔时间,系统每到间隔时间会将已聚合的数据批量推送给下一步。
高可用问题

Transform 处理数据时可能出现异常,为避免异常导致数据丢失或影响链路的稳定性和可用性等。Transform 复用了 EventBridge 的重试、死信、容错等机制。

  • 重试机制

    由于网络异常、系统 crash 等原因导致 Transform 处理异常时,EventBridge 会按照用户选择的重试策略进行重试,目前支持退避重试、指数衰减重试两种方式。

  • 死信队列

    当数据超过重试次数后仍未 Transform 成功时,会变成死信数据。如果不希望死信数据被丢弃,用户可以配置死信队列,所有的死信数据会被 EventBridge 投递到死信队列中,目前 EventBridge 支持 Kafka、RocketMQ、MNS 作为死信队列的目标端。

  • 容错策略

    当 Transform 发生错误时,EventBridge 提供了以下两种处理方式:

    • 允许异常容错:当 Transform 异常发生时不会阻塞执行,会继续处理后续的数据。但是,EventBridge 会重试发生异常的数据,在超出重试策略后根据配置将数据投递至死信队列或直接丢弃。
    • 禁止容错:不允许错误,当 Transform 异常发生且超过重试策略配置时会阻塞执行。
费用问题

函数计算的调用和函数的执行会产生一定费用,包含函数调用、资源使用(CPU、Mem 等)和公网出流量三部分的费用。为减少函数计算产生的费用,函数计算定向减免了来自 EventBridge 的函数调用次数费用,即 EventBridge 触发函数计算产生的函数调用次数不再计入费用账单[3,4]。

产品交互

目前可在 EventBridge 的事件流中体验 Transform 能力,如图所示。

图片

对于阿里云函数计算来说,我们提供了两种方式:

1. 新建函数模板: 可在提供的模板之上,直接创建函数。产品层面提供了简易的 IDE,便于用户编写和调试代码。

图片

2. 绑定现有函数: 支持绑定用户已有的函数。

图片

更详细的使用可参考 Transform 帮助文档,见附录[4]。

Transform 优势

  • Serverless Transform 特性

    EventBridge Transform 基于 Serverless 函数计算构建,可享受 Serverless 服务免运维、资源弹性伸缩、按量付费等特性,具体如下:

    • 弹性:百毫秒内级别的伸缩,可满足波峰波谷、Burst、持续稳定等多样化的负载场景。
    • 免运维:用户无需关心和运维 Transform 运行环境及资源。
    • 按量付费:用户只需支付函数运行所产生的费用,更重要的是 EventBridge 调用函数所产生的调用次数费用将不计费。
  • 灵活性

    UDF 的方式可满足实际业务中复杂、个性化的需求。

  • 多语言支持

    支持 go、python、java、nodejs 等主流语言,可选择熟悉或适合的语言实现 Custom Transform 逻辑。

  • 架构解耦

    Remote Transform 的架构将 Transform 业务逻辑和系统逻辑结解耦,资源隔离,避免产生资源争抢等问题。

  • 模版支持

    产品层面提供了多种 Transform 函数模板,避免用户从零开始。

  • 攒批提效

    通过攒批,函数的入参为批量的消息,大幅提升了消息的处理效率和吞吐。

客户场景案例介绍

数据格式转换+架构升级:消息(MNS)->Transform->消息(RocketMQ)

客户面临架构升级问题,希望将系统依赖的 MNS 升级为 RocketMQ,但系统架构复杂,依赖 MNS 逻辑较多,且牵涉研发人员较多,预计全部升级架构需持续几个月时间。为保证架构升级过程中产生的数据一致性问题,客户使用 EventBridge 将旧架构的 MNS 消息实时同步到新架构的 RocketMQ 实例中,来保证数据在一致性。同时为了适配新架构中的消息设计,客户使用 FC Transform 先将旧消息转换为目标格式,再投递至 RocketMQ 中。

数据清洗+数据转储:消息(RocketMQ)->Transform->OSS

客户会将用户产生的视频数据投递到 RocketMQ 中,这些数据用户是可以查看的。为此客户选择 OSS 来进行文件存储,满足这种写多读少、低成本存储数据的场景。但是,视频数据中包含了若干敏感信息,为此客户使用 FC Transform 对视频中的敏感数据做清除后,再将视频投递到 OSS 中。

总结与展望

EventBridge Transform 通过集成函数计算,满足了实际业务中复杂、个性化的需求。其弹性伸缩、免运维、按量付费的特性深受客户青睐。未来 Transform 会通过集成更多的服务(阿里云工作流、HTTP Destination 等)解锁更多的业务场景,满足多样化需求。

相关链接:

[1] EventBridge-事件流-事件内容转换

https://help.aliyun.com/zh/eventbridge/user-guide/transform/?spm=a2c4g.11186623.0.0.501b5750w5RP1Q

[2] EventBridge-事件流产品首页

https://eventbridge.console.aliyun.com/cn-hangzhou/event-streamings

[3] 定向减免消息类产品和云工作流的函数调用次数费用

https://help.aliyun.com/zh/fc/product-overview/targeted-reduction-of-function-call-fees-for-message-products-and-cloud-workflows?spm=a2c4g.11186623.0.0.55c34df85cgbhf

[4] 函数计算计费项降价通知

https://help.aliyun.com/zh/fc/product-overview/function-calculation-billing-item-price-reduction-notice?spm=a2c4g.11186623.0.0.16965893V9CWsH

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

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

相关文章

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法 0.写在前面00.电脑配置01.思路 1.VisualSVN Server下载安装01.下载02.安装03.电脑命名不能有中文04.制作VisualSVN Server快捷方式05.License limits exceeded, Som…

已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘int‘.

文章目录 引言报错分析解决方案1:降低NumPy版本解决方案2:更改NumPy源码 结尾 引言 在Python编程中,NumPy是一个不可或缺的库,尤其在处理大规模数值计算时。但即使是这个强大的工具,也可能在使用过程中遇到问题。其中…

接口自动化测试框架开发(pytest+allure+aiohttp+ 用例自动生成)

近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越…

Android开发之部署opencv4

1 新建一个空项目 不再多说 2从官网下载opencv https://opencv.org/releases/ 下载opencv-4.9.0-android-sdk 3 导入模块 点击file->new->Import Module选择解压之后的opencv-android-sdk文件夹中的SDk文件夹,并将:sdk修改为:opencv(我的已安…

Linux中Makefile用法及变量

一、介绍 1.Makefile概述 (1)make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE 都有这个命令,比如:Delphi的make,Visual C的nmake,Linux下GNU的make (…

工业相机+镜头选型及靶面、焦距计算等相关详解

工业相机镜头选型及靶面、焦距计算等相关详解 着重讲述相机的各个参数及使用意义总结相机镜头选型主要参数的推理计算 0. 工业相机相关概念简介 相机与镜头一览 工业相机与镜头实物图如下图所示: 常见的相机有两种供电方式:一种是电源线供电&#xff0…

怎么抹掉 Macbook系统 并将它还原为出厂设置

抹掉 Mac 并将它还原为出厂设置 借助“抹掉所有内容和设置”这项功能,你可以快速安全地抹掉所有设置、数据和 App,同时保留当前安装的操作系统。 使用“抹掉所有内容和设置” 这项功能要求装有 macOS Monterey 或更高版本,且使用搭载 Apple 芯…

计算机毕业设计 基于SpringBoot的律师事务所案件管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Linux的一些快捷键(hot keyboard)

Ctrl Alt t:打开bash(就是命令框窗口) Ctrl Alt F3~F6:打开tty终端(纯命令行终端,每个Linux发行版不相同,我的是Ubuntu20版) Alt F4:关闭当前窗口(Windo…

快乐学Python,使用爬虫爬取电视剧信息,构建评分数据集

在前面几篇文章中,我们了解了Python爬虫技术的三个基础环节:下载网页、提取数据以及保存数据。 这一篇文章,我们通过实际操作来将三个环节串联起来,以国产电视剧为例,构建我们的电视剧评分数据集。 1、需求描述 收集…

NOC总线(2)

1. NoC的路由 在NoC交换信息时,需要确定从源节点到目标节点所经过的路径,这时就需要路由算法来确定该路径。路由算法分为静态路由算法和动态路由算法两种。 静态路由算法对于两节点之间的路径是固定的,结构简单,便于硬件实…

FPGA中跨时钟域传数据——(1)单bit脉冲

FPGA中跨时钟域传数据——(1)单bit脉冲 亚稳态模型由快时钟传到慢时钟由慢时钟传到快时钟 亚稳态模型 必须在建立时间和保持时间内,数据不变化,否则会产生亚稳态。 由快时钟传到慢时钟 在快时钟里面进行数据展宽(…

时间序列预测 — CNN-LSTM-Attention实现多变量负荷预测(Tensorflow):多变量滚动

专栏链接:https://blog.csdn.net/qq_41921826/category_12495091.html 专栏内容 ​ 所有文章提供源代码、数据集、效果可视化 ​ 文章多次上领域内容榜、每日必看榜单、全站综合热榜 ​ ​ ​ ​ ​ ​ ​ 时间序列预测存在的问题 ​ 现有的大量方法没有真正的预测未…

ELK+Filebeat 部署实验

Filebeat是轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行…

CentOS 7 安装配置MySQL

目录 一、安装MySQL​编辑​编辑 1、检查MySQL是否安装及版本信息​编辑 2、卸载 2.1 rpm格式安装的mysql卸载方式 2.2 二进制包格式安装的mysql卸载 3、安装 二、配置MySQL 1、修改MySQL临时密码 2、允许远程访问 2.1 修改MySQL允许任何人连接 2.2 防火墙的问题 2…

AnimatedDrawings:让绘图动起来

老样子,先上图片和官网。这个项目是让绘制的动画图片动起来,还能绑定人体的运动进行行为定制。 快速开始 1. 下载代码并进入文件夹,启动一键安装 git clone https://github.com/facebookresearch/AnimatedDrawings.gitcd AnimatedDrawingspip…

java web servlet 学习系统进度管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web学习系统进度管理系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环 境为TOMCAT7.0,Myeclipse8.5开发,数据库为…

图神经网络X项目|基于图神经网络的电商行为的预测(5%)

文章目录 Jupyter Notebook 学习人工智能的好帮手数据集数据集下载数据集调用数据集应用技巧——获取不重复的编号数据集应用技巧——随机采样数据集应用技巧——抽取前N项进行模拟测试 数据集构建技巧一——查看数据集构建进度 Jupyter Notebook 学习人工智能的好帮手 【Jupy…

thinkphp5实战之phpstudy v8环境搭建,解决Not Found找不到路径问题

引言 thinkphp以快速、简约的大道至简的思想广受欢迎,适合开发小型项目。本地环境下,phpstudy v8是一款比较优秀的集成环境软件。部署完项目后,访问的时候傻眼,报错。 解决方案 不要慌,这个是伪静态的原因。选择apach…

DophineScheduler通俗版

1.DophineScheduler的架构 ZooKeeper: AlertServer: UI: ApiServer: 一个租户下可以有多个用户;一个用户可以有多个项目一个项目可以有多个工作流定义,每个工作流定义只属于一个项目;一个租户可…