事件驱动架构
最后更新于:2022-04-02 03:08:07
[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)
### 优点
- 分布式的异步架构,事件处理器之间高度解耦,软件的扩展性好
- 适用性广,各种类型的项目都可以用
- 性能较好,因为事件的异步本质,软件不易产生堵塞
- 事件处理器可以独立地加载和卸载,容易部署
### 缺点
- 涉及异步编程(要考虑远程通信、失去响应等情况),开发相对复杂
- 难以支持原子性操作,因为事件通过会涉及多个处理器,很**难回滚**
- 分布式和异步特性导致这个架构较**难测试**
';