开发者学堂课程【事件总线 EventBridge 生态集成课程: EventBridge EDA (事件驱动):架构场景实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1235/detail/18407
EventBridge EDA (事件驱动):架构场景实践
比如北森、SAP,还有国内的用友、金蝶都在做 HR 系统。HR 系统虽然用起来很方便,但是可能也会遇到一些集成问题,web hook 就是针对这种 saas 场景来去做的。刷新一下页面,看到已经登录控制台了。
然后点击事件总线。
然后创建一个事件,这个事件会有两块,第一块云服务事件,不用管,这是内部内置的总线,专门给云服务去提供的,假如要做自建系统,直接点自定义总线就可以,自定义总线先去选一个名称,比如 test123321。然后点下一步,把后面的直接跳过,这样进展会快点。这里已经创建了一个叫自定义总线的主体。
事件源在哪添加呢?其实很简单,事件源写的也比较清楚。发现有很多预置项,看一下第一个要配置什么,要配置 web hook,添加睡眠,比如这里是 test web hook,选 HTTP,还有 HTPS 触发的项,这里依然添加自定义事件源,然后选择事件提供方,选择方式,安全配置选择无需配置,点确定。这样现在一个 web hook 地址就已经生成了,可以直接点进来,然后会看到一个叫公网请求 URL 的东西,可以直接去 web hook 访问,这里已经发送成功了。
这样可以直接拿着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.动手实践:配置事件目标——直接触发
下面配置一下目标,
刚刚已经配完了事件源,然后可以尝试配置目标。看一下这些消息,然后去fill out。首先还是点事件规则,这是新的,所以没有创建过任何规则,首先测一下钉钉,钉钉可能会更简单一点,也会更直观,这里的模式其实是过滤模型,这个模型支持了很多模式,比如指定值匹配,前缀匹配,指定值只要匹配事件的某个字段是什么值,然后做触发。前缀匹配是只要是这个前缀的都可以做触发,类些这种还有很多,比如后缀等其他的一些东西,比如 IP 地址,数组等,大家可以直接在文档里面去看。现在希望全量的事件都触发到下游,所以这个事件模型可以为空,那空对象就会匹全部模式,直接点下一步,然后钉钉可以直接配一个钉钉的告警的机器人,把它做一些演示。
首先直接打开钉钉,去找测试的账号,找一个测试群,这样会更简单一点。这里有一个新建的测试群,然后在这里找群管理,会有一个机器人管理,然后新建一个机器人,点添加。
这就是 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 这个产品了解更深,也欢迎大家关注后续的一些课程。