开发者学堂课程【EventBridge 入门课程 :通过 EventBridge 快速集成云服务(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1220/detail/18281
通过 EventBridge 快速集成云服务
内容介绍
一、EventBridge 介绍
二、事件集成
三、事件流集成
一、EventBridge 介绍
EventBridge 是阿里云所推出的一款无服务器事件总线。它的目标是帮助企业落地 EDA 架构作为事件的枢纽。首先介绍什么是 EDA 架构。EDA 的全名为事件驱动架构。它不同于传统使用 RPC 的那种方式。一个 request 必须要等到response 才能进入下一个任务。在 eda 架构下,系统之间的调用以及流程控制都是通过事件的形式来进行流转的。可以看见左边疑问的 producer 发生了事件之后。只需要将这个事件投入到事件中心之后就可以了。不像使用 IPC 的那种方式可能需要等到远端的响应确认这个事件片段真的有收到了才能进行下一步的操作。而右边的 event consumer 只需要接收事件并进行相应的处理即可。同时不同于传统的 MQ Event bridge 使用运营商标准事件格式cloud events 来描述事件。并且支持事件的过滤以及事件路由的能力。同时还可以将事件的内容主动推送给下游的服务。
在 event bridge中整体的事件流如下。事件源是产生事件的来源。现在在event bridge 中集成了阿里云服务官方事件。用户也可以自定义事件源通过 sdk 将事件发送到事件总线里面去。同时也可以把一些消息产品直接作为一个事件源,把事件导入到总线。或者通过 HE 的方式快速将 saas 应用进入到总线里面去。事件总线是 event bridge 中存储事件的一个地方,分为云服务专用总线以及自定义总线。所有的阿里云官方的事件都会投递到云服务专用总线里面。而其他事件源会投回到 sting 总线。可以定义事件的规则来进行事件的过滤和转换。 Event bridge 现在已经支持了十种左右的过滤和匹配的操作。例如用户可以根据事件的内容进行过滤,选择部分的事件投递到下游。事件目标是接收事件下游。现在已经支持了很多种的事件目标。例如用户可以直接将事件投进到钉钉群。
二、事件集成
下面来介绍一下怎么来进行集成 Event bridge 上面的试营云产品的事件。
现在 Event Bridge已经拥有了80多种云产品的事件源。同时也拥有八百多种事件的类型。整个的事件的生态还正在逐步的一个丰富的过程中。
总线的控制台可以看见一个名为 default 的事件总线。云产品的事件都会投递到这个总线中去。点击创建规则可以选择所关心的云产品以及他相关的事件进行事件的监听和投递。下面会以 oasis 事件源为例,来讲解一下如何集成os事件。
现在主要分为四个类型,操作审计相关云监控配置成绩相关。还有以及云产品相关的一些事件。例如 put object 就是上传文件等。其他的云产品的事件源也类似,基本上都可以分为这几个类型的事件。下面将演示一个 sample 是基于事件驱动的一个在线文件解压服务。这是它的整体的一个结构。
在 bucket 下面会有一个 Zip 文件夹存放需要解压的文件。一个 on zip 文件夹存放解压后的文件。会上传文件到 ZIP文件夹。上传过后,会触发文件上传的事件。并投递到 Event bridge 云服务专用总线。会使用一个事件规则来对 zip这个文件夹的事件进行过滤。然后把这个事件投递到解压服务的 Http point。在收到事件过后,根据事件里的文件路径,从 oss 里面下载文件下来,然后进行解压将文件上传到 bucket on ZIP 目录下面。同时,还有一个实验规则坚定的是 zip 目录的文件上传事件。然后把事件经过转换过后,投递到了钉钉群。下面一起来看一下怎么操作?
首先这里创建好了一个 bucket。下面有一个 ZIP 目录。用于存放上传的压缩文件。一个 on ZIP 目录用于存放解压的文件。这里使用了 ack 部署好了一个解压服务,并且暴露了一个工网访问的地址。下面创建事件规则来监听 ZIP 目录下的上传文件事件,并投递到解压服务的那个 HTTP point。填写一下名称。而这里选择 oa 的事件源。这里应该由于后面会通过控制台进行上传,随选的 post object。然后新生 subject 来匹配 ZIP 目录。而这里选择 http 的 point。填入解压服务的地址。完整创建。下面再创建一个事件规则来监听 on zip 目录的事件。同样这里选择事件源为 oss。然后这里选择事件类型为 object。也新增一个 subject。来匹配 on zip 目录。然后填入钉钉机器人的地址。然后还有密钥,以及变量定义和模板。还要完成创建。这里看一下这个事件目标的配置。Event bridge 这里会通过 past 方式。从事件里面提取参数。然后把这些值放到变量中去。最后通过模板定义渲染出那个最终的输出结果投递到事件目标。这是 put object 的一个事件的样例。把文件的名字提出来,推送到经营机器人。然后现在的路径文件名所的路径是 data object。Data oss object key。所以这边所配置的 name 的变量就是这个。在模板里面就可以引用定义好的变量。然后把定义的 name 变量放到了模板里面,进行动态的渲染。下面上传文件来验证一下。点击上面文件选择压缩文件,点击上传。到这里已经上去了。然后打开 ZIP 目录。可以看到,刚刚上传上的已经解压了。然后这是公司的那个文件内容。来看一下钉钉群也收到那个通知。还可以在事件追踪查看事件的内容以及投递的轨迹。而这一选下事件源。一看到两个事件。总结一下操作步骤。
首先部署解压服务,然后在云服务专用总线下创建事件规则,将 zip 文件夹下的上传文件事件推送到解压服务,再创建钉钉机器人,在云服务专用总线下创建事件规则,将 unzip 文件夹下的上传文件事件推送到钉钉群,上传文件进行验证。
下面我们再通过一个 sample 看一下如何通过以自定义事件源以及云产品事件为目标的方式集成云产品。这个 sample 的最终效果是通过 Event bridge 来进行自动的数据的清洗,并投递到 Rds 中去。事件内容是 jason 的格式。那以看见左边拥有两个字段,一个 name,一个age。希望把大于十岁的用户提取并过滤出来。然后转存到 RDS 的数据库里。整体的架构如所示。
使用了 MNS Queue 作为自定义事件源。然后并通过 Event bridge 的过滤。转换过后,直接输出到RDS 中去。看一下如何实现这个过程。首先已经创建好了一个 MNS Queue。创建一个自定义事件总线。填一下事件总线的名称和事件源的名称。选择提供方为 MS。这里可以稍后再来配置。然后可以看见事件源已经有了一个MS 事件源正在运行了。那下面创建规则,投递到 RDS。这里已经创建好了一个 RDS 的实例以及数据库的表了。然后拥有这几个字段。这里选择自定义事件源,配置一下过滤规则。可以看见过滤规则稍微会复杂一点。看一下自定义事件源事件格式。在data 下面有一个 message body 作为我们 MSQ 的消息内容。如果我们的 ms 的消息内容是一个 Jason 格式的话。这里会是一个 jason。这样就可以使用事件模式来进行过滤了。在这里因为是个 Jason,所以就可以把那个 age 提取出来。进行过滤,仅需要 age 大于十的这些事件。进行下一步。选择数据库的实例。然后填写数据库账号和密码。选择一下安全组。填一下目标的表明。然后这边。配一下事件的 jason pass。以及可对应的数据库的列的一个应酬关系。然后就完全创建。看一下事件的配置,这里同样自动生成的那个变量,以及 C 语句。当然也可以自己直接编写这些变量的定义以及模板来进行一些配置。下面来验证一下。先通过 MNS Queue 发送消息。这个 age 是首先发个大于十的。发送成功了。可以看见这个事件已经成功写到数据库里面,下面不再来一个小于十的。可以看那个事件就被直接被过滤掉了。资金总线的话也可以在深圳追踪查看事件。这是第一条。可以看见被成功投递到数据库里面。这是第二条。Age 是小于十的。可以看见事件直接就被过滤掉了。总结一下过程。
首先创建 MSQ,然后创建 RDS 实例,创建数据库,配置一个自定义总线,选择 MNS Queue 作为自定义事件源。然后配置事件规则和过滤条件,过滤条件是 age 大于十。然后配置事件目标,将它投递到 RDS 里面。然后最终发送了两条消息进行验证。