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

本文涉及的产品
简介: 快速学习 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 这个产品了解更深,也欢迎大家关注后续的一些课程。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4天前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
27 2
事件驱动作为分布式异步服务架构
|
4天前
|
人工智能 Cloud Native Java
从云原生视角看 AI 原生应用架构的实践
本文核心观点: • 基于大模型的 AI 原生应用将越来越多,容器和微服务为代表的云原生技术将加速渗透传统业务。 • API 是 AI 原生应用的一等公民,并引入了更多流量,催生企业新的生命力和想象空间。 • AI 原生应用对网关的需求超越了传统的路由和负载均衡功能,承载了更大的 AI 工程化使命。 • AI Infra 的一致性架构至关重要,API 网关、消息队列、可观测是 AI Infra 的重要组成。
429 10
|
1天前
|
消息中间件 Java Kafka
探索Java中的事件驱动架构(EDA)
探索Java中的事件驱动架构(EDA)
|
2天前
|
监控 Kubernetes 持续交付
探索微服务架构的实践与思考
【6月更文挑战第26天】微服务架构作为一种现代软件设计方法,其核心在于将复杂的单体应用拆分为一系列小型、独立的服务。本文从实践的角度出发,探讨了在构建微服务系统时面临的挑战、采取的设计策略以及实际案例分析,旨在为读者提供一套实用的微服务实施框架和经验分享。
|
3天前
|
运维 Cloud Native 安全
云原生架构的演进与实践
【6月更文挑战第25天】本文将深入探讨云原生技术从概念提出到实际应用的发展过程,分析其核心价值和面临的挑战。文章将通过具体案例,展示云原生如何促进企业IT架构的现代化转型,并讨论在实施过程中的最佳实践和注意事项,旨在为读者提供一份云原生技术落地的实用指南。
12 2
|
3天前
|
消息中间件 负载均衡 持续交付
探索后端开发:微服务架构的演进与实践
【6月更文挑战第25天】本文深入探讨了微服务架构的概念、发展以及在现代后端开发中的应用。我们将通过一个虚构案例,展示如何将传统的单体应用重构为基于微服务的架构,并讨论在此过程中遇到的挑战和解决方案。文章旨在为读者提供从理论到实践的全面指导,帮助理解微服务架构的优势及其在企业级系统中的应用。
|
4天前
|
运维 负载均衡 Cloud Native
云原生架构下的微服务治理实践
【6月更文挑战第24天】在云原生的浪潮下,微服务治理成为确保系统弹性、可维护性和可观测性的关键。本文通过深入分析微服务治理的核心要素与挑战,结合前沿技术和工具,提出一套实用的微服务治理策略,旨在帮助开发者和架构师构建更加稳定、高效且易于管理的分布式系统。
|
1天前
|
设计模式 监控 测试技术
后端开发中的微服务架构:优势、挑战与实践策略
在现代软件开发领域,微服务架构已成为一种重要的设计范式,特别是在后端系统中。本文旨在深入探讨微服务架构的核心优势、面临的主要挑战以及实施该架构的策略。通过引用最新的研究成果和行业案例,文章将提供对微服务架构实际应用的深刻见解,并指导开发者如何有效地采用和优化微服务架构以提升系统性能和可维护性。
|
3天前
|
Kubernetes Cloud Native API
云原生架构的演进与实践
在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和弹性成为企业IT战略的核心。本文将深入探讨云原生架构的关键组件、设计原则以及如何在实践中有效应用这些概念以支持现代业务需求。通过分析容器化、微服务、持续集成/持续部署(CI/CD)和声明式API等技术的应用,本文旨在为读者提供一套全面的云原生实施指南,助力企业构建更加灵活、高效的IT基础设施。
11 0
|
5天前
|
监控 Cloud Native API
云原生架构下的微服务治理实践
【6月更文挑战第23天】在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和弹性成为企业IT架构升级的首选。本文将深入探讨云原生架构下微服务治理的关键策略与实践,包括服务发现、配置管理、流量控制等核心组件的应用,旨在为读者提供一套完整的微服务治理解决方案,以支撑业务的快速迭代和高可用性需求。