日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

一、專業(yè)術(shù)語

各種服務(wù)

IAAS:基礎(chǔ)設(shè)施服務(wù),Infrastructure-as-a-service

PAAS:平臺服務(wù),Platform-as-a-service

SAAS:軟件服務(wù),Software-as-a-service

二、架構(gòu)演變

從圖中已經(jīng)可以很容易看出架構(gòu)的演進(jìn)過程,通過對三個層的舉例來進(jìn)行說明:

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

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

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

三、限界上下文

限界上下文概念

BC與業(yè)務(wù)的關(guān)系

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

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

BC與技術(shù)的關(guān)系

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

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

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

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

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

一個BC代表一個微服務(wù)嗎?

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

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

四、領(lǐng)域驅(qū)動設(shè)計的四重邊界

根據(jù)上圖所示,我們通過 四重來進(jìn)行架構(gòu)設(shè)計:

分而治之:DDD通過規(guī)劃四重邊界,把領(lǐng)域知識做了合理的固化和分層。業(yè)務(wù)有核心領(lǐng)域和支持域、業(yè)務(wù)域中又拆分成多個限界上下文(BC),一個BC中又根據(jù)領(lǐng)域知識核心與否進(jìn)行分層,領(lǐng)域?qū)又邪凑斩鄠€業(yè)務(wù)(子域)的強(qiáng)相關(guān)性進(jìn)行聚合成一個子域。

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

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

【第三重邊界】每個限界上下文內(nèi),使用分層架構(gòu)劃分為:接口層、領(lǐng)域?qū)?、?yīng)用層、基礎(chǔ)設(shè)施層之間的最小隔離

【第四重邊界】領(lǐng)域?qū)永餅榱吮WC各個領(lǐng)域的完整性和一致性,引入聚合的設(shè)計作為隔離領(lǐng)域模型的最小單元

五、整潔分層架構(gòu)

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

六、六邊形架構(gòu)

主動適配:指來?于UI、命令?等輸?型命令, controller就是?種端?,端?的具體實現(xiàn)就是應(yīng)?邏

輯?身。因此端?和具體實現(xiàn)都在應(yīng)?系統(tǒng)的內(nèi)部。

被動適配:指訪問存儲設(shè)備,外部服務(wù)等。每種訪問就是?種端?,具體實現(xiàn)是各個具體的中間件。因 此 端?在整個應(yīng)?系統(tǒng)的?部,具體實現(xiàn)在系統(tǒng)的外部。

每?種輸?和輸出都是?個端?,每個端?都有具體的實現(xiàn)邏輯,因此整個應(yīng)?系統(tǒng)的架構(gòu)就是?些列 的端?+適配邏輯組成,架構(gòu)圖就是?個多邊形形狀。 有?個端?需要根據(jù)應(yīng)?系統(tǒng)的具體情況?定, 只是六個端??較形象?得名為六邊形架構(gòu)。

特點:

1. 外層依賴內(nèi)層使得依賴更合理。端?就是接?,依賴接?編程。借此保證了應(yīng)?和實現(xiàn)細(xì)節(jié)之 間的隔離。

2. 可測試更好

七、洋蔥架構(gòu)

洋蔥架構(gòu)針對六邊形架構(gòu)更進(jìn)?步把內(nèi)層的業(yè)務(wù)邏輯分為了DDD概念的應(yīng)?服務(wù)層、領(lǐng)域服務(wù)層和領(lǐng)域 模型層。

特點:

(1)圍繞獨?的領(lǐng)域模型構(gòu)建應(yīng)?

(2)內(nèi)層定義接?,外層實現(xiàn)接?

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

(4)所有的應(yīng)?代碼可以獨?于基礎(chǔ)設(shè)施編譯和運(yùn)?

八、總結(jié)

目前領(lǐng)域驅(qū)動設(shè)計是目前比較流行的一種架構(gòu)設(shè)計,只需要按照領(lǐng)域驅(qū)動設(shè)計的四重邊界進(jìn)行架構(gòu)設(shè)計,就能夠很好的對各個領(lǐng)域解耦,對后期的業(yè)務(wù)垂直擴(kuò)展、功能的水平擴(kuò)展提供了良好的基礎(chǔ)。

分享到:
標(biāo)簽:架構(gòu)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定