🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 事件驱动架构 - 事件(event)是状态发生变化时,软件发出的通知 - 事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构 ![](http://www.ruanyifeng.com/blogimg/asset/2016/bg2016090304.png) 由四个部分组成: * 事件队列(event queue):接收事件的入口(可以使用开源中间件实现) * 分发器(event mediator):将不同的事件分发到不同的业务逻辑单元 * 事件通道(event channel):分发器与处理器之间的联系渠道 * 事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作 于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成**事件代理**和**事件处理器**两部分 ![](http://www.ruanyifeng.com/blogimg/asset/2016/bg2016090305.png) ### 优点 - 分布式的异步架构,事件处理器之间高度解耦,软件的扩展性好 - 适用性广,各种类型的项目都可以用 - 性能较好,因为事件的异步本质,软件不易产生堵塞 - 事件处理器可以独立地加载和卸载,容易部署 ### 缺点 - 涉及异步编程(要考虑远程通信、失去响应等情况),开发相对复杂 - 难以支持原子性操作,因为事件通过会涉及多个处理器,很**难回滚** - 分布式和异步特性导致这个架构较**难测试**