乐趣区

关于阿里云:阿里云事件生态再升级使用-EventBridge-驱动全量云产品

作者: 昶风

引言

用户应用阿里云每天都会有大量的事件产生,例如云资源的增删改查、配置的变更、利用的水位报警等。这些事件局部是由用户业务操作触发产生,局部是由零碎检测主动产生,这些离散的事件实时反映着用户云上资源的状态,稍加开掘便能够产生实用的价值。阿里云 EventBridge 作为云上事件枢纽,早已集成了云上产品的各类事件,用户开明 EventBridge 后应用内置的云服务专用总线就能够监听这些事件,无需创立任何额定资源。

同时,阿里云各个云服务提供了 open API 以满足用户对云上资源管理的需要。对于期待搭建事件驱动架构(EDA)利用的云上用户而言,通过事件来触发调用云服务 open API 进行资源管理的能力将是业务能力幅员中不可或缺的一部分。

为了加强 EventBridge 对云产品的驱动能力,EventBridge 在近期上线了 open API target,open API target 能够驱动所有云产品 openAPI,使得用户可能基于 EventBridge 来触发云产品 open API 以治理本人的云上资源。

至此,EventBridge 实现了对云服务事件的闭环解决,云服务事件的产生、接管、加工等都能够应用 EventBridge 来实现,帮忙用户低成本实现云上事件与资源的管控。

云服务专用总线与阿里云官网事件源

事件总线 EventBridge 是阿里云提供的一款无服务器事件总线服务,反对阿里云服务、自定义利用、SaaS 利用以标准化、中心化的形式接入,并可能以标准化的 CloudEvents 1.0 协定在这些利用之间路由事件,能够帮忙用户轻松构建松耦合、分布式的事件驱动架构。

在 EventBridge 架构中,事件的流转过程是这样的:首先事件由事件源产生,随后被投递到事件总线,经过滤转换解决后最终投递给事件指标。事件源是事件的生产者,事件总线是事件在 EventBridge 中的承载者。EventBridge 目前曾经反对了阿里云服务产生的各类事件,用户通过一些简略的配置即可获取。

为了保障资源隔离,在事件总线和事件源层面,EventBridge 将云服务事件与用户自定义事件做了隔离解决,咱们别离称之为云服务专用总线与阿里云官网事件源。

云服务专用事件总线

在事件总线层面,EventBridge 目前反对的事件总线类型有 2 种:云服务事件总线和自定义事件总线。

自定义事件总线是须要用户自行创立并治理的事件总线,用于接管自定义利用或存量音讯数据的事件。自定义利用或存量音讯数据的事件只能公布到自定义总线。

而云服务专用事件总线是一个无需创立且不可批改的内置事件总线,用于接管阿里云官网事件源的事件。阿里云官网事件源的事件只能公布到云服务专用总线。

对于云服务事件,EventBridge 真正做到了开箱即用,用户应用云服务专用事件总线即可与泛滥云服务的事件生态买通。

阿里云官网事件源

EventBridge 将云服务事件对立收敛到一个事件源,称之为阿里云官网事件源。

官网事件源反对了目前阿里云简直所有类型的云服务,依照分类而言包含但不限于弹性计算、存储、数据库、平安、大数据、人工智能、网络与 CDN、视频服务、容器、中间件、开发运维、域名和网站、物联网、企业应用与服务等。

对于云服务事件,其类型蕴含以下几类:

  1. 操作审计事件:阿里云服务通过操作审计接入作为事件源公布到事件总线 EventBridge 的事件类型。操作审计事件类型有:
  • API 调用事件。次要指开发者通过 API 被动对相干资源进行 CRUD 调用的事件,大量阿里云控制台基于 API 开发,对应的操作行为也会记录为 ApiCall 事件。
  • 局部控制台或售卖页的管控事件。因为这些控制台或售卖页并不是基于 API 来开发的,因而操作审计会将此类事件类型记录为 ConsoleOperation 或 ConsoleCall。此类事件的名称并不一定是 API 名称,但可能传播基本操作行为的含意。
  • 阿里云平台对用户资源执行的管控事件。由阿里云发动的操作,比方实例续费、到期开释。例如,在创立 ECS 实例时,设置了实例主动开释工夫,那到时就会产生 type:AliyunServiceEvent 的事件,这个事件不是被动调用的,而是阿里云平台调用的,此类事件就是 AliyunServiceEvent 事件。目前此类事件次要存在于预付费实例的到期主动开释事件。
  1. 配置审计事件:阿里云服务通过配置审计接入作为事件源公布到事件总线 EventBridge 的事件类型。配置审计事件类型有:
  • 配置变更历史。配置审计将产生的资源变更事件进行推送。
  • 资源不合规事件。当检测到资源不合规时,配置审计会将相干资源不合规的事件进行投递。
  1. 云监控事件:阿里云服务通过云监控接入作为事件源公布到事件总线 EventBridge 的事件类型。
  2. 采集事件:只有开明相应的阿里云服务,就能够主动接入事件总线 EventBridge,事件总线 EventBridge 即可采集的事件。

阿里云官网事件源应用示例能够参考:
https://help.aliyun.com/docum…

利用 EventBridge 驱动云产品 open API

根底概念

阿里云官网事件源解决了获取云上事件的问题,使得用户能够感知云上资源的变动。但对于局部用户而言,感知并不是最终目标,他们更冀望的是能够进一步对云上的资源进行操作。为了达到这一目标,用户能够在本人的业务代码中应用云服务的 openAPI 来实现,但当业务所应用云服务数目很多时,开发和后续运维老本将会陡然回升。

为了补足在云服务资源管控方面的能力,EventBridge 在近期上线了 open API target,使得 EventBridge 具备驱动所有云产品 open API 的能力。用户能够应用现有事件来触发 open API 调用,进而进行云资源的治理。open API target 容许用户将阿里云服务的 open API 作为事件指标。具体而言,它相似一个“触发器”,当有满足条件的事件到来时,open API target 会依照用户事后设定的参数去调用云服务 open API。

应用介绍

在应用 open API target 时,须要提供以下参数:

  • 云服务名称
  • 云服务 API 版本
  • API 名称
  • API 参数列表
  • 调用 API 角色 

以上云产品相干信息能够通过查问对应云产品 sdk 文档来获取。

针对调用 API 角色,其实是容许 EventBridge 以这个角色的身份去调用 open API。用户须要创立一个自定义角色,并将其授信给事件总线 EventBridge。角色的权限方面则能够依照须要去进行设置,在权限最小的准则根底上,确保以后权限内容能够满足调用 target 所指定的 open API。

应用示例

上面举个例子介绍如何通过 open API target 创立 RocketMQ topic 资源。

  1. 首先须要筹备一个事件源,这里为了便于测试,咱们应用一个 source;
  2. 抉择一个事件总线,点击“创立规定”;
  1. 填入事件规定名称与形容
  1. 在配置事件模式局部抉择筹备的 http 事件源
  1. 在配置事件指标时,在“云产品接口触发”中抉择 RocketMQ,版本抉择“2019-02-14”,接口类型抉择“OnsGroupCreate”。API 参数依照需要填写,留神这里参数即能够填写常量,也能够应用 jsonPath 从事件中获取。在角色配置一栏抉择授信给 EventBridge 的角色,在这里此角色的权限策略曾经满足调用此接口的条件。
  1. 点击“创立”,实现 open API target 创立工作。
  1. 随后应用 http source 发送事件,事件内容如下:
{
 "InstanceId": "MQ_INST_****_BXvPp0bx",
 "GroupId": "GID_openAPITest"
}
  1. 察看事件轨迹 &MQ 控制台查看,能够发现事件胜利投递,对应 Group 胜利创立

至此,咱们胜利通过 EventBridge 调用了云服务 RocketMQ 的 open API。

最佳实际

按需创立快照

快照是云盘数据在某一时刻的残缺拷贝或镜像。快照作为云盘的数据拷贝,人造适宜灾备场景,也能够用于制作镜像,实现环境复制。针对误操作导致的利用解体,快照的存在也能够帮忙用户对业务数据进行疾速回滚,升高误操作带来的影响。

ECS 提供了周期性创立快照的能力,但对于局部客户而言,按需创立快照或者是一个更为事实的需要。例如针对业务开发上线阶段,对快照的需要可能较为迫切,此时可能须要在每次公布前都保留快照,以便问题排查和数据回滚。但进入业务维护阶段,创立快照的需要可能并不频繁。

如图所示,用户在 EventBridge 控制台创立 http source 与 open API target,其中 open API target 具体为创立 ECS 镜像。当业务进行部署时,用户能够通过 http source 来投递事件到 EventBridge,最终触发快照创立。投递事件的逻辑也能够在业务中进行更加自定义的定制,例如仅在大版本更新时才去进行 webhook 触发等。这样一来,用户无需引入 ECS  相干 open API,且对镜像的创立操作也真正的做到了按需进行。

测试环境资源管理

针对云上测试场景,有时须要先创立一些资源,待测试实现之后,再对这些资源进行删除。

假设测试订单解决场景是这样的:用户在函数计算上部署了测试下单服务与订单解决服务,测试下单服务将发送肯定数目的订单数据发送至 RocketMQ,订单解决生产 MQ 中的数据。服务配置信息等从数据库中读取。

测试前须要以下前提条件:

  1. 在数据库中插入测试数据
  2. 创立 RocketMQ topic 以做订单异步解决

测试完结后须要清理回收的资源:

  1. 数据库中删除测试数据;
  2. 清理掉刚刚测试创立的 topic;

如图,要满足上述测试场景,用户能够依照相似形式应用 EventBridge:

  • 创立资源初始化规定,此规定蕴含 2 个 target,open API target 用于创立 rocketmq topic,而 mysql target 则用于初始化测试数据;
  • 创立资源清理规定,此规定和资源初始化规定相似,区别在于此处的 target 执行的是资源清理逻辑;
  • 创立测试启动规定,此规定的 target 是函数计算服务,用户告诉测试下单服务开启测试流程。

在上述规定创立实现之后,用户仅须要在投递事件到对应规定即可实现测试工作的各个阶段。

运维自动化

运维工作的场景之一就是监控项配置,上面是一些运维时常见的场景。

  1. 某些业务公布期间会触发监控项报警,运维人员可能须要长期敞开报警,以防止不必要的短信、电话内容带来误判,期待公布完结之后再开启报警;
  2. 当有员工退出或者到职时,人事零碎须要将此用户从报警分割中增加或者移除,这样保障新退出员工能够及时获取报警信息,同时也防止了业务运维情况信息泄露给到职人员;
  3. 当有新业务部署时,须要减少主机监控,监测业务过程指标。

应用 EventBridge + 云监控 CMS 就能够实现上述运维工作的自动化。

如图,在 EventBridge 上配置好 CMS 相干的 open API target。针对业务零碎,在业务部署前后向 EventBridge 投递相应事件,实现报警项的敞开与开启,同时主动配置主机监控。针对人事零碎,在员工到职与入职环节减少事件投递这一步骤,进而触发报警联系人的更新。这样,用户仅需在 EventBridge 上进行简略的操作,即可实现对监控能力的运维自动化。

感兴趣的小伙伴们能够扫描下方二维码退出钉钉群探讨(群号:44552972)

点击此处,进入 EventBridge 官网理解更多信息~

退出移动版