SEDA架構程序實現


一、SEDA

SEDA全稱是:stage event driver architecture,中文直譯為“分階段的事件驅動架構”,它旨在結合事件驅動和多線程模式兩者的優點,從而做到易擴展,解耦合,高並發。

各個stage之間的通信由event來傳遞,event的處理由stage的線程池異步處理。

上圖對SEDA做了一點改動,如圖所示,每個stage由幾個核心部分組成:

1)階段控制器:StageController

2)  事件隊列:eventQueue

3)  事件監聽器

4)事件處理線程池(線程池內部維護一個隊列)

5)事件處理器(事件處理器圖上沒顯示,作為一個業務線程來實現)

處理流程如下:

1)event推送到stage的eventQueue

2)  EventListener監聽到了event

3)ThreadPool異步並發處理event

二、UML類圖

依據上圖的邏輯,下面是UML類圖設計

1)  StageManager初始化調用boot(),創建Stage並維護Event和Stage之間的映射關系

2)Stage啟動監聽器,監聽事件隊列(事件隊列可以是本地,也可以是分布式隊列,這里采用一個Builder構造器了來實現,你可以在構造器里面實現自己的策略)

3)如果接收到事件,將提交給執行器去執行(這里涉及到事件處理器,包含業務邏輯)

三、PDM

下面設計了兩張表:

1)t_stage_event:針對每個Stage的事件進行持久化,防止事件丟失補償處理

2)t_stage_event_log: 對一個event做鏈路跟蹤的日志表

 


免責聲明!

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



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