<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          領域驅動設計(DDD)架構演進和DDD的幾種典型架構介紹(圖文詳解)

          共 2523字,需瀏覽 6分鐘

           ·

          2022-03-18 18:49

          我們生活中都聽說了DDD,也了解了DDD,那么怎么將一個新項目從頭開始按照DDD的過程進行劃分與架構設計呢?


          一、專業(yè)術語

          各種服務

          IAAS:基礎設施服務,Infrastructure-as-a-service

          PAAS:平臺服務,Platform-as-a-service

          SAAS:軟件服務,Software-as-a-service


          二、架構演變

          從圖中已經可以很容易看出架構的演進過程,通過對三個層的舉例來進行說明:

          SAAS:比如我們最早的就是單體應用,多個業(yè)務之間可能都沒有進行分層,之后我們業(yè)務多了,都各自混淆在一起,后來我們就通過MVC、SSM、分層等方式進行業(yè)務拆分,保證業(yè)務與業(yè)務之間解耦

          PAAS:隨者業(yè)務的增長,我們打算分離出一個子系統(tǒng),但是成本太高,每次都需要從頭搭建一個子系統(tǒng),效率低下。這時我們就抽取除了一些通用技術,比如mesh、SOA、微服務等方式來隔離系統(tǒng),且對通用技術復用來快速搭建一個系統(tǒng)

          IAAS:比如訂單服務并發(fā)量高,單臺服務器已經無法滿足要求,這時我們需要多臺服務器,可能有windows的、linux、mac,想要快速部署就需要屏蔽OS,于是就有了VM、Docker、K8S等技術來屏蔽OS


          三、限界上下文


          限界上下文概念

          BC與業(yè)務的關系

          通過對業(yè)務的劃分,比如訂單系統(tǒng),訂單是一個子域;庫存是一個子域;

          其中商品再不同的子域中所表示的意義也不同,比如在訂單上下文中的商品表示商品的單價、折扣等等;而在庫存的上下文中商品表示商品的庫存量、成本、存放位置等。

          BC與技術的關系

          多個子域之間必須需要在應用層進行聚合,而聚合的過程中就引出了技術方案,比如訂單到庫存到支付,他們應該采用同步方式;這幾個子域調用通知都應該是異步,那么可能就需要消息中間件或其它技術方案


          限界上下文劃分規(guī)則

          一般來說,先考慮團隊規(guī)模,來決定最終需要劃分到多細粒度的BC,如果團隊規(guī)模過小而BC過細,則對后期的運維、部署、上線都會造成很大的負擔;

          在確定好粒度后,可以對語義相關性、功能相關性-業(yè)務方向、功能相關性-非業(yè)務方向進行劃分

          按照以上的規(guī)則劃分之后就得到了多個BC啦


          一個BC代表一個微服務嗎?

          概念:微服務一般是指將高度相關功能的一個開發(fā)部署單元,有自己的技術自治性、技術選型、彈性擴縮容、發(fā)布上下頻率等,說白了就是各自維護一個業(yè)務,然后多個業(yè)務組成一個系統(tǒng),多個業(yè)務之間各自管理

          關系:這里的BC其實就是一個領域或一個模塊或一個業(yè)務,如果兩個領域相關性很高,就可以包含多個BC,或者如果一個領域訪問量非常大,則需要部署在一個微服務中以提高性能


          四、領域驅動設計的四重邊界

          根據上圖所示,我們通過四重來進行架構設計:

          分而治之:DDD通過規(guī)劃四重邊界,把領域知識做了合理的固化和分層。業(yè)務有核心領域和支持域、業(yè)務域中又拆分成多個限界上下文(BC),一個BC中又根據領域知識核心與否進行分層,領域層中按照多個業(yè)務(子域)的強相關性進行聚合成一個子域


          【第一重邊界】確定項目的愿景與目標,確定問題空間,確定核心子領域、通用子領域(多個子領域可以復用)、支撐子領域(額外功能,如數據統(tǒng)計、導出報表)

          【第二重邊界】解決方案空間里的限界上下文就是一道進程隔離層面的物理邊界

          【第三重邊界】每個限界上下文內,使用分層架構劃分為:接口層、領域層、應用層、基礎設施層之間的最小隔離

          【第四重邊界】領域層里為了保證各個領域的完整性和一致性,引入聚合的設計作為隔離領域模型的最小單元


          五、整潔分層架構

          具體說明看圖中備注,總的來說就是通過實現與接口分離,讓domain層盡量獨立,而不耦合與任何模塊,這里面包含了領域模型的業(yè)務邏輯代碼,但不會依賴于具體技術實現,可以很方便更換基礎設施層,提供給第三方web調用service


          六、六邊形架構

          主動適配:指來?于UI、命令?等輸?型命令, controller就是?種端?,端?的具體實現就是應?邏

          輯?身。因此端?和具體實現都在應?系統(tǒng)的內部。

          被動適配:指訪問存儲設備,外部服務等。每種訪問就是?種端?,具體實現是各個具體的中間件。因

          此端?在整個應?系統(tǒng)的?部,具體實現在系統(tǒng)的外部。

          每?種輸?和輸出都是?個端?,每個端?都有具體的實現邏輯,因此整個應?系統(tǒng)的架構就是?些列

          的端?+適配邏輯組成,架構圖就是?個多邊形形狀。有?個端?需要根據應?系統(tǒng)的具體情況?定,

          只是六個端??較形象?得名為六邊形架構。

          特點:1. 外層依賴內層使得依賴更合理。端?就是接?,依賴接?編程。借此保證了應?和實現細節(jié)之

          間的隔離。2. 可測試更好


          七、洋蔥架構

          洋蔥架構針對六邊形架構更進?步把內層的業(yè)務邏輯分為了DDD概念的應?服務層、領域服務層和領域

          模型層。

          特點:

          (1)圍繞獨?的領域模型構建應?

          (2)內層定義接?,外層實現接?

          (3)依賴的?向指向圓?(注意:洋蔥架構提倡不破壞耦合?向的依賴都是合理的,外層可以依賴直接內層,也可以依賴更??的層)

          (4)所有的應?代碼可以獨?于基礎設施編譯和運?


          八、總結

          目前領域驅動設計是目前比較流行的一種架構設計,只需要按照領域驅動設計的四重邊界進行架構設計,就能夠很好的對各個領域解耦,對后期的業(yè)務垂直擴展、功能的水平擴展提供了良好的基礎。

          出處:https://blog.csdn.net/qq_32828253/article/details/110673205


          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構師(附各大廠中臺建設PPT)

          企業(yè)IT技術架構規(guī)劃方案

          論數字化轉型——轉什么,如何轉?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數字化轉型從業(yè)者必備!

          【中臺實踐】華為大數據中臺架構分享.pdf

          華為的數字化轉型方法論

          華為如何實施數字化轉型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數據解決方案(PPT)

          瀏覽 36
          點贊
          評論
          1收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          1收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  女人高嘲90分钟视频 | 丁香五月婷婷啪啪 | 操逼免费网址 | 亚洲美女网站 | 熟女 人妻 人蜜桃视频 |