架构学习难度比较大,原因为互联网上没有什么易懂的资料,大多数是翻译过来的,作者理解了,读者难以理解,月小升用复杂问题简单化,来理解下架构模式
定义:事件驱动架构是由高耦合度、单一目的的事件处理模块构成,这些模块异步接收、处理事件。(概念这玩意有点抽象,什么叫高耦合度,什么叫单一目的,什么叫事件处理模块,什么叫异步,这段定义给人一种,每个字我都看得懂,但是我不明白在说什么。)
事件驱动架构模式包含了两种主要的拓扑结构:
上一张大家常见的图,月小升看了半天才理解
举个例子,买房子:通过中介公司办理房产,中介会帮助我们完成五步核心流程
选房子,合同签约,贷款申请,过户,办理房本
尽管我们也会跟着中介去,但是基本中介帮忙完成
代理拓扑结构则在你想要不通过一个核心中介将多个事件串联在一起时使用。
也举个例子:物流系统,我们从淘宝买个电脑,电脑在北京,我在上海
被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/