共计 3619 个字符,预计需要花费 10 分钟才能阅读完成。
作者:李凯(凯易)
EvenBridge 集成概述
EventBridge 是阿里云所推出了一款无服务器事件总线,其指标是拓展事件生态,突破零碎间的数据孤岛,建设事件集成生态。提供对立的事件标准化接入及治理能力,欠缺集成与被集成通路,帮忙客户疾速实现事件驱动的外围原子性能,可将 EventBridge 疾速集成至 BPM、RPA、CRM 等零碎。
EventBridge 通过事件标准化,接入标准化,组件标准化三个方向作为支点拓展 EventBridge 事件生态:
- 事件标准化 :拥抱 CloudEvents 1.0 开源社区标准协议,原生反对 CloudEvents 社区 SDK 和 API,全面拥抱开源社区事件规范生态;
- 接入标准化 :提供规范事件推送协定 PutEvent,并反对 Pull 和 Push 两种事件接入模型,可无效升高事件接入难度,提供云上欠缺的事件接入标准化流程;
- 组件标准化 :封装规范的事件上游组件工具链体系,包含 Schema 注册、事件剖析、事件检索、事件仪表盘等。提供欠缺的事件工具链生态。
在集成畛域 EventBridge 重点打造事件集成和数据集成两类外围场景,上面将围绕这两类场景具体开展形容。
事件集成
目前 EventBridge 曾经领有 80+ 云产品的事件源,800+ 种事件类型。整个事件生态还正在逐渐丰盛中。
那么,EventBridge 如何实现云产品的事件集成呢?
- 首先在 EventBridge 控制台能够看见一个名为 default 的事件总线,云产品的事件都会投递到这个总线;
- 而后点击创立规定,就能够抉择所关怀的云产品以及它的相干事件进行事件的监听和投递。
上面以两个例子为例,来看下 EventBridge 事件集成的形式。
OSS 事件集成
以 OSS 事件源为例,来解说一下如何集成 OSS 事件。
OSS 事件当初次要分为 4 类,操作审计相干、云监控相干、配置审计相干、以及云产品相干的事件例如 PutObject 上传文件等等。其余的云产品的事件源也相似,根本都能够分为这几个类型的事件。
上面演示一下事件驱动的在线文件解压服务:
- 在 OSS Bucket 上面会有一个 zip 文件夹寄存须要解压的文件,一个 unzip 文件夹寄存解压后的文件;
- 当上传文件到 OSS Bucket 之后,会触发文件上传的事件并投递到 EventBridge 的云服务专用总线;
- 而后会应用一个事件规定过滤 zip 这个 bucket 的事件并投递到解压服务的 HTTP Endpoint;
- 解压服务会在收到事件之后,依据事件外面的文件门路从 OSS 下载文件解压,并在解压之后将文件传到 unzip 目录下;
- 同时,还会有一个事件规定,监听 unzip 目录的文件上传事件,并将事件转换后推送到钉钉群。
一起来看下是如何实现的:
返回下方链接查看视频:
https://www.bilibili.com/video/BV1s44y1g7dk/
1)首先创立一个 bucket,上面有一个 zip 目录用于寄存上传的压缩文件,一个 unzip 目录用于寄存解压后的文件。
2) 部署解压服务,并且裸露公网拜访的地址。
解压服务的源码地址为:
https://github.com/AliyunContainerService/serverless-k8s-examples/tree/master/oss-unzip?spm=a2c6h.12873639.article-detail.15.5a585d52apSWbk
也能够应用 ASK 间接部署,yaml 文件地址为:
https://github.com/AliyunContainerService/serverless-k8s-examples/blob/master/oss-unzip/hack/oss-unzip.yaml
3)创立一个事件规定监听 zip 目录下的上传文件的事件,并投递到解压服务的 HTTP Endpoint。
这里应用 subject,匹配 zip 目录。
4)再创立一个事件规定监听 unzip 目录的事件,投递解压事件到钉钉群。
这里同样应用 subject,匹配 unzip 目录。
对于变量和模板的配置能够参考官网文档:
https://help.aliyun.com/document_detail/181429.html。
EventBridge 会通过 JSONPath 的形式从事件中提取参数,而后把这些值放到变量中,最初通过模板的定义渲染出最终的输入投递到事件指标。OSS 事件源的事件格局也能够参考官网文档:https://help.aliyun.com/document_detail/205739.html#section-g8i-7p9-xpk **,并依据理论的业务须要应用 JSONPath 定义变量。5)最初,通过 oss 控制台上传一个文件进行验证。
能够看到刚刚上传的 eventbridge.zip 曾经解压到并上传上来了,也能够在钉钉群外面,收到解压实现的告诉。此外,还能够在事件追踪这边查看事件的内容曾经投递的轨迹。
能够看到有两个上传事件:一个是通过控制台上传的事件,一个是解压文件后上传的事件。
能够查看轨迹,都胜利投递到理解压服务的 HTTP Endpoint 以及钉钉机器人。
以自定义事件源以及云产品事件指标的形式集成云产品
方才演示的 demo 是集成云服务的事件源,上面再通过一个 demo 看一下如何通过以自定义事件源以及云产品事件指标的形式集成云产品。
返回下方链接查看视频:
https://www.bilibili.com/video/BV1QF411M7xv/
这个 demo 的最终成果是通过 EventBridge 主动进行数据的荡涤,并投递到 RDS 中去。事件内容是一个 JSON,领有两个字段一个名字一个年龄,当初心愿将把大于 10 岁的用户过滤出来并存储到 RDS 中。
整体的架构如图所示,应用一个 MNS Queue 作为自定义事件源,并通过 EventBridge 过滤并转换事件最终间接输入到 RDS 中去。
1)首先曾经创立好了一个 MNS Queue,创立好一个 RDS 实例以及数据库表,表构造如下所示:
2)创立一个自定事件总线,抉择事件提供方为 MNS,队列为提前创立好的队列;
创立好了之后,咱们就能够在事件源这里看见一个曾经正在运行中的事件源;
3)接下来创立规定投递到 RDS
配置的事件模式内容如下:
{
"source": ["my.user"],
"data": {
"messageBody": {
"age": [
{
"numeric": [
">",
10
]
}
]
}
}
}
数值匹配能够参考官网文档:
https://help.aliyun.com/document_detail/181432.html#section-dgh-5cq-w6c
4) 点击下一步,抉择事件指标为数据库,填写数据库信息,配置转化规定,实现创立。
5)最初,先用 MNS Queue 发送一个音讯,这个的 age 是大于 10 的。
能够看见这条事件就输入到了 RDS 外面了。
上面再发一个小于 10 的音讯到 MNS Queue。
这条事件就被过滤掉了,没有输入到 RDS。
也可通过事件追踪查看事件:
能够看到一条事件胜利投递到了 RDS,一条事件被过滤掉了,没有进行投递。
数据集成
事件流是 EventBridge 为数据集成提供的一个更为轻量化、实时的端到端的事件流试的通道,次要指标是将事件在两个端点之间进行数据同步,同时提供过滤和转换的性能。目前曾经反对阿里云各音讯产品之间的事件流转。
不同于事件总线模型,在事件流中,并不需要事件总线,其 1:1 的模型更加的轻量,间接到指标的形式也让事件更加的实时;通过事件流,咱们能够实现不同零碎之间的协定转换,数据同步,跨地区备份的能力。
上面将通过一个例子解说如何应用事件流,将 RocketMQ 的音讯路由到 MNS Queue,将两个产品集成起来。
整体的构造如图所示,通过 EventBridge 将 RocketMQ 中 TAG 为 MNS 的音讯路由到 MNQ Queue。
一起看下怎么实现:
返回下方链接查看视频:
https://www.bilibili.com/video/BV1D44y1G7GK/
- 首先创立一个事件流,抉择源 RocketMQ 实例,填写 Tag 为 mns。
- 事件模式内容留空示意匹配所有。
- 指标抉择 MNS,抉择指标队列实现创立。
- 实现创立之后,点击启动,启动事件流工作。
事件流启动实现之后,咱们就能够通过控制台或者 SDK 发送音讯到源 RocketMQ Topic 外面。当有 Tag 为 mns 的时候,咱们能够看见音讯路由到了 mns;当有 Tag 不为 mns 的时候,音讯就不会路由到 mns。
总结
本篇文章次要向大家分享了通过 EventBridge 如何集成云产品事件源,如何集成云产品事件指标以及通过事件流如何集成音讯产品,想要理解更多 EventBridge 相干信息,扫描下方二维码退出钉钉群~
点击此处,理解更多 EventBridge 相干资讯~