EventBridge 特性介绍|以 IaC 的方式使用 EventBridge

网友投稿 291 2022-10-07

EventBridge 特性介绍|以 IaC 的方式使用 EventBridge

作者:王川(弗丁)

引言

EventBridge 作为构建 EDA 架构的基础设施,通过一些核心概念和特性提供了灵活丰富的事件收集、处理和路由的能力。对于不少用户来说,通过控制台里的便捷的引导来使用 EventBridge 应该是最快的上手方式。此外,也有很多用户面临着大量的云产品的管理,使用控制台管理每一个资源的方式变成了沉重的手工操作负担。为了解决这个问题,现在已经能够通过 OpenAPI、terraform 等方式将 EventBridge 的能力方便快捷的带给用户。本文将重点介绍 EventBridge 和 IaC 的重点概念和特性,然后演示如何应用 IaC 理念自动化部署 EventBridge 来使用这些概念和特性。

EventBridge 概述

事件驱动架构

事件驱动架构是一种松耦合、分布式的驱动架构,收集到某应用产生的事件后实时对事件采取必要的处理,紧接着路由至下游系统,无需等待系统响应。使用事件总线 EventBridge 可以构建各种简单或复杂的事件驱动架构,以标准化的 CloudEvents 1.0 协议连接云产品和应用、应用和应用等。事件驱动架构体系架构具备以下三个能力:• 事件收集:负责收集各种应用发生的事件,如新建订单,退换货订单等其他状态变更;

• 事件处理:对事件进行脱敏处理,并对事件进行初步的过滤和筛选;

• 事件路由:分析事件内容并将事件路由分发至下游产品。

事件驱动架构具有以下优势:

• 降低耦合:降低事件生产者和订阅者的耦合性。事件生产者只需关注事件的发生,无需关注事件如何处理以及被分发给哪些订阅者;任何一个环节出现故障,都不会影响其他业务正常运行;

• 异步执行:事件驱动架构适用于异步场景,即便是需求高峰期,收集各种来源的事件后保留在事件总线中,然后逐步分发传递事件,不会造成系统拥塞或资源过剩的情况;

• 可扩展性: 事件驱动架构中路由和过滤能力支持划分服务,便于扩展和路由分发;

• 敏捷性: 事件驱动架构支持与各种阿里云产品和应用集成,支持事件路由至任何系统服务,提供各种敏捷高效的部署方案。

使用 EventBridge 构建 EDA 架构

事件总线 EventBridge 是阿里云提供的一款无服务器事件总线服务。EventBridge 提供的几个核心概念,可以满足构建 EDA 架构的需要。

事件总线 EventBridge 支持以下事件源:**• 阿里云官方事件源• 自定义事件源**事件总线 EventBridge 的事件总线包括以下类型:• 云服务专用事件总线:一个无需创建且不可修改的内置事件总线,用于接收您的阿里云官方事件源的事件;阿里云官方事件源的事件只能发布到云服务专用总线;

• 自定义事件总线:需要您自行创建并管理的事件总线,用于接收自定义应用或存量消息数据的事件;自定义应用或存量消息数据的事件只能发布到自定义总线。

在 EventBridge 中,一个事件规则包含以下内容:

• 事件模式:用于过滤事件并将事件路由到事件目标;

• 事件目标:包括事件的转换和处理,负责消费事件。

EventBridge 提供了简洁的事件模式匹配语法,同时具备灵活的事件转换能力,后面将会通过演示来展示一些具体的例子。此外,EventBridge 还提供了一些增强能力,这些能力使得 EDA 架构中流经的事件更加透明,具备了开箱即用的观测和分析能力:

• 事件追踪:可以查看发布到事件总线 EventBridge 的事件内容和处理轨迹;

• 事件分析:对发布到事件总线的各种事件进行查询分析处理和可视化图表展示,以便发现事件内在价值。

IaC 简介

• 命令式:顾名思义,需要明确发出每一个动作的指令,描述的是 How,比如“创建一台 xx 规格的 ECS”。代码需要对每一步动作的顺序仔细编排,处理各种可能的错误,尤其要注意处理好每次变更对已经存在的资源的影响,否则稍有不慎就可能造成服务中断。举例来说,作为开发者可以通过自己熟悉的编程语言调用阿里云的 OpenAPI 来管理资源,因为这些 API 是类似 Create、Describe、Delete 等操作,这就是一种命令式的 IaC 实践。

IaC 带来的优势:

• 降低成本: 有效管理资源,并减少为此投入的人力;

• 提升效率:加快资源交付和软件部署的速度;

• 风险控制:

动手实践

准备工作

• 安装 terraform cli 工具,可以参见 的内容。• 创建一个 tf 文件 terraform.tf,内容如下(需要替换<>内的值)

provider "alicloud" { access_key = "" secret_key = "" region = ""}

案例1:通过钉钉监控云上资源变化

假设一个用户使用了很多云上的资源作为生产环境,需要感知线上资源的变更操作,一个可行的方案是利用 EventBridge 将来自于 ActionTrail 的审计事件投递到用户的钉钉。首先根据钉钉官方文档创建一个机器人,记下 webhook url 和加签的秘钥,接下来会用到。创建一个 tf 文件 1_actiontrail2dingding.tf,内容如下(需要替换<>内的值)

在命令行窗口依次执行命令:• 初始化 terraform init• 预览变更 terraform plan• 应用变更 terraform apply

在云产品控制台进行操作,这里以 KMS 为例

钉钉上收到消息通知

在 EventBridge 控制台查看事件轨迹

案例 2:自定义总线触发 FunctionCompute

假设一个用户的应用会产生一些事件,其中一个链路是通过 FunctionCompute 对这些事件进行弹性的处理。那么就可以通过 EventBridge 的自定义事件源和函数计算事件目标来实现这个方案。创建一个模拟对事件进行处理的 python 脚本文件 src/index.py,内容如下:

# -*- coding: utf-8 -*-import loggingdef handler(event, context): logger = logging.getLogger() logger.info('evt: ' + str(event)) return str(event)

创建一个 tf 文件 2_trigger_function.tf,内容如下(需要替换<>内的值)

在命令行窗口依次执行命令• 初始化 terraform init• 预览变更 terraform plan• 应用变更 terraform apply

在控制台模拟自定义事件源发布事件

在 FunctionCompute 的控制台页面查看函数调用日志

在 EventBridge 控制台查看事件轨迹

总结

EventBridge 作为构建 EDA 架构的基础设施,通过一些核心概念和特性提供了灵活丰富的事件收集、处理和路由的能力,并支持通过 OpenAPI、terraform 等方式将这些能力方便快捷的带给用户。本文介绍了 EventBridge 和 IaC 的重点概念和特性,然后演示了如何应用 IaC 理念自动化部署 EventBridge 来使用这些概念和特性。期待大家可以发掘更多利用 EventBridge 快速搭建 EDA 架构的 idea,并使用 terraform 快捷的将这些 idea 变为现实。

相关链接

[1] 阿里云 terraform 文档terraform registry 文档钉钉官方文档EventBridge 相关信息,扫描下方二维码加入钉钉群~

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从Opentracing、OpenCensus 到 OpenTelemetry,看可观测数据标准演进史
下一篇:Java创建线程池为什么一定要用ThreadPoolExecutor
相关文章

 发表评论

暂时没有评论,来抢沙发吧~