1. 程式人生 > >讀書筆記-事件驅動架構

讀書筆記-事件驅動架構

事件驅動架構模式是一種主流的非同步分發事件架構模式,常用於設計高度可拓展的應用。它有很高的適應性 使得它在小型應用、大型應用、複雜應用中都表現的很好。

事件驅動架構模式由高度解耦、單一目的的事件處理元件構成,這些元件負責非同步接受和處理事件。

事件驅動架構模式包含兩種主要的拓撲結構:中介拓撲結構mediator、代理拓撲結構broker 

中介拓撲結構四種元件

   ・事件佇列 event queue            事件佇列可以是訊息佇列、web服務端或者其它類似的東西    ・事件中介
           負責分配、協調初始事件中的各個待執行步驟。事件中介只是知道初始事件中哪些步驟需要被處理,沒有真正參與到對初始事件必須處理的業務邏輯的實現之中。    ・事件通道
   ・事件處理器
           事件處理器元件中包含了應用的業務邏輯,事件處理器作為事件驅動架構中的元件,不依賴於其他元件,獨立運作,高度解耦,在應用或系統中完成特定的任務。每一個事            件處理器元件都只完成一項唯一的業務工作,並且事件處理器在完成其特定的業務工作時不能依賴其他事件處理器。        當事件流需要被處理,客戶端將一個事件傳送到某個事件佇列中,由訊息佇列將其運輸給事件中介進行處理和併發。事件中介接收到該訊息後,並通過將額外的非同步事件傳送給事件通道,讓事件通道執行該非同步事件中的每一步驟,使得事件中介能夠對事件處理進行分配、協調。同時,又因為事件處理器是事件通道的監聽器,所以事件通道對非同步事件的處理會觸發事件處理器的監聽事件,使事件處理器能夠接受來自事件中介的事件,執行事件中具體的業務邏輯,從而完成對傳入事件的處理。

在事件驅動架構模式中主要有兩種事件

   ・初始事件          是中介所接收到的最原始的事件,沒有經過其他元件的處理    ・待處理事件
          是由事件中介生成,由事件處理器接收的元件,不能把待處理事件看作成初始事件經過處理得到的事件。

代理拓撲結構與中介拓撲結構的不同之處在於:代理拓撲結構中沒有核心的事件中介;

事件流在代理拓撲結構中通過一個輕量的訊息代理將訊息串聯成鏈狀,分發至事件處理器元件中進行處理。 代理拓撲結構使用場景大致上具有一下特點:事件處理流相對來說比較簡單,不需要使用事件分配調節機制來提高處理事件的效率。 代理拓撲結構主要包括兩種元件:代理、事件處理器

優點

   ・ 整體靈活性高           事件處理器之間高度解耦,擴充套件性好    ・易於部署高
          事件處理器可以獨立地釋出和載入    ・效能高
          高度解耦,非同步並行操作大大減少了傳遞訊息過程中帶來的事件開銷    ・適用性廣,各種型別的專案都可以使用

缺點

   ・可測試性低             如果我們要進行單元測試,就需要某種特定的測試客戶端或者是測試工具產生的事件,為單元測試提供的初始值。    ・開發相對複雜
           由於使用事件驅動架構進行開發需要考慮非同步處理機制、協議建立流程,並且開發者需要用程式碼為事件處理器和操作失敗的代理提供優秀的錯誤控制環境。