首頁>技術>

事件驅動架構

事件驅動架構(Event Driven Architecture)是一個流行的分散式非同步架構模式,可以用來設計規模很大的應用程式。基於這種架構模式應用可大可小。它由高度解耦的,單一目的的事件處理元件組成,可以非同步地接收和處理事件。

一個事件驅動系統典型地由事件消費者和事件產生者組成,事件消費者向事件管理器訂閱事件,事件產生者向事件管理器釋出事件。當事件管理器從事件產生者那接收到一個事件時,事件管理把這個事件轉送給相應的事件消費者。如果這個事件消費者是不可用的,事件管理者將保留這個事件,一段間隔之後再次轉送該事件消費者。

關鍵概念解釋

事件:系統或元件的狀態發生變化時,系統層發出的通知。

解耦方式:每個物件都透過與中介軟體(Mediator or Broker)實現與外界的溝通,而不是相互依賴(迪米特法則)。

通訊方式:以訊息為載體、透過中介軟體傳遞通訊。

拓撲結構分類

它包括兩個主要的拓撲結構:mediator 和 broker。

mediator拓撲結構broker拓撲結構

這兩種拓撲架構的特徵和實現有很大的不同,所以你需要知道哪一個適合你。

Mediator拓撲結構

Mediator拓撲結構適合有多個步驟的事件,需要安排處理層次。

採用Mediator模式的架構中,事件一般是複雜的(包含多個執行單元的合集),而Mediator的責任就是將該複合事件拆解為獨立的子事件,然後傳送到不同型別的子事件處理系統中,由子系統完成獨立子事件的分發和處理。

在結構上,Mediator的EDA架構包括4個元件:

event channels

通道(可以理解為細分的Event Queue),按照事件的型別不同作以劃分。它可以是一個訊息佇列,提供給特定的Processor查詢,或是訊息Topic,傳送特定的廣播。

event processors

事件處理器,監聽特定的Channel,並在捕獲事件後進行處理

Mediator的處理過程如下圖所示:

客戶端傳送一個事件到事件佇列(event queues)中,它用來將事件傳送給event mediator;Event mediator收到初始的事件後,會發送額外的一些非同步事件給event channels來執行處理的每個步驟;Event channels 既可以是訊息佇列,也可以是訊息topic,大部分是訊息topic,這樣可以由多個訊息處理器(event processor)處理同一個訊息。Event processors監聽event channels,接收事件並處理一些業務邏輯。

值得注意的是:

1、在事件驅動架構中有十幾個甚至幾百個事件佇列都很正常。

2、模式本身沒有限定事件佇列的實現方式,它可能是一個訊息佇列,一個web service或者其它;

3、訊息處理器包含實際的業務邏輯。每個訊息處理器都是自包含的,獨立的,高度解耦的,執行單一的任務。

Broker拓撲架構

Broker是一種更簡潔的事件驅動架構,不同於上面的結構,它沒有中心的Mediator。

在結構上,Broker的EDA架構包括3個元件:

EventEvent ChannelEvent Processor

如圖所示,它包含兩個元件broker和 event processor。

broker中的event channel可以是訊息佇列,訊息topic或者它們的複合形式。每個event processor負責處理事件,釋出新的事件。架構考量

事件驅動架構模式實現起來相對複雜,主要是由於它的非同步和分散式特性。這可能會帶來一些分散式的問題,比如遠端處理的可用性,缺乏響應,broker重連等問題。

1、分散式的非同步架構

事件處理器之間高度解耦,軟體的擴充套件性好,事件處理器可以獨立地載入和解除安裝,容易部署,同時效能較好,因為事件的非同步本質,軟體不易產生堵塞。

2、對於單一的邏輯缺乏原子事務

此模式需要將原子事務交給一個事件處理器執行,跨事件處理器的原子事務是很困難的,很難進行回滾操作。同時對於事件處理器的建立,維護和管理比較困難,事件通常有特殊的約定(資料值和格式)。

模式分析

結合上文分析,事件驅動架構設計模式整體分析如下:

總體靈活性: 高發布易用性: 高可測試性: 低效能: 高規模擴充套件性: 高開發容易度: 低

- END -

Thanks for reading!

20
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Kotlin - 空型別和智慧型別轉換