开发者学堂课程【事件总线EventBridge生态集成课程:EventBridge API 端点:让服务集成触手可及】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1235/detail/18405
EventBridge API 端点:让服务集成触手可及
内容介绍
一、概括
二、eventbridge 背景
三、api 端点
四、应用场景案例
一、概括
最近对外正式发布了 api 端点服务,用来帮助大家更方便的将云上的产品以自己的微服务或者购买了 saas 服务进行集成。那 api 端点到底是什么?
今天的讲解主要包含三部分,首先先简单介绍一下 eventbridge的背景,然后讲一下为什么要做 api 端点。第二部分一起看一下今天的主角 API 端点,它到底是什么,有什么用。第三部分用两个场景演示案例来实际体验一下 api 端点。
二、eventbridge 背景
1.什么是 EventBridge
eventbridge 在阿里云的定位是云原生时代,云上操作系统的事件中枢,通过这个事件中枢,可以以标准 cloudevents 的事件协议将阿里云上的产品自建服务,以及外部的 saas 服务进行集成连接,来构建一个松耦合和高可靠的事件驱动架构。
2.EventBridge 的基本模型
来看一下 eventbridge 的基本模型,
当开通 eventbridge 的时候,eventbridge 会自动收集阿里云上两百多款产品的事件。然后就可以在事件总线上轻松地通过规则方便地去订阅,并过滤到需要的云产品事件,并推送到目标端。这里的目标端可以是阿里云上的服务,也可以是自己搭建的一个微服务,甚至可以是外部的一些 saas 服务,当然不仅是阿里云上的云产品事件可以通过 eventbridge 去实现事件驱动,那用户自己的业务事件,以及用户购买的一些 saas 服务产生事件都是可以通过 SDK 主动上报或者通过 eventbridge 主动拉取以及 web hook的一些能力,将这些事件推送回 eventbridge。
eventbridge 就像一个事件中心,去帮助用户管理了产品周边所有事件。当需要使用事件时候,可以很方便地通过 eventbridge 筛选出需要的事件,并推送给目标端。整个过程目标端是不需要像消息订阅一样去主动地适配上的消息,那目标端也无需要去改一行代码就可以通过原本暴露的 API 来完成整个产品的集成,那整个架构是更加松耦和,更加易维护和可靠的。
3.适配目标端:过滤和转换
事件规则里面过滤和转换事件的过程,本质上是将之前目标端原本订阅消息的逻辑,以及去解析上游消息格式的逻辑。从目标端前置到了 eventbridge 当中,因为订阅和解析消息的逻辑,对于每个目标端来讲都是大同小异的,而且目标端增加对上游消息的适配层,其实会破坏目标微服务的一个内聚性,尤其是当目标微服务需要去订阅很多事件的时候,那会让目标微服务非常多的一些适配代码变得不可维护。为了满足目标微服务长的一些场景需求,eventbridge 提供了非常丰富的事件过滤模式,以及事件转换工具,那来看一下一个简单的例子,就是将云产品 OSS 的事件推送到内部微服务 HTTP target,阿里云上所有官方云产品事件都默认会投递到 default 总线,那在北京提前在 default 总线创建了一个规则。这个规则会过滤所有的 OSS 事件,并投递到 HTTP 目标端,这个目标端指向的是自建的 web hook 地址,它会时刻地去监听,访问这个服务的 HTTP 请求,并把收到请求完整地打印出来,可以看到图中左边,
这个服务一直在处于监听等待中,这里面设置了推送到 http body 为模板,提取了 cluteveent 中的 subject 字段,并随模板一起输出,现在就往北京的 oss packet 上传一个 demo文件。看到文件已经上传成功,然后看一下 http 目标服务,它也已经收到了刚刚上传的事件,它的内容是上传的对应的文件信息。
4.HTTP Target 遇到的问题
这里大家可能也发现了目前 HTTP 目标的能力还是比较弱的,主要体现在三个方面。
第一鉴权方式比较单一,只支持固定 token 的鉴权方式,第二参数传递的能力较弱,只支持传递 HTTP body,不支持传递 http header 的参数,而且默认用 post 方式,第三是管理成本比较高,当多个规则依赖同一个 HTTP 的时候万一需要修改,所有的规则都需要去改变,这次为什么不直接去升级 http target 而推出 api 端点这个服务,接下来一起来看一下 api 的端点,它到底是什么,又是怎么去解决用户遇到的问题。
三、api 端点
1.什么是 API 端点
首先,看一下api端点在 eventbridge 中的位置。
作为 eventbridge 的目标端,整体的模型是和其它事件目标保持一致的,那事件发送到 eventbus 之后会通过规则进行过滤和转换来最终推送到 api 端点对应的目标服务上,那这个 api 开端点是什么?里面有什么呢?在回答这个问题之前,一起看一下,一个典型的微服务 API 是什么样的。
先看图中最下面,一个目标微服务在其他服务进行集成交汇时候最常见的方式是暴露 API,通过 API 来定义当前目标微服务的边界。在暴露 api时,微服务通过多种方式,目前最常用的方式是 HTTP 协议暴露 http resetfule api ,其他服务如果想和当前的微服务进行集成,就可以通过访问 http resetfule API来实现这个目的,eventbridge 如果希望将事件推送到这个目标微服务的 api,就需要清楚地知道目标微服务的 api 的定义,当然光知道 api 的定义还是不够的,因为对于一个微服务来讲,为了防止一些恶意攻击,常常还会有自己的一个认知方式,用来限制使用一些合法的请求才能被响应。
在完成第一个微服务 api 时主要含两部分。一部分是用来实现和微服务的联通就是普通的 connection。第二部分是 api 的方法的参数信息,就是图中的 api 端点。另外,在不同的场景下,同一个api的参数传递的内容在创建规则配置时候,其实是不一样的,所以在创建规则的时候还会具体的去配置 API 对应的参数具体的值的信息。
先来看下第一部分 connection,刚才提到 connection 主要是用于去实现外部服务与当前微服务的连通性,这里可以看到 connection 一般是微服务的,微服务上提供的多个 API 其实是共享这个 connection。
关于 connection 目前主要包含两部分,第一部分是网络配置。比如通过公网连接还是通过阿里私有网络进行连接,那第二部分是刚才提到的鉴权配置信息。 eventbridge 目前选取行业内最常见的三种基本方式 api key、basic、OAuth 2.0。那下面简单介绍方便后面使用。