作者:肯梦

作为 Gartner 界说的 10 大战略技能趋势之一,事情驱动架构(EDA)逐渐成为主流技能架构。依据 Gartner 的预估,在新式数字化商业的处理计划中,将有 60%运用 EDA,在商业安排参加的技能栈中,EDA 有一半的占比。

当下比较成功的企业已然认识到,要想最大极限提高运营功率和客户体会,务必要将事务和技能两方面的举动严密结合起来。运营事情或事务形势的改变是时下很多企业重视的焦点,这些改变能够为企业领导者带来实在有用的信息,而架构设计的宗旨恰恰是从客户联系人、买卖、运营等方面的信息中获取洞见,两者相得益彰。传统技能向来对企业从事情中获取洞见的速度有着诸多限制,比方用于记载、搜集和处理此类事情的批处理 ETL(提取、转化、加载)等。根据以上布景,阿里云 EventBridge 应运而生。

EventBridge 是事情驱动的具体落地产品,也是 EDA 的最佳实践方法。

事情驱动(EDA)是什么

早在 2018 年,Gartner 评估陈述将 Event-Driven Model 列为 10 大战略技能趋势之一,事情驱动架构(EDA)将成为未来微服务的主流。该陈述一起做出了以下断语:

• 到 2022 年,事情告诉的软件模型将成为超越 60% 的新式数字化商业的处理计划;

• 到 2022 年,超越 50% 的商业安排将参加到事情驱动的数字化商业服务的生态体系当中。

很喜欢 George Santayana 在《 The Life of Reason》说的一句话 Those who fail to learn History are doomed to repeat it.(不懂历史的人注定会重蹈覆辙)。咱们以史为鉴,来看看为什么会架构会演进到事情驱动。

EventBridge 事件总线及 EDA 架构解析

上图是关于架构演进时间轴线。架构自身没有好坏之分,它自身便是一组技能决议计划,决定后续项目的一切功用开发(结构,编码规范,文档,流程….),所以这里不谈选型好坏,只谈为什么会引进某些结构,这个结构处理了软件开发中的什么问题。

• 单体架构: 在单节点服务中,单体运用的一切模块都封装在单个进程运转,通讯经过相同堆栈调用完结。这种形式下非常简略导致结构和关系不清晰,难以对体系进行更改和重构。就像一个不透明的,粘稠的,脆弱的,僵硬的 Big Ball of Mud!

• 分层架构: 在经典的分层架构中,层以适当慎重的方法运用。即一个层只能知道它下方层的数据。在随后的实际运用中,更多的方法是一个层能够拜访它下面的任何层。分层架构处理了单体架构的的逻辑分离问题,每一层都能够被等效替换,是用层差异也愈加规范化,一起一个层能够被几个不同/更高级别的层运用。当然,层也有比较明显的缺点,层不能封装掉一切,比方添加到 UI 的某个字段,或许也需求添加到 DB,并且额外剩余的层会严重危害体系性能。

• MVC 架构: MVC 架构发生的原因其实很简略,随着事务体系的杂乱性增加,之前所谓“全栈工程师”现已不适用大部分场景。为了下降前端和后台的集成杂乱性,故而开始推广 MVC 架构。其间,Model 代表事务逻辑;View 代表视图层,比方前端 UI 的某个小组件;Controller 供给 View 和 Model 的协调,比方将用户某项操作转为事务逻辑等。此外还有很多扩展架构,比如 Model-View-Presenter,Model-View-Presenter-ViewModel,Resource-Method-Representation,Action-Domain-Responder 就不在细说了,感兴趣的同学能够 wiki 搜索下。

• EBI 架构: 即 Entity,Boundary(接口),Interactor (控制)。EBI 架构将体系鸿沟视为完好衔接,而不仅仅是视图,控制器或接口。EBI 的实体代表持有数据并完毕相关行为的实际实体,很相似阿里云的 POP API。EBI 首要仍是后端概念,它是与 MVC 相得益彰的。

• 洋葱架构: 洋葱架构是一种低耦合,高内聚的架构模型。一切的运用程序环绕独立的对象模型构建,内层界说接口,外层完结接口,耦合方向向中心内聚,一切代码都能够独立与基础设施进行编译和运转。

• SOA 架构: SOA 是 Service Orientated Architure 的缩写,即面向服务架构。表明每一个功用都是经过一个独立的服务来供给,服务界说了清晰的可调用接口,服务之间的编排调用可完结一个完好的事务。其实这个架构也是现在架构中最成熟的,日常运用最多的架构形式。

在介绍完之前悉数的架构趋势后,在回过头看看什么是 EDA 架构。

EDA 事情驱动架构( Event-Driven Architecture ) 是一种体系架构模型,它的中心才能在于能够发现体系“事情”或重要的事务时间(例如买卖节点、站点拜访等)并实时或挨近实时地对相应的事情采纳必要举动。这种形式替代了传统的“ request/response ”模型,在这种传统架构中,服务有必要等候回复才能进入下一个任务。事情驱动架构的流程是由事情供给运转的。

EventBridge 事件总线及 EDA 架构解析

上图其实很好的解说了 EDA 架构的模型,可是其实还不行清晰,所以这里咱们和单体架构一起对比看看他们之间差异。

EventBridge 事件总线及 EDA 架构解析

在如上对比图中,咱们其实能够较为清楚看到它与传统架构的差异。在一般传统架构中,创建订单操作发生后,一系列的操作其实都是经过一个体系完结的。而事情驱动的概念则是将悉数操作都转化为 “事情” 概念,下流经过捕获某个 “事情” 来决定调用什么体系完结什么样的操作。

咱们回过头来看“事情”,刚刚介绍中比较的重要部分其实是将操作转化为某类事情进行分发。那这的事情咱们怎么界说呢?

简略来看,其实事情便是状况的明显改变,当用户采纳特定举动时触发。以 4S 店售卖汽车为例:

• 当客户购买汽车并且其状况从 For Sale 变为 Sold 是一个事情; • 成功买卖后,从帐户中扣除金额是一个事情; • 单击预订试驾后,从将预定信息添加到指定用户便是一个事情;

每个事情都或许触发一个或多个选项作为响应。

事情其实云原生 CNCF 基金会在 2018 年托管了开源 CloudEvents 项目,该项目旨在用一致和规范的格局来描绘事情,来加强不同的服务、平台以及体系之间的互操作性。在该项目界说下,通用的事情规范是这样的:

EventBridge 事件总线及 EDA 架构解析

事情首要由 Json 体构成,经过不同字段描绘发生的事情。

总结来看,事情驱动其实是将比较重要的事务时间封装成“事情”,并经过某个 EventBus 将事情路由给下流体系。

了解了 EDA 架构的整个处理进程,可是还没处理这个所谓的“EventBus”究竟是什么?

EventBridge 事件总线及 EDA 架构解析

如上图便是 EventBus 的中心逻辑架构,它由 Event Producer 和 Event Consumer 两端组成,经过 Bus 解耦中间环节,是不是非常像某个传统的 MQ 架构?别着急,在接下来的落地实践部分会解说这个架构的杂乱部分。

EDA 架构的落地实践考虑

在开始介绍落地实践时,咱们先来看一个经典的 EDA 架构模型:

EventBridge 事件总线及 EDA 架构解析

这是一个非常经典 EDA 订单架构,该架构首要运用了 EventBridge 和 FC 函数核算(假如不太了解 FaaS 的同学能够把 FC 节点当作 ECS 或 Kubernetes 的某个 POD 节点),经过事情驱动各个事务进行协作。

所以这块的中心节点(EventBridge)其实有三个比较重要的才能:

  1. For Event Capturing(事情搜集):具备采集事情的才能;
  2. For Routing(事情路由):经过事情内容将事情路由分发至于下流的才能;
  3. For Event Processing(事情过滤/替换):对事情进行脱敏或初步过滤&挑选的才能。

通常情况下,要完结这三个才能是比较困难的,比方:Event Capturing 或许需求了解 Dell Boomi, Snaplogic, MuleSoft, Dataflow, Apache Apex 等,Routing 部分或许经过 RocketMQ、RabbitMQ、ActiveMQ、Apache Kafka,Event Processing 需求了解 Apache Storm, Apache Flink 。所以之前讲的逻辑架构其实非常理想,要想完结完结的 EDA 事情驱动还需求包括这些中心才能。

EventBridge 事件总线及 EDA 架构解析

其实,从刚刚的架构中咱们也能窥视到一些信息,EDA 架构其实看起来没有那么简略,那它有何好坏呢?

下面简略罗列下 EDA 架构在实践中的优势:

松耦合: 事情驱动架构是高度松耦合且高度分布式的架构模型,事情的创建者(来源)只知道发生的事情,并不知道事情的处理方法,也关心有多少相关方订阅该事情;

异步履行: EDA 架构是异步场景下最适合的履行工具,咱们能够将需求事情保留在队列中,直到状况正常后履行;

可扩展性: 事情驱动架构能够经过路由&过滤才能快速区分服务,供给更便捷的扩展与路由分发;

灵敏性: 事情驱动架构能够经过将事情分发至任何地方,供给更灵敏高效的部署计划。

当然,劣势也很明显:

架构杂乱: 事情驱动架构杂乱,路由节点多,体系结成杂乱,功用要求多;

路由分发问: 事情路由分发问,灵敏的事情路由需求依赖强大的实时核算才能,对全体分发体系要求较高;

无法追踪: 事情追踪是整个 EDA 架构的确保,EDA 架构中往往很难追踪到事情处理状况,需求大量的定制化开发;

可靠性差: 事情驱动因为需求多体系集成,可靠性通常较差,且交给无法保障。

怎么处理 EDA 场景下的窘境

针对 EDA 场景面临的这些问题,阿里云推出了 EventBridge,一款无服务器事情总线服务,其任务是作为云事情的纽带,以规范化的 CloudEvents 1.0 协议衔接云产品和运用、运用和运用,供给中心化的事情办理和驱动才能,协助用户轻松构建松耦合、分布式的事情驱动架构;别的,在阿里云之外的云商场上有海量垂直范畴的 SaaS 服务,EventBridge 将以超卓的跨产品、跨安排以及跨云的集成与被集成才能,助力客户打造一个完好的、事情驱动的、高效可控的上云体会。

阿里云对 EventBridge 做了界说,中心价值包括:

• 一致事情纽带:一致事情界面,界说事情规范,打破云产品事情孤岛; • 事情驱动引擎:海量事情源,毫秒级触发才能,加速 EDA/Serverless 架构升级; • 开放与集成:供给丰厚的跨产品、跨平台衔接才能,促进云产品、运用程序、SaaS 服务彼此集成。

EventBridge 事件总线及 EDA 架构解析

下面从架构层面和功用层面临 EventBridge 进行介绍:

架构层面

针对架构杂乱问题,EventBridge 供给业界通用的 Source ,Buses,Rules,Targets 模块办理才能,一起支撑 EventBus 和 EventStream 两种形式,大幅度下降事情驱动架构难度。

EventBridge 事件总线及 EDA 架构解析

1)事情总线模型经典 EDA( 事情驱动)场景的 N:N 模型,供给多事情路由,事情匹配,事情转化等中心才能,协助开发者快速建立事情驱动架构。

EventBridge 事件总线及 EDA 架构解析

2)事情流模型规范 Streaming(1:1) 流式处理场景,无总线概念,用于端到端的数据转储,数据同步及数据处理等,协助轻松构建云上端到端的数据管道服务。

EventBridge 事件总线及 EDA 架构解析

功用层面

在功用层面,EventBridge 的中心亮点运用包括:

1)事情规则驱动 针对根据事情的路由分发,EventBridge 经过事情规则驱动,支撑 8 大事情形式,4 重转化器,满足路由分发的悉数诉求。

EventBridge 事件总线及 EDA 架构解析

2)事情追踪 针对事情无法追踪,独家供给事情追踪才能,事情剖析/查询才能。为用户完善的全链路事情查询剖析才能。

EventBridge 事件总线及 EDA 架构解析

3)DLQ/重试机制、事情全流程触发 针对可靠性差,支撑 DLQ/重试机制,与事情全流程触发,大幅度确保因为用户下流体系导致的事情毛病与延迟。

EventBridge 事件总线及 EDA 架构解析

4)Schema 注册中心 针对事情办理杂乱,支撑 Schema 注册中心,支撑事情信息的解说、预览和上下流代码生成才能,协助用户低代码完结事情的收发处理。处理跨部门信息沟通困难,事务代码冗余等一系列事情办理问题。

5)一起,根据以上功用 EventBridge 支撑对接 85 种以上的阿里云产品,847 种事情类型。

EventBridge 事件总线及 EDA 架构解析

更多产品功用介绍,可拜访 EventBridge 官网

www.aliyun.com/product/ali…

阿里云 EventBridge 更多场景介绍

经典 EDA 事情驱动

事情总线(EventBridge)最重要的才能是经过衔接运用程序、云服务和 Serverless 服务来构建 EDA(Event-driven Architectures) 事情驱动架构,驱动运用与运用,运用与云的衔接。

EventBridge 事件总线及 EDA 架构解析

流式 ETL 场景

EventBridge 另一个中心才能是为流式的数据管道的责任,供给基础的过滤和转化的才能,在不同的数据仓库之间、数据处理程序之间、数据剖析和处理体系之间进行数据同步/跨地域备份等场景,衔接不同的体系与不同服务。

EventBridge 事件总线及 EDA 架构解析

一致事情告诉服务

EventBridge 供给丰厚的云产品事情源与事情的全生命周期办理工具,您能够经过总线直接监听云产品发生的数据,并上报至监控,告诉等下流服务。

EventBridge 事件总线及 EDA 架构解析

重磅引荐

本篇是对 EventBridge 事情总线及 EDA 架构进行了全体介绍,若您意犹未尽,想要了解更多场景运用,可重视「阿里云 EventBridge 系列公开课」,完好课程现已重磅推出!本次系列直播课共包括有 5 个 Topic ,带您一起深入了解阿里云 EventBridge 事情总线的中心功用及运用。

后期系列课具体安排如下,有兴趣的小伙伴不要错失哦~

EventBridge 事件总线及 EDA 架构解析

点击此处,即可观看本篇文章对应的公开课视频~ 发布云原生技能最新资讯、汇集云原生技能最全内容,定时举行云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探究云原生技能点滴,共享你需求的云原生内容。

重视【阿里巴巴云原生】公众号,获取更多云原生实时资讯!