您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

架构的设计模式:事件驱动

时间:2020-06-30 15:53:24  来源:  作者:

事件驱动架构是一种分布式的异步架构模式,是解耦复杂系统组件的一种处理手段。这种架构模式主要包含两种实施方式,一种是集中式的,一种是非集中式的。

集中式架构

架构的设计模式:事件驱动

 

其包含了 event mediator、event channel、event queue、event processor 这些组件,理解 event mediator 是理解这种架构的关键。Event mediator 直译为事件中间处理器,也就是说这个组件是一个事件中枢处理单元,既然是中枢作用也就是这个组件知道事件的处理流程,但是他不执行具体的事件业务处理逻辑,举例来说 event mediator 在接受到 initial event 之后(在集中式模式中,有两种事件类型,一种是 initial event,一种是 processing event,initial event 是 event mediator 接受的原始事件,processing event 是由 event mediator 分发并且由 event processor 处理的事件),会根据事件的特征对事件进行拆分,形成不同的更小单元的 processing event ,这些事件之间没有明显的顺序依赖,各自独立,然后经过不同的 event channel 发送到不同的 event processor。

Event processor 是一组各自独立的组件,他们彼此之间没有依赖,也就是 他们处理 processing event 的逻辑是自包含的,不依赖于其他 processor 的处理结果 ,这是他们的显著特征。

集中式的工作模式可以以一个处理保险流程的例子来说明如图:

架构的设计模式:事件驱动

 

Event mediator 在接受到一个 relocation event 原始事件之后,拆分成 change address、recalc quote、update cliams 等 processing event,这些 event 彼此独立,经由各自的 event channel 发送到 不同的 event processor 处理。

非集中式架构

架构的设计模式:事件驱动

 

这种模式主要由 event processor 和 event channel 构成,较为简单,但是不同于集中式,这种模式的 事件可能彼此是相互关联的 ,比如一个 event processor 的处理结果是另一个 event processor 的需要消费的事件,整个事件处理过程像一条彼此相扣的链条。

同样以处理保险的为例来说明这种模式的工作流程:

架构的设计模式:事件驱动

 

图中明显可以观察到,当 change address 完成后产生的 event 会被 quote process 和 claims process 接收并处理,同样他们的处理结果又分别被 notification process 和 adjustment process 接受,整个过程就像是接力赛跑,每个 processor 必须要完成自己的工作其他 processor 才能开始执行,整个处理过程像链条一样,只有整个流程结束才能形成一个完整的业务逻辑。

权衡

事件驱动架构模式是较为复杂的,他涉及了多个分布式系统之间的交互,系统之间的稳定调用、业务的延迟敏感性等都是要必须考量的因素,尤其是在业务逻辑拆分成多个分布式执行单元之后,他们不再是一组完整的原子执行单元,而变成了分布式事务,这也加剧了这种架构模式的设计难度。因而在设计这种架构时,event 是否能够独立完成,是否要依赖于其他事件,是否是一组无法分割的事务单元都在影响着事件的拆分粒度。

事件架构的度量

agility

各个组件彼此独立,耦合性低,彼此变更而不相互影响,敏捷性强

deployment

非集中式架构部署相对容易,组件的依赖程度较低,集中式架构相对较难,各个 processor 都依赖 event mediator

testability

复杂分布式系统难以测量

performance

虽然各个组件之间的消息传递的成本需要考虑,但是由于业务逻辑分拆成多个小单元异步执行,整体性能提升较为明显

scalability

组件独立,scale out 容易,尤其是 processor

development

分布式系统,天然特征,开发难,测试难



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  Tags: 架构  点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  Tags: 架构  点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22  Tags: 架构  点击:(10)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: 架构  点击:(21)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  Tags: 架构  点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  Tags: 架构  点击:(23)  评论:(0)  加入收藏
背景在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志,从而对系统在运行时出现的问题有排查的依据。日志存储和检索...【详细内容】
2021-11-23  Tags: 架构  点击:(22)  评论:(0)  加入收藏
zookeeper动物管理员,是一个很形象的名字,是一个分布式协调服务。它可以用来做分布式配置管理,服务注册及发现,分布式锁。在CAP中,属于CP型。下图是zookeeper的架构图: 图中,绿色的...【详细内容】
2021-11-16  Tags: 架构  点击:(38)  评论:(0)  加入收藏
如何设计一个好的软件架构,如何提高软件的扩展性,移植性,复用性和可读性?很多做嵌入式开发的朋友经常会遇到这种情况:一个项目软件设计完成了,客户提出了一些新的功能需求。这时侯...【详细内容】
2021-11-08  Tags: 架构  点击:(35)  评论:(0)  加入收藏
架构是数据仓库建设的总体规划,从整体视角描述了解决方案的高层模型,描述了各个子系统的功能以及关系,描述了数据从源系统到决策系统的数据流程。业务需求回答了要做什么,架构就...【详细内容】
2021-11-03  Tags: 架构  点击:(35)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条