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

news2024/11/15 22:39:01

云布道师

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

本文将从以下几个方面展开对阿里云 EventBridge Transform 能力的介绍:
1)首先介绍 ETL 基本概念;
2)接着介绍 T(Transform)的能力;
3)最后探讨 EventBridge Transform 能力及落地场景。

什么是 ETL?

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

  • 提取:从数据源中提取数据,数据源可以是各种数据存储系统,比如消息队列、数据库等。
  • 转换:对提取的数据进行转换操作,比如数据富化、数据清洗、数据聚合、数据拆分、格式转换等。
  • 加载:将经过转换后的数据加载到目标服务中,比如数据仓库、数据湖、BI 系统等。
    ETL 应用广泛,它可以帮助企业管理和利用数据,实现数据驱动的决策和业务转型。
    在这里插入图片描述

Transform 应用场景

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

  • 数据富化

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

  • 数据清洗

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

  • 数据聚合

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

  • 数据拆分

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

  • 数据格式转换

将上游数据转换为目标服务可接受的格式,比如将 Base64、Avro、PB 等格式的原始数据统一转换为 json 格式。
通过 Transform,可以将原始数据转化为一致性、准确性和安全性兼具的高质量数据,为后续的数据分析等操作提供可靠的基础。

业界 Transform 架构概述

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

  • 内置开箱即用的简单且轻量的 Transform 能力:
    a. 数据清洗:去除数据中的敏感字段、处理噪音数据等;
    b. 数据格式转换:将数据中的指定字段转换为特定格式。
  • 内置 Custom Transform 能力:
    用户可自定义 Transform 的逻辑。这种常见的做法是:用户根据 Custom Transform 的接口规范,实现接口并将实现的代码打成 jar 包,之后在系统导入该 jar 包即可使用自己编写的 Transform 逻辑。
  • Remote Custom Transform 能力:
    通过 Remote 调用的方式调用外部系统对数据进行 Transform。
    上述 1、2 两种做法,由于其 Transform 与系统逻辑高度耦合,共享计算资源,并不太适合在 Transform 中进行重量级计算,仅适合应用在一些轻量、简单的业务场景。更优的做法是 Remote Custom Transform,它解耦了 Transform 业务逻辑与数据通路,更具灵活性。

阿里云 EventBridge Transform 设计

阿里云 EventBridge 通过集成阿里云函数计算实现了 Custom Transform 能力,通过 Remote 调用的方式将 Transform 业务逻辑与数据通路解耦。提高了 Transform 的灵活性,降低计算资源的挤兑风险。
链路架构
使用阿里云的函数计算进行 Transform 时,EventBridge 的整体链路如图所示。

  • EventBridge 从 Source 侧提取数据。
  • 提取的数据,先经过攒批(window)逻辑的处理,达到攒批条件后,数据将以批的方式交由下一步处理。
  • 过滤(Filter)会遍历每一条数据,判断是否要丢弃该条数据。过滤完成后,数据将仍以批的方式交由下一步处理。
  • 转换(Transform)阶段会调用函数计算,将数据交由用户编写的函数代码进行处理,Transform 阶段会等待函数执行完成并接收其返回的处理结果。
  • 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

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

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

相关文章

从一到无穷大 #21 从基于多数据模型分析负载的Benchmark讨论多模数据库的发展方向

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言M2Bench测试结果从Lindorm看待多模的发展方向总结 引言 《M2Bench: A Database …

echarts:折线图的常用操作

文章目录 背景基础折线图添加一些样式区域高亮 背景 本文将带大家一步一步的熟悉折线图相 API,关于如何初始化,可以看我这篇文章 echars:图表中核心的概念,本文只讲核心配置。 基础折线图 option {xAxis: {type: category,// …

VUE+Vis.js鼠标悬浮title提前显示BUG解决方法

在使用VUEVis.js做拓扑图,利用鼠标悬浮放在图标展示设备信息时,发现鼠标一放在图标上面时,标题表会提前在放置的元素下显示,鼠标再放到图标上去元素才会隐藏变成悬浮状态 解决方法: 添加一个div元素,设置v…

从零开始训练 YOLOv8最新8.1版本教程说明(包含Mac、Windows、Linux端 )同之前的项目版本代码有区别

从零开始训练 YOLOv8 - 最新8.1版本教程说明 本文适用Windows/Linux/Mac:从零开始使用Windows/Linux/Mac训练 YOLOv8 算法项目 《芒果 YOLOv8 目标检测算法 改进》 适用于芒果专栏改进 YOLOv8 算法 文章目录 官方 YOLOv8 算法介绍改进网络代码汇总第一步 配置环境1.1 系列配…

01、领域驱动设计:微服务设计为什么要选择DDD总结

目录 1、前言 2、软件架构模式的演进 3、微服务设计和拆分的困境 4、为什么 DDD适合微服务 5、DDD与微服务的关系 6、总结 1、前言 我们知道,微服务设计过程中往往会面临边界如何划定的问题,不同的人会根据自己对微服务的理 解而拆分出不同的微服…

搭建《幻兽帕鲁》服务器需要怎样配置的云服务器?

随着《幻兽帕鲁》这款游戏的日益流行,越来越多的玩家希望能够在自己的服务器上体验这款游戏。然而,搭建一个稳定、高效的游戏服务器需要仔细的规划和配置。本文将分享搭建《幻兽帕鲁》服务器所需的配置及搭建步骤,助力大家获得更加畅快的游戏…

STM32 USB DFU固件升级的设计与实现

STM32微控制器支持通过USB DFU(Device Firmware Upgrade)协议进行固件升级,这使得设备可以在不需要特殊的调试工具或编程器的情况下,通过USB接口实现固件的更新。在本文中,我们将介绍如何设计和实现STM32 USB DFU固件升…

呼叫中心的管理流程

很难想象同一个客户不同时间来电购买同样的产品会得到完全不同的服务过程。许多呼叫中心都有这种“无章可循”或“有章不循”的现象,这也是导致呼叫中心低效率、高成本、高投诉的重要原因,同时也是无法建立良好客户体验的原因之一。呼叫中心流程管理的目…

yarn集群HDFS datanode无法启动问题排查

一、问题场景 hdfs无法访问,通过jps命令查看进程,发现namenode启动成功,但是所有datanode都没有启动,重启集群(start-dfs.sh)后仍然一样 二、原因分析 先看下启动的日志有无报错。打开Hadoop的日志目录 …

《WebKit 技术内幕》学习之五(3): HTML解释器和DOM 模型

3 DOM的事件机制 基于 WebKit 的浏览器事件处理过程:首先检测事件发生处的元素有无监听者,如果网页的相关节点注册了事件的监听者则浏览器会将事件派发给 WebKit 内核来处理。另外浏览器可能也需要处理这样的事件(浏览器对于有些事件必须响应…

dayjs挂载到vue3全局属性上面

首先就是安装dayjs npm install dayjs 打开main.ts //dayjs import * as dayjs from dayjs //引入插件 import * as relativeTime from dayjs/plugin/relativeTime.js import * as isLeapYear from dayjs/plugin/isLeapYear // 导入插件 import dayjs/locale/zh-cn // 导入本…

“史上最大数据泄露事件”是真还是假?

昨(2024年1月23日)天深夜,腾迅网>观点新媒体官方账号发布的《网络安全公司警告史上最大数据泄露事件 腾讯或占15亿条》这一消息,真让人闻之顿生石破惊天之感!尤其是笔者,因长期被网络假消息欺骗&#xf…

【51单片机】点亮第一个LED灯

目录 点亮第一个LED灯单片机 GPIO 介绍GPIO 概念GPIO 结构 LED简介软件设计点亮D1指示灯LED流水灯 橙色 点亮第一个LED灯 单片机 GPIO 介绍 GPIO 概念 GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制…

【Go面试向】defer与time.sleep初探

【Go面试向】defer与time.sleep初探 大家好 我是寸铁👊 总结了一篇defer传参与time.sleep初探的文章✨ 喜欢的小伙伴可以点点关注 💝 请大家看下面这段代码,看运行结果会出现什么,为什么? 问题 demo package mainim…

pycharm安装过程

1、安装包官网下载 PyCharm: the Python IDE for Professional Developers by JetBrains 点击下载 下拉选择社区版本 选择下载 下载完成后,双击exe安装。 安装完成,生成的桌面快捷方式 同意并继续 进入开发界面

Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

目录 搭建 TFTP 服务文件下载更多内容 TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号…

【CANoe使用大全】——DBC数据库制作

文章目录 1.DBC数据库选择1.1.DBC模板选择1.3. 新建报文1.4. 新建信号1.5.数值表建立 2. DBC导入 1.DBC数据库选择 首先找到DBC编辑器入口 1.1.DBC模板选择 举例说明: 新建选择CANFD的模板 1.3. 新建报文 注意上图中报文周期“Cycle Time”处于不可编辑状态…

最新综述!3D Gaussian Splatting

作者:小柠檬 | 来源:3DCV 在公众号「3DCV」后台,回复「原论文」可获取论文 文章介绍了3D高斯喷洒在场景重建和渲染中的应用,并探讨了其在机器学习和计算机视觉领域的潜在应用。文章还提供了3D高斯喷洒的基本原理和优化方法&#x…

基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(五)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

HTTP动态代理的原理及其对网络性能的影响

HTTP动态代理是一种通过代理服务器来转发HTTP请求和响应数据的网络技术,它可以优化网络性能、提高网络安全性,并解决跨域请求的问题。本文将详细介绍HTTP动态代理的原理及其对网络性能的影响。 一、HTTP动态代理的原理 HTTP动态代理的基本原理是在客户…