EventBridge EDA (事件驱动):架构场景实践|学习笔记(四)

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 快速学习 EventBridge EDA (事件驱动):架构场景实践

开发者学堂课程事件总线 EventBridge 生态集成课程 EventBridge EDA (事件驱动):架构场景实践学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1235/detail/18407


EventBridge EDA (事件驱动):架构场景实践


比如北森、SAP,还有国内的用友、金蝶都在做 HR 系统。HR 系统虽然用起来很方便,但是可能也会遇到一些集成问题,web hook 就是针对这种 saas 场景来去做的。刷新一下页面,看到已经登录控制台了。

image.png

然后点击事件总线。

image.png

然后创建一个事件,这个事件会有两块,第一块云服务事件,不用管,这是内部内置的总线,专门给云服务去提供的,假如要做自建系统,直接点自定义总线就可以,自定义总线先去选一个名称,比如 test123321。然后点下一步,把后面的直接跳过,这样进展会快点。这里已经创建了一个叫自定义总线的主体。

image.png

事件源在哪添加呢?其实很简单,事件源写的也比较清楚。发现有很多预置项,看一下第一个要配置什么,要配置 web hook,添加睡眠,比如这里是 test web hook,选 HTTP,还有 HTPS 触发的项,这里依然添加自定义事件源,然后选择事件提供方,选择方式,安全配置选择无需配置,点确定。这样现在一个 web hook 地址就已经生成了,可以直接点进来,然后会看到一个叫公网请求 URL 的东西,可以直接去 web hook 访问,这里已经发送成功了。

image.png

这样可以直接拿着ID,在事件追踪里面找事件,看一下投递到 bus 上面。一查会发现,这个 ID 已经投递过了。由于没有绘制规则,所以它的目标是空的,事件详情就是刚刚请求。因为请求里面什么都没有加,所以它是空的,然后可以尝试去传一些字段,比如使用 postman 去新加一个,然后把 URL 复制过来。在 postman 里面填一下地址。这里填一下 Test123,点发送。它依然会反馈过一个 event ID,然后把这个 event ID 复制一下,追踪看一下效果。会发现这个 web hook 也接收成功了,它的事件类型看一下。Test 123 其实就是刚刚往往 header 字段里面塞的 value,所以也可以去通过 web hook 这种方式把一些值传进来。那这就是 web hook 接入。当然没有实际把 web hook 流程操作下来,主要也是因为这边没有类似 HR 系统账号,大家也可以去实际实践一下,相信应该是可以完全去做 match 的,因为之前也有测过比如语句,钉钉等一些 web hook 的方案。

下面还有个方式叫 plut events。Plutevents 可以自己把事件发到 eventbridge 上,目前来讲,也支持了很多 SDK,直接去看 python。把文档打开,首先点开事件,这块有 events,这里会介绍现在 plutevents 如何发送一些事件,这里有 eventbridge SDK,拿这个 case 举例,这样也会比较直观一些,这是之前测试的一个脚本,如果大家想用,建议大家去写脚本或自己需要的一些值,然后去做测试,把 source 改一下,因为没有这个值,所以需要创建source,之前发送了一千条,这里改成一条,初始化参数,这里面的值一定要跟source match 上,这里写test source,然后自定义应用,点击确定,把值复制一下,把 bus 的一些名称改一下,现在是 test123321,把名称改一下,这里有 secret key 的 ask 的数据,自行去做一些配置,看一下 region 信息,这里发现接入点是 region,在接入点里面把这个值复制下来,把 region 改成青岛,看一下位置,直接运行 Python,发现事件已经发送成功了,会有event ID,看看 event ID 有没有发送过来就可以了,发现已经发送成功了,事件详情里面会发现这里有一个 data 是 test123,这是刚刚写的event data 的字段,这样就完成了整体的发送,这是第二种方式发送,叫plutevents。

第三种叫做 Queue,Queue很简单。直接从 Queue 里拉一个消息,比如之前会有一个消息列,点一个 massage,这里有massage服务。这里在 message 控制台里发一个消息,可以在这里面直接查。因为这块不准推送,所以它没有办法及时感知到。稍等一下,可以看到其实 Queue 已经出现了。这是刚刚在Queue里面发的消息,即 message data:test queue,是刚刚入的值。这样现在的所有的源端配置都已经完成了。第一个是 Test web hook,即 test web hook 的方案。第二个是直接通过 plutevents 方式,类似于sdk 的方式,然后把它跑起来。第三个是 Queue 的方式。这样已经完成了所有的事件发送操作。

2.动手实践:配置事件目标——直接触发

下面配置一下目标,

image.png

刚刚已经配完了事件源,然后可以尝试配置目标。看一下这些消息,然后去fill out。首先还是点事件规则,这是新的,所以没有创建过任何规则,首先测一下钉钉,钉钉可能会更简单一点,也会更直观,这里的模式其实是过滤模型,这个模型支持了很多模式,比如指定值匹配,前缀匹配,指定值只要匹配事件的某个字段是什么值,然后做触发。前缀匹配是只要是这个前缀的都可以做触发,类些这种还有很多,比如后缀等其他的一些东西,比如 IP 地址,数组等,大家可以直接在文档里面去看。现在希望全量的事件都触发到下游,所以这个事件模型可以为空,那空对象就会匹全部模式,直接点下一步,然后钉钉可以直接配一个钉钉的告警的机器人,把它做一些演示。

首先直接打开钉钉,去找测试的账号,找一个测试群,这样会更简单一点。这里有一个新建的测试群,然后在这里找群管理,会有一个机器人管理,然后新建一个机器人,点添加。

image.png

这就是 test robot 测试机器人,点加签,点签名验证。把签名 copy一下,点完成。会给另一个地址,先把这个签名填进去,签名即密钥,然后钉钉地址即 web hook 地址,点进去,填进来,这样就可以完成推送逻辑的配置,这样有事件会直接发送到这个群里面。

下面还要做几个流程,第一个流程是配置变量,配置变量可以直接把事件的某一个部分映射到现有的载体里面,所以可以直接先去定义现在的模式,比如在模板里面,要定义一个东西,在这里申明一个变量,这个变量可能是消息的内容,比如写个最简单的,直接写 data,Data 里是 dollar.data,这样它就只取 data 值。然后目标要把它引用过来,引用方式在文档写的也比较清楚,可以直接看文档,在文档会发现它是 dollar 一个括号的形式,直接把模式给粘过来,这个 dollar 是之前声明的变量即 data,点创建。这样就可以创建钉钉的一个目标,然后目标的事件模式是空的,它不需要去路由任何东西,其次,它的目标配置,刚刚做一些钉钉的配置,比如地址、密钥,都直接在钉钉侧做后续。现在可以发送一下。点击确定,看到事件其实被发送了。在钉钉上可以看到测试事件是 eventbridge。这样完成了现在的整体的发送流程。

下面看一下,PPT上还有几块。第一块是发送到Queue,第二块是提交系统变更,然后发送到Queue,其实只要在基础上,直接再去建立一个规则,规则是Queue。同样,模式为空,这里的 Queue可以直接拿 MNS 来测试一下,依然测试test Queue。创建,这样会看到已经创建了一个规则,即 MNS。然后再去创建一下,比如要做数据库变更,这里名称可以随意填,然后下一步,这块有配置数据库的一些能力,只要选择数据库的一些实例地址,并且配置入库的 circle 就可以了,这里就不给大家做详细演示了。

现在的主体内容都完成了,包括发送端,有三端发送,最后一趴其实可以有间接触发的能力。间接触发即调 FC,FC怎么调呢?相当于创建一个规则,这就是 FC target。然后选函数计算,函数计算下面可能会有很多,比如 OSS,选一个具体函数,点确定,这样它的事件也同时被函数计算消费,被函数消费的主要目的是可以在函数里面写一些代码,比如可以把事件接收下来,然后做更多下游端的处理,比如要做一些内部鉴权或者其他操作都是可以的,相当于提供了一个更灵活的方案,即一个编写代码的方案,然后把这个事件接收,并且再去通过这样的事件做触发。

本次主题讲了很多东西,包括 EDA 架构,EDA 架构如何在 eventbridge 控制台上操作,包括怎么去做转换路由以及如何查询追踪状态都有讲到。

总结:第一讲讲了整体的事件,包括事件驱动架构以及解决了一个问题:EDA 是什么。

第二点讲如何在生产业务中把事件驱动架构的设计落地。

然后第三点是在控制台里面,详细地把 flow 配置一下,了解了在这种场景里面 eventbridge 怎么配置,怎么触发。

目前这门课程还算比较完整,希望能给大家带来一些关于 eventbridge 和 EDA 的整体架构方案,还有整体介绍给大家一个宏观的概念,后面用 eventbridge 也会推出一系列的直播课程,帮助大家把 EDA,包括 eventbridge 这个产品了解更深,也欢迎大家关注后续的一些课程。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
消息中间件 监控 测试技术
事件驱动架构是一种编程范式
【10月更文挑战第7天】事件驱动架构是一种编程范式
113 65
|
16天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
33 8
|
19天前
|
边缘计算 监控 自动驾驶
揭秘云计算中的边缘计算:架构、优势及应用场景
揭秘云计算中的边缘计算:架构、优势及应用场景
|
2月前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
2月前
|
存储 设计模式 监控
事件驱动架构的实现方式?
【10月更文挑战第7天】事件驱动架构的实现方式?
55 7
|
2月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
37 9
|
3月前
|
设计模式 开发框架 前端开发
在开发框架中实现事件驱动架构
【9月更文挑战第2天】事件驱动架构(EDA)通过事件机制让组件间解耦交互,适用于动态扩展和高响应性的系统。本文提供一个基于Beego框架实现事件驱动的示例,通过事件管理器注册和触发事件,实现用户注册和登录时的不同处理逻辑,展示了其在Web应用中的灵活性和高效性。
88 5
|
4月前
|
运维 Cloud Native 容灾
核心系统转型问题之单元化架构对于自研可控场景该如何支持
核心系统转型问题之单元化架构对于自研可控场景该如何支持
|
3月前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
4月前
|
消息中间件 Kafka Java
Spring 框架与 Kafka 联姻,竟引发软件世界的革命风暴!事件驱动架构震撼登场!
【8月更文挑战第31天】《Spring 框架与 Kafka 集成:实现事件驱动架构》介绍如何利用 Spring 框架的强大功能与 Kafka 分布式流平台结合,构建灵活且可扩展的事件驱动系统。通过添加 Spring Kafka 依赖并配置 Kafka 连接信息,可以轻松实现消息的生产和消费。文中详细展示了如何设置 `KafkaTemplate`、`ProducerFactory` 和 `ConsumerFactory`,并通过示例代码说明了生产者发送消息及消费者接收消息的具体实现。这一组合为构建高效可靠的分布式应用程序提供了有力支持。
116 0