軟件架構---事件驅動架構


事件(event)就是狀態的顯著變化,比如說前面提到的客戶下單被執行。從來源來分,事件可以分為系統內部事件和外部事件。從類型來分,可以分為業務事件和系統事件。

事件驅動架構(Event Driven Architecture,EDA)一個事件驅動框架(EDA)定義了一個設計和實現一個應用系統的方法學,在這個系統里事件可傳輸於松散耦合的組件和服務之間。一個事件驅動系統典型地由事件消費者和事件產生者組成。事件消費者向事件管理器訂閱事件,事件產生者向事件管理器發布事件。當事件管理器從事件產生者那接收到一個事件時,事件管理把這個事件轉送給相應的事件消費者。如果這個事件消費者是不可用的,事件管理者將保留這個事件,一段間隔之后再次轉送該事件消費者。這種事件傳送方法在基於消息的系統里就是:儲存(store)和轉送(forward)。

說到底事件驅動架構就是通過事件進行通信的軟件架構。

它分成四個部分。

 

  • 事件隊列(event queue):接收事件的入口
  • 分發器(event mediator):將不同的事件分發到不同的業務邏輯單元
  • 事件通道(event channel):分發器與處理器之間的聯系渠道
  • 事件處理器(event processor):實現業務邏輯,處理完成后會發出事件,觸發下一步操作

對於簡單的項目,事件隊列、分發器和事件通道,可以合為一體,整個軟件就分成事件代理和事件處理器兩部分。

 

優點

  • 分布式的異步架構,事件處理器之間高度解耦,軟件的擴展性好
  • 適用性廣,各種類型的項目都可以用
  • 性能較好,因為事件的異步本質,軟件不易產生堵塞
  • 事件處理器可以獨立地加載和卸載,容易部署

缺點

  • 涉及異步編程(要考慮遠程通信、失去響應等情況),開發相對復雜
  • 難以支持原子性操作,因為事件通過會涉及多個處理器,很難回滾
  • 分布式和異步特性導致這個架構較難測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM