java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

架构2. 事件驱动架构

架构学习难度比较大,原因为互联网上没有什么易懂的资料,大多数是翻译过来的,作者理解了,读者难以理解,月小升用复杂问题简单化,来理解下架构模式

定义:事件驱动架构是由高耦合度、单一目的的事件处理模块构成,这些模块异步接收、处理事件。(概念这玩意有点抽象,什么叫高耦合度,什么叫单一目的,什么叫事件处理模块,什么叫异步,这段定义给人一种,每个字我都看得懂,但是我不明白在说什么。)

事件驱动架构模式包含了两种主要的拓扑结构:

  1. 中介(mediator)拓扑结构 mediator 拓扑结构通常在你需要在事件内使用一个核心中介分配、协调多个步骤间的关系、执行顺序时使用

上一张大家常见的图,月小升看了半天才理解

举个例子,买房子:通过中介公司办理房产,中介会帮助我们完成五步核心流程

选房子,合同签约,贷款申请,过户,办理房本

尽管我们也会跟着中介去,但是基本中介帮忙完成

  1. 代理(broker)拓扑结构;

代理拓扑结构则在你想要不通过一个核心中介将多个事件串联在一起时使用。

也举个例子:物流系统,我们从淘宝买个电脑,电脑在北京,我在上海

被A工人从北京仓库选中,B工人装车送到上海仓库 C 快递小哥从上海仓库送给我

这个过程有3个代理人帮我运输了电脑。就如同接力赛,一人跑100米。完成任务

办公室的审批系统也是这样,比如你申请一台电脑,需要A你的经理同意,B 你的总监同意 C 采购部同意 D 财务处同意 E 开始采购去买电脑 F 买到电脑送给你

由于这两种结构在结构 特征和实现策略上有很大的差别,所以如果你想要在你的应用中使用它们的话,一定要深入理解两者的技术实现细节,从而为你的实际使用场景选择最合理的结构。

事件驱动架构的优点

◆ 并发执行

◆ 事件触发/数据触发/时间规则触发

◆ 实时/增量响应

◆ 分布式事件系统处理

◆ 可以更容易开发和维护大规模分布式应用程序和不可预知的服务或异步服务;

◆ 可以很容易,低成本地集成、再集成、再配置新的和已存在的应用程序和服务。

◆ 促进远程组件和服务的再使用,拥有一个更灵敏、没有Bug的开发环境。

◆ 短期利益:更容易定制,因为设计对动态处理有更好的响应;

◆ 长期利益:系统和组织的状态变得更精准,对实时变化的响应接近于同步。

事件驱动架构的缺点

  • 涉及异步编程(要考虑远程通信、失去响应等情况),开发相对复杂
  • 难以支持原子性操作,因为事件通过会涉及多个处理器,很难回滚
  • 分布式和异步特性导致这个架构较难测试

参考资料:
https://zhuanlan.zhihu.com/p/266630433
http://ifeve.com/%e8%bd%af%e4%bb%b6%e6%9e%b6%e6%9e%84%e6%a8%a1%e5%bc%8f-%e7%ac%ac%e4%ba%8c%e7%ab%a0%e4%ba%8b%e4%bb%b6%e9%a9%b1%e5%8a%a8%e6%9e%b6%e6%9e%84%e4%b8%8b/


This entry was posted in 技术管理 and tagged . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/event-driver-architecture/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply