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

本文涉及的产品
函数计算FC,每月免费额度15元,12个月
简介: 快速学习 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 架构模式
相关文章
|
4天前
|
设计模式 API 开发者
深入浅出微服务架构:从理论到实践
在软件开发领域,微服务架构已经成为一种流行的设计模式。它承诺能够带来更好的模块化、可扩展性和敏捷性。然而,将一个传统的单体应用拆分成多个微服务并非易事。本文旨在通过实际案例分析,帮助读者理解微服务的核心概念,以及如何在实际项目中实施微服务架构。我们将一起探讨微服务的设计原则、技术选型和面临的挑战,并分享一些成功实施的策略。
|
1天前
|
消息中间件 运维 监控
探索微服务架构:从理论到实践
【8月更文挑战第19天】 在数字化时代,微服务架构已成为软件开发的新常态。本文通过深入浅出的方式,介绍了微服务的基本概念、设计原则和实践案例,旨在帮助读者从宏观上理解微服务的设计理念,并掌握将其应用于实际项目中的方法。我们将一起走进微服务的世界,解锁其在现代软件工程中的奥秘。
|
2天前
|
运维 监控 架构师
如何进行系统架构评审:全面指导与实践
【8月更文挑战第18天】系统架构评审是确保软件项目成功的关键环节之一。通过科学合理的评审流程和严格的评审要点控制,可以显著提高架构设计的质量和项目的整体成功率。
|
1天前
|
Kubernetes 数据库 开发者
后端开发中的微服务架构实践
【8月更文挑战第19天】本文将深入探讨微服务架构在后端开发中的应用,包括其设计原则、挑战与解决方案。文章旨在为读者提供一种现代后端开发的新视角,帮助开发者更好地理解并应用微服务架构以提升系统的可维护性、可扩展性和敏捷性。
|
1天前
|
运维 API 持续交付
后端开发中的微服务架构实践
【8月更文挑战第19天】在现代软件工程中,微服务架构作为一种灵活、可扩展的后端解决方案,正逐渐取代传统的单体应用。本文将深入探讨微服务的核心概念、设计原则和实际应用策略,旨在为读者提供一套完整的微服务架构实施指南。
6 0
|
4天前
|
敏捷开发 设计模式 前端开发
实践总结|前端架构设计的一点考究
本文总结了作者在日常/大促业务的“敏捷”开发过程中产生的疑惑,并尝试做出思考得到一些解决思路和方案。在前端开发和实践过程中,梳理了一些简单设计方案可以缓解当时 “头疼” 的几个敏捷迭代问题,并实践在项目迭代中。
|
4天前
|
存储 缓存 Java
Eureka原理与实践:深入探索微服务架构的核心组件
在微服务架构日益盛行的今天,服务之间的注册与发现成为了保证系统高可用性和灵活性的关键。Eureka,作为Netflix开源的服务注册与发现框架,凭借其简单、健壮的特性,在微服务领域占据了举足轻重的地位。本文将深入剖析Eureka的原理,并通过实践案例展示其在实际项目中的应用,以期为开发者提供一个高端、深入的视角。
11 0
|
3天前
|
监控 负载均衡 API
从单体到微服务:架构转型之道
【8月更文挑战第17天】从单体架构到微服务架构的转型是一项复杂而系统的工程,需要综合考虑技术、团队、文化等多个方面的因素。通过合理的规划和实施策略,可以克服转型过程中的挑战,实现系统架构的升级和优化。微服务架构以其高度的模块化、可扩展性和灵活性,为业务的持续发展和创新提供了坚实的技术保障。
|
12天前
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
48 6
|
10天前
|
设计模式 监控 API
探索微服务架构中的API网关模式
在微服务的宇宙里,API网关是连接星辰的桥梁。它不仅管理着服务间的通信流量,还肩负着保护、增强和监控微服务集群的重任。本文将带你走进API网关的世界,了解其如何成为微服务架构中不可或缺的一环,以及它在实际应用中扮演的角色和面临的挑战。