作者|肯梦

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

事情驱动型架构 (EDA) 方兴未艾,作为一种 Serverless 化的运用概念对云原生架构具有着深远影响。当咱们讨论到一个具体架构时,首当其冲的是它的发展是否具有技能先进性。这儿从咱们了解的 MVC 架构,SOA 架构谈起,聊一聊关于音讯事情范畴的前史与发展趋势。

音讯事情范畴的发展趋势

图片 1.png

早在 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.(不懂前史的人注定会重蹈覆辙)。咱们以史为鉴,来看看为什么会架构会演进到事情驱动。

图片 2.png

架构本身没有好坏之分,它本身便是一组技能决策,决定后续项目的一切功用开发(结构,编码标准,文档,流程….),这儿聊聊为什么会引进某些结构,这个结构处理了软件开发中的什么问题。

  • 单体架构:在单节点服务中,单体运用的一切模块都封装在单个进程运转,通信经过相同仓库调用完结。这种形式下十分容易导致结构和联系不清晰,难以对体系进行更改和重构。就像一个不透明的,粘稠的,脆弱的,僵硬的 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 。
  • EBI 架构:即 Entity,Boundary(接口),Interactor(控制)。EBI架构将体系边界视为完好衔接,而不仅仅是视图,控制器或接口。EBI 的实体代表持有数据并完毕相关行为的实践实体,很类似阿里云的 POP API。EBI 首要还是后端概念,他是与 MVC 相得益彰的。
  • 洋葱架构:洋葱架构是一种低耦合,高内聚的架构模型。一切的运用程序环绕独立的对象模型构建,内层界说接口外层完成接口,耦合方向向中心内聚,一切代码都能够独立与根底设施进行编译和运转。
  • SOA 架构:SOA 是 Service Orientated Architure 的缩写,即面向服务架构。表示每一个功用都是经过一个独立的服务来供给,服务界说了清晰的可调用接口,服务之间的编排调用完结一个完好的事务。其实这个架构也是目前架构中最老练的,日常运用最多的架构形式。

什么是 EDA 架构

咱们聊完之前全部的架构趋势后,再回过头看看什么是 EDA 架构。

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

图片 3.png

上图其实很好的解释了 EDA 架构的模型,可是其实还不够清晰。所以,这儿咱们和单体架构一同比照看看他们之间差异。

图片 4.png

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

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

咱们了解了 EDA 架构的整个处理过程,可是还没处理这个所谓的“EventBUS”到底是啥样。

图片 5.png

上图便是事情驱动的中心逻辑架构。是不是十分像某个传统 MQ?别着急,下面我会讲到这个架构的杂乱部分。讲完 EventBus,咱们回过头来看“事情”,刚刚介绍中比较重要部分其实是将操作转化为某类事情进行分发。那这的事情咱们怎样界说呢?

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

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

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

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

图片 6.png

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

EDA 架构的落地实践思考

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

图片 7.png

这是一个十分经典 EDA 订单架构,该架构首要运用了 EventBridge 和 FC 函数核算(如果不太了解 FaaS 的同学能够把 FC 节点当作 ECS 或 K8s 的某个 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 事情驱动还需求包括这些中心才能。

图片 8.png

其实,从刚刚的架构中咱们也能窥视到一些信息,EDA 架构其实看起来没有那么简略,那它有何好坏呢?下面我就简略罗列下 EDA 架构在实践中的优势:

  • 松耦合:事情驱动架构是高度松耦合且高度分布式的架构模型,事情的创建者(来源)只知道产生的事情,并不知道事情的处理方式,也关怀有多少相关方订阅该事情。
  • 异步履行:EDA 架构是异步场景下最适合的履行工具,咱们能够将需求事情保留在队列中,直到状况正常后履行。
  • 可扩展性:事情驱动架构能够经过路由&过滤才能快速区分服务,供给更快捷的扩展与路由分发。
  • 敏捷性:事情驱动架构能够经过将事情分发至任何地方,供给更敏捷高效的布置方案。

当然,下风也很明显:

  • 架构杂乱:事情驱动架构杂乱,路由节点多,体系结成杂乱,功用要求多。
  • 路由分发问:事情路由及分发问,灵活的事情路由需求依赖强大的实时核算才能,对全体分发体系要求较高。
  • 无法追寻:事情追寻是整个 EDA 架构确保,EDA 架构中往往很难追寻到事情处理状况,需求大量的定制化开发。
  • 可靠性差:事情驱动因为需求多体系集成,可靠性通常较差,且交付无法确保。

阿里云 EventBridge 如何处理 EDA 场景下的困境

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

图片 9.png

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

路由分发:EventBridge 经过事情规则驱动,支撑 8 大事情形式,4 重转化器,满足路由分发的全部诉求。

无法追寻:独家供给事情追寻才能,事情分析/查询才能。为用户完善全体事情链路。

可靠性差:支撑 DLQ/ 重试机制,大幅度确保因为用户下流体系导致的事情毛病与延迟。

一起,在此根底上 EventBridge 支撑 82 种阿里云产品,847 种事情类型。

阿里云 EventBridge 更多场景介绍

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

图片 10.png

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

图片 11.png

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

图片 12.png

目前事情总线免费公测,点击下方链接,当即体会!
www.aliyun.com/product/ali…

参加钉群(群号:31481771),及时了解产品最新动态!

二维码.png

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。