# 事件驅動架構
事件(event)是狀態發生變化時,軟件發出的通知。
事件驅動架構(event-driven architecture)就是通過事件進行通信的軟件架構。它分成四個部分。

> * 事件隊列(event queue):接收事件的入口
> * 分發器(event mediator):將不同的時間分發到不同的業務邏輯單元
> * 事件通道(event channel):分發器與處理器之間的聯系渠道
> * 事件處理器(event processor):實現業務邏輯,處理完成后會發出事件,觸發下一步操作
對于簡單的項目,事件隊列、分發器和事件通道,可以合為一體,整個軟件就分成事件代理和事件處理兩部分。

優點
> * 分布式的異步架構,事件處理器之間高度解耦,軟件的擴展性好
> * 適用性光,各種類型的項目都可以用
> * 性能較好,因為事件的異步本質,軟件不易產生阻塞
> * 時間處理器可以獨立加載和卸載,容易部署
缺點
> * 涉及異步編程(要考慮遠程通信、失去響應等情況),開發相對復雜
> * 難以支持原子性操作,因為事件通過會涉及多個處理器,很難回滾
> * 分布式和異步特性導致這個架構較難測試