作者:肯梦
作为 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.(不懂历史的人注定会重蹈覆辙)。咱们以史为鉴,来看看为什么会架构会演进到事情驱动。
上图是关于架构演进时间轴线。架构自身没有好坏之分,它自身便是一组技能决议计划,决定后续项目的一切功用开发(结构,编码规范,文档,流程….),所以这里不谈选型好坏,只谈为什么会引进某些结构,这个结构处理了软件开发中的什么问题。
• 单体架构: 在单节点服务中,单体运用的一切模块都封装在单个进程运转,通讯经过相同堆栈调用完结。这种形式下非常简略导致结构和关系不清晰,难以对体系进行更改和重构。就像一个不透明的,粘稠的,脆弱的,僵硬的 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 ”模型,在这种传统架构中,服务有必要等候回复才能进入下一个任务。事情驱动架构的流程是由事情供给运转的。
上图其实很好的解说了 EDA 架构的模型,可是其实还不行清晰,所以这里咱们和单体架构一起对比看看他们之间差异。
在如上对比图中,咱们其实能够较为清楚看到它与传统架构的差异。在一般传统架构中,创建订单操作发生后,一系列的操作其实都是经过一个体系完结的。而事情驱动的概念则是将悉数操作都转化为 “事情” 概念,下流经过捕获某个 “事情” 来决定调用什么体系完结什么样的操作。
咱们回过头来看“事情”,刚刚介绍中比较的重要部分其实是将操作转化为某类事情进行分发。那这的事情咱们怎么界说呢?
简略来看,其实事情便是状况的明显改变,当用户采纳特定举动时触发。以 4S 店售卖汽车为例:
• 当客户购买汽车并且其状况从 For Sale 变为 Sold 是一个事情; • 成功买卖后,从帐户中扣除金额是一个事情; • 单击预订试驾后,从将预定信息添加到指定用户便是一个事情;
每个事情都或许触发一个或多个选项作为响应。
事情其实云原生 CNCF 基金会在 2018 年托管了开源 CloudEvents 项目,该项目旨在用一致和规范的格局来描绘事情,来加强不同的服务、平台以及体系之间的互操作性。在该项目界说下,通用的事情规范是这样的:
事情首要由 Json 体构成,经过不同字段描绘发生的事情。
总结来看,事情驱动其实是将比较重要的事务时间封装成“事情”,并经过某个 EventBus 将事情路由给下流体系。
了解了 EDA 架构的整个处理进程,可是还没处理这个所谓的“EventBus”究竟是什么?
如上图便是 EventBus 的中心逻辑架构,它由 Event Producer 和 Event Consumer 两端组成,经过 Bus 解耦中间环节,是不是非常像某个传统的 MQ 架构?别着急,在接下来的落地实践部分会解说这个架构的杂乱部分。
EDA 架构的落地实践考虑
在开始介绍落地实践时,咱们先来看一个经典的 EDA 架构模型:
这是一个非常经典 EDA 订单架构,该架构首要运用了 EventBridge 和 FC 函数核算(假如不太了解 FaaS 的同学能够把 FC 节点当作 ECS 或 Kubernetes 的某个 POD 节点),经过事情驱动各个事务进行协作。
所以这块的中心节点(EventBridge)其实有三个比较重要的才能:
- For Event Capturing(事情搜集):具备采集事情的才能;
- For Routing(事情路由):经过事情内容将事情路由分发至于下流的才能;
- 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 事情驱动还需求包括这些中心才能。
其实,从刚刚的架构中咱们也能窥视到一些信息,EDA 架构其实看起来没有那么简略,那它有何好坏呢?
下面简略罗列下 EDA 架构在实践中的优势:
松耦合: 事情驱动架构是高度松耦合且高度分布式的架构模型,事情的创建者(来源)只知道发生的事情,并不知道事情的处理方法,也关心有多少相关方订阅该事情;
异步履行: EDA 架构是异步场景下最适合的履行工具,咱们能够将需求事情保留在队列中,直到状况正常后履行;
可扩展性: 事情驱动架构能够经过路由&过滤才能快速区分服务,供给更便捷的扩展与路由分发;
灵敏性: 事情驱动架构能够经过将事情分发至任何地方,供给更灵敏高效的部署计划。
当然,劣势也很明显:
架构杂乱: 事情驱动架构杂乱,路由节点多,体系结成杂乱,功用要求多;
路由分发问: 事情路由分发问,灵敏的事情路由需求依赖强大的实时核算才能,对全体分发体系要求较高;
无法追踪: 事情追踪是整个 EDA 架构的确保,EDA 架构中往往很难追踪到事情处理状况,需求大量的定制化开发;
可靠性差: 事情驱动因为需求多体系集成,可靠性通常较差,且交给无法保障。
怎么处理 EDA 场景下的窘境
针对 EDA 场景面临的这些问题,阿里云推出了 EventBridge,一款无服务器事情总线服务,其任务是作为云事情的纽带,以规范化的 CloudEvents 1.0 协议衔接云产品和运用、运用和运用,供给中心化的事情办理和驱动才能,协助用户轻松构建松耦合、分布式的事情驱动架构;别的,在阿里云之外的云商场上有海量垂直范畴的 SaaS 服务,EventBridge 将以超卓的跨产品、跨安排以及跨云的集成与被集成才能,助力客户打造一个完好的、事情驱动的、高效可控的上云体会。
阿里云对 EventBridge 做了界说,中心价值包括:
• 一致事情纽带:一致事情界面,界说事情规范,打破云产品事情孤岛; • 事情驱动引擎:海量事情源,毫秒级触发才能,加速 EDA/Serverless 架构升级; • 开放与集成:供给丰厚的跨产品、跨平台衔接才能,促进云产品、运用程序、SaaS 服务彼此集成。
下面从架构层面和功用层面临 EventBridge 进行介绍:
架构层面
针对架构杂乱问题,EventBridge 供给业界通用的 Source ,Buses,Rules,Targets 模块办理才能,一起支撑 EventBus 和 EventStream 两种形式,大幅度下降事情驱动架构难度。
1)事情总线模型经典 EDA( 事情驱动)场景的 N:N 模型,供给多事情路由,事情匹配,事情转化等中心才能,协助开发者快速建立事情驱动架构。
2)事情流模型规范 Streaming(1:1) 流式处理场景,无总线概念,用于端到端的数据转储,数据同步及数据处理等,协助轻松构建云上端到端的数据管道服务。
功用层面
在功用层面,EventBridge 的中心亮点运用包括:
1)事情规则驱动 针对根据事情的路由分发,EventBridge 经过事情规则驱动,支撑 8 大事情形式,4 重转化器,满足路由分发的悉数诉求。
2)事情追踪 针对事情无法追踪,独家供给事情追踪才能,事情剖析/查询才能。为用户完善的全链路事情查询剖析才能。
3)DLQ/重试机制、事情全流程触发 针对可靠性差,支撑 DLQ/重试机制,与事情全流程触发,大幅度确保因为用户下流体系导致的事情毛病与延迟。
4)Schema 注册中心 针对事情办理杂乱,支撑 Schema 注册中心,支撑事情信息的解说、预览和上下流代码生成才能,协助用户低代码完结事情的收发处理。处理跨部门信息沟通困难,事务代码冗余等一系列事情办理问题。
5)一起,根据以上功用 EventBridge 支撑对接 85 种以上的阿里云产品,847 种事情类型。
更多产品功用介绍,可拜访 EventBridge 官网
www.aliyun.com/product/ali…
阿里云 EventBridge 更多场景介绍
经典 EDA 事情驱动
事情总线(EventBridge)最重要的才能是经过衔接运用程序、云服务和 Serverless 服务来构建 EDA(Event-driven Architectures) 事情驱动架构,驱动运用与运用,运用与云的衔接。
流式 ETL 场景
EventBridge 另一个中心才能是为流式的数据管道的责任,供给基础的过滤和转化的才能,在不同的数据仓库之间、数据处理程序之间、数据剖析和处理体系之间进行数据同步/跨地域备份等场景,衔接不同的体系与不同服务。
一致事情告诉服务
EventBridge 供给丰厚的云产品事情源与事情的全生命周期办理工具,您能够经过总线直接监听云产品发生的数据,并上报至监控,告诉等下流服务。
重磅引荐
本篇是对 EventBridge 事情总线及 EDA 架构进行了全体介绍,若您意犹未尽,想要了解更多场景运用,可重视「阿里云 EventBridge 系列公开课」,完好课程现已重磅推出!本次系列直播课共包括有 5 个 Topic ,带您一起深入了解阿里云 EventBridge 事情总线的中心功用及运用。
后期系列课具体安排如下,有兴趣的小伙伴不要错失哦~
点击此处,即可观看本篇文章对应的公开课视频~ 发布云原生技能最新资讯、汇集云原生技能最全内容,定时举行云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探究云原生技能点滴,共享你需求的云原生内容。
重视【阿里巴巴云原生】公众号,获取更多云原生实时资讯!