1. 程式人生 > >領域驅動模型之ERP單品模組架構設計

領域驅動模型之ERP單品模組架構設計

這裡寫圖片描述

  • 模組劃分

  • 領域物件
    使用者根據持有的單據型別ID,去可用的單據流程池中查詢單據流程池,拿到流程池之後,需要確定最終單據管理的操作是什麼,相比原始業務物件,領域物件具有了行為

  • 資源庫
    一些基礎的資料庫互動操作,資料庫與Elasticsearch快取同步等操作,相比傳統的VO,由資源庫遮蔽了敏感的直接對底層訪問,相比以前vo,具有更高的內聚,低耦合

  • 防腐層
    在一個上下文中,有時需要對外部上下文進行訪問,這時候用到防腐層,對外部上下文進行一次轉義,類似dubbo框架中多處用到的transporter,adapter等,如:對資源庫進行操作的同時,可能涉及到日誌業務的讀操作

  • 領域服務
    串聯領域物件,資源庫和防腐層等一系列領域內的物件行為,對其他的上下文提供結構,即操作的封裝,dubbo框架在設計時也大量用到了這種設計方法,如為了相容性問題,開發多種行為實現,利用SPI動態載入實現方法,達到封裝整個實現過程的目的.

  • 資料流轉

  • 上下文整合
    通常整合上下文的手段有多種,常見的手段包括開放領域服務介面、開放HTTP服務以及訊息釋出-訂閱機制。補充: 個人認為,事件驅動模型可以在這種業務下發揮很好的優勢

  • 分離領域
    下圖中領域服務是使用微服務技術剝離開來,獨立部署,對外暴露的只能是服務介面,領域對外暴露的業務邏輯只能依託於領域服務。而在Vernon著作中,並未假定微服務架構風格,因此領域層暴露的除了領域服務外,還有聚合、實體和值物件等。此時的應用服務層是比較簡單的,獲取來自介面層的請求引數,排程多個領域服務以實現介面層功能。

這裡寫圖片描述
隨著業務發展,業務系統快速膨脹,我們的系統屬於核心時:

應用服務雖然沒有領域邏輯,但涉及到了對多個領域服務的編排。當業務規模龐大到一定程度,編排本身就富含了業務邏輯(除此之外,應用服務在穩定性、效能上所做的措施也希望統一起來,而非散落各處),那麼此時應用服務對於外部來說是一個領域服務,整體看起來則是一個獨立的限界上下文。

此時應用服務對內還屬於應用服務,對外已是領域服務的概念,需要將其暴露為微服務。
這裡寫圖片描述