首页 > 其他分享 >Eventgrid+Function实现event driven架构 - 架构介绍及环境部署

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署

时间:2024-01-29 19:07:25浏览次数:35  
标签:Function function 架构 -- driven eventgrid 使用者 event

今天来介绍这几年在云上比较流行的event driven,也就是事件驱动的架构,用一个很简单的sample来实际看下事件驱动的架构到底是个啥

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_Event

事件驱动的架构由生成事件流的事件生成者和侦听事件的事件使用者组成,它的特点是事件可几乎实时发送,因此使用者可在事件发生时需要立即做出响应。 生成者脱离使用者,即生成者不知道哪个使用者正在倾听。 使用者之间也能彼此脱离,且每个使用者都能看到所有事件。 这与使用者竞争模式不同,在此模式中,使用者从队列中拉取消息,且消息仅处理一次(假设没有错误)。

这种架构在IOT等系统中是非常常见的,但除了IOT之外,在Azure中很多其他场景也可以用到这样的架构,今天举的例子里主要用到了Azure EventGrid以及Azure Function,对应的场景主要还是解决云上的一些类似compliance问题,比如如果我们需要把云上的事件日志保存到数据库里做归档,或者需要根据云上的事件日志做一些对应的处理等,都可以用到下边的架构,这种架构的通用性还是比较强的。

今天这个举的这个例子,最终实现的目的就是把云上产生的各种日志,包括activity log等通过function最终写入到数据库里。每次云上产生log之后,EventGrid会订阅这些event,我们可以订阅很多种类型的event,但是我们这里只订阅subscription级别的activity log来做个测试,下游的function会通过eventgrid trigger来触发function,最终在function里对这些事件进行处理,通过Azure SQL的output binding来把数据最终写到数据库里

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_Event_02

EventGrid是啥这里就不过多的介绍了,简单理解就是一个消息队列系统,其实几年之前就对这个服务做过介绍,架构其实和今天介绍的这个场景也颇有些类似,有兴趣的可以再翻翻

使用Function和eventgrid实现storage account log的自动分析和转换

这个案例里我们需要用到的服务主要包括以下几个

  1. Azure EventGrid system topic
  2. Azure EventGrid event subscription
  3. Azure Function
  4. Azure SQL

首先先把EventGrid topic部署出来,topic决定了我们要订阅什么类型的事件,这里我们主要用到的是subscription的activity log

$sub_id= '/subscriptions/xxxx-xxxxx-xxxx-xxxx'
az eventgrid system-topic create `
    -g event `
    --name subevent `
    --location global `
    --topic-type Microsoft.Resources.Subscriptions `
    --source $sub_id

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_SQL_03

部署完成之后,其实已经可以看到有数据出来了

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_SQL_04

接下来准备把下游的function app先部署出来,这样才可以把eventgrid和function link在一起

$AZURE_STORAGE_ACCOUNT='functionsakj'
$functionAppName='eventfunction2024'
az storage account create --name $AZURE_STORAGE_ACCOUNT `
						  --resource-group Event `
						  --location eastasia


az functionapp create `
  --name $functionAppName `
  --storage-account $AZURE_STORAGE_ACCOUNT `
  --consumption-plan-location eastasia `
  --resource-group Event `
  --os-type Linux `
  --runtime python `
  --runtime-version '3.11' `
  --functions-version 4

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_Azure_05

function app部署好之后,还要把function部署出来,因为最终是function和eventgrid link起来,而不是function app,function部署主要会用到VSCODE,这里我们要创建一个eventgrid trigger的function,这里function中的代码我们可以先用默认生成的,之后再替换成实际的代码,这个过程不多赘述

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_SQL_06

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_Azure_07

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_事件驱动_08

function部署完成

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_云_09


接下来就可以创建event subscription了,可以看到这里的endpoint指定的其实就是我们上边创建的function的id。

$function_id=az functionapp function show -g event -n $functionAppName --function-name EventGridTrigger --query id -o tsv
az eventgrid system-topic event-subscription create -n event `
													-g event `
													--system-topic-name subevent `
													--endpoint $function_id `
													--endpoint-type azurefunction `
													--enable-advanced-filtering-on-arrays true

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_SQL_10

在这之后,我们的event和function相当于就连接在一起了,云上生成的事件会通过evengrid最终转到function那里进行处理,可以看到配置好了之后,function已经在被trigger了

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_事件驱动_11

这篇里我们部署的实际上是架构图中的左边部分,下篇中再来看从function如何把数据写入到Azure SQL

Eventgrid+Function实现event driven架构 - 架构介绍及环境部署_云_12

标签:Function,function,架构,--,driven,eventgrid,使用者,event
From: https://blog.51cto.com/mxyit/9362895

相关文章

  • 英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构
    英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑近期,AIGC领域呈现出一片繁荣景象,其背后离不开强大算力的支持。以ChatGPT为例,其高效的运行依赖于一台由微软投资建造的超级计算机。这台超级计算机配备了数万个NVIDIA......
  • 项目整体架构设计,技术选型:架构师要通盘考虑项目技术
    技术选型:架构师要通盘考虑项目技术1 用户层 H5、Vue.js、ElementUI、apacheecharts(展示图表)等技术。而在构建移动端应用时,我们会使用到微信小程序。2 网关层 Http服务器,部署静态资源,访问性能高。在Nginx中还有两个比较重要的作用:反向代理和负载均衡3 应用层 SpringBoot:快......
  • 英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构
    英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑近期,AIGC领域呈现出一片繁荣景象,其背后离不开强大算力的支持。以ChatGPT为例,其高效的运行依赖于一台由微软投资建造的超级计算机。这台超级计算机配备了数万个NVIDI......
  • 10种常见的软件架构模式
    你是否想知道企业大规模系统是如何设计的?在软件开发开始之前,我们必须选择一个合适的架构,能提供所需的功能和质量特性。因此,在将架构应用到我们的设计之前,我们应该了解各种不同架构的特点。什么是架构模式?根据维基百科:架构模式是在软件架构上针对特定上下文件解决常见问题的通......
  • 产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值
    星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台,满足对海量数据的存储和复杂业务的处理需求。同时在易用性方面持续深耕,降低用户开发和运维成本,让数据处理平民化,助力用户以更便捷、高效的方式去挖掘数据价值。基于这样的宗旨,星环科技TDH正式发布了9.3......
  • 模块化架构
    模块化架构是一种软件设计风格,强调整体应用程序中的模块化。它的目标是将整体架构的简单性和直接部署模型与通常与微服务相关的模块化和可维护性结合起来。增强的模块化:模块通过将代码组织到不同的模块中来促进关注点的清晰分离。这种分离增强了代码库的可维护性和可理解性,使团队......
  • MySQL InnoDB引擎架构
    逻辑存储结构:表空间(ibd文件):一个mysql实例可以对应多个表空间,用于存储记录,索引等数据。段:分为数据段(Leafnodesegment),索引段(Non-leafnodesegment)、回滚段(Rollbacksegment),InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个Exte......
  • Dubbo 架构演进:从 RMI 到 Dubbo
    目录Dubbo架构演进:从RMI到Dubbo1.自定义RPC2.RMI架构2.1整体架构2.2RPC调用3.Dubbo架构3.1整体架构3.2RPC调用3.3服务治理4.总结时刻推荐阅读 谈谈你对Dubbo的认知?对于这个问题,你是怎么回答的呢?我们知道Dubbo是从RPC起家,......
  • Unity架构师进阶:红点系统的架构与设计
    面试的时候经常被问道如何来设计一个红点系统,本文将详细地介绍如何设计一个红点系统,有哪些接口,并完整地给出实现。红点系统的需求分析首先我们来分析一下红点系统的设计需求:红点系统严格意义上来说不属于框架,而是游戏逻辑,所以代码不要放到通用的框架里面,并不属于基础服务。它......
  • FMEA:总监和架构师都在用的高可用架构分析方法
    FMEA:总监和架构师都在用的高可用架构分析方法记得之前准备春晚项目的时候,团队成员在一起过架构,老板最常问的问题是“这个组件挂了怎么办?有什么影响?”,我当时还在心里默默嘀咕:这咋都这么容易挂呢?其他组件不做高可用的吗?最近看到FMEA,我恍然大悟:哦,这原来不就是FMEA吗?原来是我“有......