作者:李凯(凯易)
EvenBridge 集成概述
EventBridge 是阿里云所推出了一款无服务器事件总线,其目标是拓展事件生态,打破系统间的数据孤岛,建立事件集成生态。提供统一的事件标准化接入及管理能力,完善集成与被集成通路,帮助客户快速实现事件驱动的核心原子功能,可将 EventBridge 快速集成至 BPM、RPA、CRM 等系统。
- 事件标准化:拥抱 CloudEvents 1.0 开源社区标准协议,原生支持 CloudEvents 社区 SDK 和 API,全面拥抱开源社区事件标准生态;
- 接入标准化:提供标准事件推送协议 PutEvent,并支持 Pull 和 Push 两种事件接入模型,可有效降低事件接入难度,提供云上完善的事件接入标准化流程;
- 组件标准化:封装标准的事件下游组件工具链体系,包括 Schema 注册、事件分析、事件检索、事件仪表盘等。提供完善的事件工具链生态。
在集成领域 EventBridge 重点打造事件集成和数据集成两类核心场景,下面将围绕这两类场景具体展开描述。
事件集成
目前 EventBridge 已经拥有 80+ 云产品的事件源,800+ 种事件类型。整个事件生态还正在逐步丰富中。
- 首先在 EventBridge 控制台可以看见一个名为 default 的事件总线,云产品的事件都会投递到这个总线;
- 然后点击创建规则,就可以选择所关心的云产品以及它的相关事件进行事件的监听和投递。
OSS 事件集成
以 OSS 事件源为例,来讲解一下如何集成 OSS 事件。
下面演示一下事件驱动的在线文件解压服务:
- 在 OSS Bucket 下面会有一个 zip 文件夹存放需要解压的文件,一个 unzip 文件夹存放解压后的文件;
- 当上传文件到 OSS Bucket 之后,会触发文件上传的事件并投递到 EventBridge 的云服务专用总线;
- 然后会使用一个事件规则过滤 zip 这个 bucket 的事件并投递到解压服务的 HTTP Endpoint;
- 解压服务会在收到事件之后,根据事件里面的文件路径从 OSS 下载文件解压,并在解压之后将文件传到 unzip 目录下;
- 同时,还会有一个事件规则,监听 unzip 目录的文件上传事件,并将事件转换后推送到钉钉群。
一起来看下是如何实现的:
前往下方链接查看视频:
1)首先创建一个 bucket,下面有一个 zip 目录用于存放上传的压缩文件,一个 unzip 目录用于存放解压后的文件。
解压服务的源码地址为:
也可以使用 ASK 直接部署,yaml 文件地址为:
3)创建一个事件规则监听 zip 目录下的上传文件的事件,并投递到解压服务的 HTTP Endpoint。
4)再创建一个事件规则监听 unzip 目录的事件,投递解压事件到钉钉群。
对于变量和模板的配置可以参考官方文档 :
。
EventBridge 会通过 JSONPath 的方式从事件中提取参数,然后把这些值放到变量中,最后通过模板的定义渲染出最终的输出投递到事件目标。OSS 事件源的事件格式也可以参考官方文档 :
,并根据实际的业务需要使用 JSONPath 定义变量。5)最后,通过 oss 控制台上传一个文件进行验证。
以自定义事件源以及云产品事件目标的方式集成云产品
刚才演示的 demo 是集成云服务的事件源,下面再通过一个 demo 看一下如何通过以自定义事件源以及云产品事件目标的方式集成云产品。
前往下方链接查看视频:
这个 demo 的最终效果是通过 EventBridge 自动进行数据的清洗,并投递到 RDS 中去。事件内容是一个 JSON,拥有两个字段一个名字一个年龄,现在希望将把大于 10 岁的用户过滤出来并存储到 RDS 中。
{ "source": [ "my.user" ], "data": { "messageBody": { "age": [ { "numeric": [ ">", 10 ] } ] } } }
数值匹配可以参考官方文档:
4) 点击下一步,选择事件目标为数据库,填写数据库信息,配置转化规则,完成创建。
数据集成
事件流是 EventBridge 为数据集成提供的一个更为轻量化、实时的端到端的事件流试的通道,主要目标是将事件在两个端点之间进行数据同步,同时提供过滤和转换的功能。目前已经支持阿里云各消息产品之间的事件流转。
下面将通过一个例子讲解如何使用事件流,将 RocketMQ 的消息路由到 MNS Queue,将两个产品集成起来。
整体的结构如图所示,通过EventBridge 将 RocketMQ 中 TAG 为 MNS 的消息路由到 MNQ Queue。
前往下方链接查看视频:
- 首先创建一个事件流,选择源 RocketMQ 实例,填写 Tag 为 mns。
- 事件模式内容留空表示匹配所有。
- 目标选择 MNS,选择目标队列完成创建。
- 完成创建之后,点击启动,启动事件流任务。
事件流启动完成之后,我们就可以通过控制台或者 SDK 发送消息到源 RocketMQ Topic 里面。当有 Tag 为 mns 的时候,我们可以看见消息路由到了 mns;当有 Tag 不为 mns 的时候,消息就不会路由到 mns。
总结
本篇文章主要向大家分享了通过 EventBridge 如何集成云产品事件源,如何集成云产品事件目标以及通过事件流如何集成消息产品。
本文为阿里云原创内容,未经允许不得转载。