首頁>技術>

微服務的服務呼叫包括三類主要場景:微服務內跨層服務呼叫,微服務之間服務呼叫和領域事件驅動。

一、使用者介面層

使用者介面層負責向用戶顯示資訊和解釋使用者指令,並將資料傳遞給 Application 層。資料的組裝、資料傳輸格式以及 Facade 介面等程式碼都會放在這一層目錄裡。這裡的使用者可能是:使用者、程式、自動化測試和批處理指令碼等等。

二、應用層

實現服務組合和編排,適應業務流程快速變化的需求,這一層聚集了應用服務和事件相關的功能。

應用層是很薄的一層,理論上不應該有業務規則或邏輯,主要面向用例和流程相關的操作。但應用層又位於領域層之上,因為領域層包含多個聚合,所以它可以協調多個聚合的服務和領域物件完成服務編排和組合,協作完成業務操作。

此外,應用層也是微服務之間互動的通道,它可以呼叫其它微服務的應用服務,完成微服務之間的服務組合和編排。

特別注意:在設計和開發時,不要將本該放在領域層的業務邏輯放到應用層中實現。因為龐大的應用層會使領域模型失焦,時間一長你的微服務就會演化為傳統的三層架構,業務邏輯會變得混亂。

三、領域層

實現領域的核心業務邏輯。這一層聚集了領域模型的聚合、聚合根、實體、值物件、領域服務和事件等領域物件,以及它們組合所形成的業務能力。

領域模型的業務邏輯主要是由實體和領域服務來實現的,其中,實體採用充血模式,其自身的所有邏輯都寫在本類中;當需要組合多個實體或值物件時,可以使用領域服務,實現複雜的業務邏輯。

四、基礎層

基礎層是貫穿所有層的,它的作用就是為其它各層提供通用的技術和基礎服務,包括第三方工具、驅動、訊息中介軟體、閘道器、檔案、快取以及資料庫等。比較常見的功能還是提供資料庫持久化。

基礎層包含基礎服務,它採用依賴倒置設計,封裝基礎資源服務,實現應用層、領域層與基礎層的解耦,降低外部資源變化對應用的影響。

比如說,在傳統架構設計中,由於上層應用對資料庫的強耦合,很多公司在架構演進中最擔憂的可能就是換資料庫了,因為一旦更換資料庫,就可能需要重寫大部分的程式碼,這對應用來說是致命的。那採用依賴倒置的設計以後,應用層就可以透過解耦來保持獨立的核心業務邏輯。當資料庫變更時,我們只需要更換資料庫基礎服務就可以了,這樣就將資源變更對應用的影響降到了最低。

14
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Redis高可用架構演進