精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

領域驅動設計詳解:是什么、為什么、怎么做?

開發 開發工具
什么是領域驅動設計?傳統分層架構在實際開發中存在哪些問題?業務開發人員如何設計并搭建自己的領域模型?阿里文娛技術專家戰獒將為大家一一解答,并分享文娛在領域驅動設計上的實踐。

[[335227]]

什么是領域驅動設計?傳統分層架構在實際開發中存在哪些問題?業務開發人員如何設計并搭建自己的領域模型?阿里文娛技術專家戰獒將為大家一一解答,并分享文娛在領域驅動設計上的實踐。

一 什么是領域驅動設計

領域驅動設計的概念是2004年Evic Evans在他的著作《Domain-Driven Design : Tackling Complexity in the Heart of Software》(中文譯名:領域驅動設計:軟件核心復雜性應對之道)中提出的,從領域驅動設計提出距今已經有15年的時間,為什么最近才開始在中國的互聯網圈大行其道?似乎一夜之間大家都在談論,那么領域驅動設計到底幫我們解決了什么問題?帶著這些疑問,一起來看下阿里巴巴文娛是如何實踐領域驅動設計的。

二 領域驅動設計大行其道的必然原因

軟件系統從來都不是憑空而來,而是以軟件的形式解決特定的問題。當我們面臨現實世界的復雜問題時,如何以軟件的形式落地?領域驅動設計是一套方法論,指導我們將復雜問題進行拆分、拆分出各個子系統間的關聯以及是如何運轉的,幫助我們解決大型的復雜系統在落地中遇到的問題。

Evic Evans在著作中將軟件系統的設計分為2個部分:戰略設計和戰術設計。在戰略設計層面提出了域、子域、限界上下文等重要概念;在戰術設計層面提出了實體、值對象、領域服務、領域事件、聚合、工廠、資源庫等重要概念。如圖1所示:

 

圖1 戰略設計與戰術設計

戰略設計部分指導我們如何拆分一個復雜的系統,戰術部分指導我們對于拆分出來的單個子系統如何進行落地,在落地過程中應該遵循哪些原則。

以大家熟知的電子商務系統舉例,早期的電商系統因為業務相對簡單,用戶量和團隊規模也較小,一個單體應用就可以搞定,隨著容量上升可以將單體應用進行橫向擴容,比如早期的淘寶就是這樣做的。拆分過程中我們可以把電商系統這個單體應用拆分成訂單子系統、庫存子系統、物流子系統、搜索推薦子系統等等,如圖2所示:

 

圖2 電商系統微服務劃分

領域驅動設計在戰略層面上的域、子域、限界上下文的劃分思想和微服務的劃分不謀而合。域對應一個問題空間,也就是上例中的電商系統;子域是把域這個大的問題空間拆分成若干個小的更容易解決的問題空間,也就是單體應用向微服務演進過程中劃分出來的各個子系統;限界上下文是解決方案空間,每個子域對應一個或多個解決方案空間。微服務的劃分是也是將一個大的問題拆分成若干個小的問題,每一個小的問題用一個或多個微服務來解決。

對于大多數開發同學來說都沒有機會接觸系統的劃分,這些工作一般是公司的技術領導層與架構師來做的,普通的開發同學日常工作中接觸到的只是某一個具體微服務或微服務中某一個模塊的落地,那是不是說領域驅動設計對于普通開發同學來說就沒有用了?當然不是這樣,領域驅動設計中的戰術設計部分就是指導我們如何落地一個系統才可以使系統具備高可擴展性、高可讀性。

所有的系統最終都要以代碼的形式落地,而落地的工作都是由普通的開發同學來做的,系統是否具備高可擴展性、高可讀性直接影響了整個團隊的效率。

三 傳統分層架構存在的問題

對于大多數開發同學來說,大部分時間都花在落地一個個微服務上,下面我們來看阿里文娛是如何結合領域驅動設計的思想將微服務進行戰術落地的。

目前筆者接觸過的微服務大多數都是分層架構并且在Service層與Manager層實現具體的業務邏輯,使用DO、DTO、BO、VO等進行數據傳輸,數據和行為基本完全隔離。這種分層結構圖3是《Java開發手冊》中的標準分層結構。

該規范中定義了各層的職責,其中最重要的兩層Service層和Manager層是這樣規范的(以下兩層解釋摘抄自《Java 開發手冊》):

Service層

相對具體的業務邏輯服務層。

Manager層

通用業務處理層,它有如下特征:

  • 對第三方平臺封裝的層,預處理返回結果及轉化異常信息。
  • 對Service層通用能力的下沉,如緩存方案、中間件通用處理。
  • 與DAO層交互,對多個DAO的組合復用。

 

圖3 傳統的分層結構

阿里文娛早期的項目分層也基本都采用這種架構形式。上面的分層并沒有問題,但是這種分層架構采用的是包的形式進行的層與層的隔離,需要每一位開發同學理解并且自覺遵守以上規范,但是在實際工作中我們發現很多同學對Service層和Manager層的區別并不是特別的清楚,即使清楚的同學大部分也并沒有完全遵守手冊中的規范,這種現象導致Manager層除了沉底一些通用能力以外和Service層并沒有什么本質區別。

在實際的業務代碼中Service層和Manager層都充斥了大量的第三方依賴,對系統的穩定性有很大的影響。每依賴一個第三方服務都要各種異常問題,這些異常處理的代碼往往會和業務代碼混在一起,當這種代碼多了以后會使代碼的可讀性非常差。

阿里文娛業務的復雜度提升很快,業務迭代速度也很快, Service層和Manager層代碼量迅速膨脹,業務邏輯變得越來越復雜。在這種業務場景下,大文娛引入了領域驅動設計并設計了一套完整的領域驅動模型評估與演進的解決方案來輔助開發同學將領域驅動設計的思想真正的落地。

四 文娛領域驅動設計實踐

領域驅動設計的關鍵在于識別業務的模型,而模型又是會隨著業務的發展而演進的,對于新的業務來說能效平臺提供了業務模型分析的功能,開發同學可以在能效平臺設計并搭建自己的領域模型,搭建出來后能效平臺可以評估領域模型設計的是否合理,如果模型設計合理則可以基于以上設計的模型符合領域模型規范的代碼。對于已有應用,能效平臺設計了一套領域注解并以SDK的形式提供出去:

  • 第一步:開發同學按照領域設計的原則對業務代碼進行分析并打上注解。
  • 第二步:能效平臺可自動掃描該項目并收集該項目中的領域模型。
  • 第三步:模型收集后,開發同學可以在能效平臺改進業務模型并重新按照領域模型的規范生成代碼。

完整流程如下圖所示:

 

圖4 領域模型的生命周期

1 模型采集

對于已有的準備重構的應用,我們設計了一套領域模型的注解,開發同學可以將注解加到對應的類、屬性、方法上。當系統是按數據模型落地而不是按領域模型的方式落地時,可以先找到系統的數據模型,然后在能效平臺對數據模型進行組織生成領域模型。

 

圖5 領域模型注解

2 模型搭建

對于新應用或者已經進行完模型采集的應用,開發同學可以在能效平臺進行模型的搭建和修改,如圖6所示。

 

圖6 領域模型

3 健康度評估

對于已經搭建完的模型能效平臺,根據領域驅動設計的規范創建了一套完整的校驗規則,模型搭建完成在生成腳手架之前會根據校驗規則進行打分,當打分通過時可以將模型生成腳手架。

 

圖7 模型校驗

4 腳手架生成

當模型搭建完畢并且校驗通過后可以將模型生成腳手架,其代碼結構是按照六邊形架構的標準生成的,六邊形架構也成為端口與適配器架構,該架構的思想是將內部核心的領域邏輯與外界依賴進行隔離,這里的依賴是指所有對其他微服務的依賴、http的依賴、數據庫依賴、緩存依賴、消息中間件依賴等等,所有的這些依賴都通過適配器進行轉換成應用可理解可識別的最小化信息。

在實際的項目中,每種依賴都要考慮各種異常情況并進行處理,而這些處理實際上并不數據領域邏輯,卻耦合到了業務代碼里,當這種依賴多了對系統的穩定性會產生很大的影響,傳統的分層架構雖然也會讓我們將自身的領域邏輯和依賴進行分離,在阿里巴巴規范手冊中提到所有的依賴都應該放到Manager層,但是這種規范是非常容易被打破的。六邊形架構從應用分層上讓我們更容易去遵守這樣的規范。

 

圖8 六邊形架構

根據六邊形架構的指導思想,在實際的應用分層中一般劃分為四層,分別是:

  • 用戶接口層:負責用戶展現相關的邏輯。
  • 應用層:負責對一個用例進行流程編排(將接口用例分成若干個步驟,但是不負責每步的具體實施)。
  • 領域層:負責實現核心的領域邏輯即業務邏輯(負責實現具體的業務邏輯)。
  • 基礎設施層:所有依賴的具體實現。

但是從應用架構的角度看,層級組織形式可以分為兩種:

傳統分層架構

如圖9左側,這種分層架構是Evic Evans在《Domain-Driven Design : Tackling Complexity in the Heart of Software》中提出的,其中用戶接口層、應用層、領域層可直接依賴基礎設施層,與圖3的傳統架構并無本質區別,因為所有層都直接依賴了基礎設施層。這種方式需要強制開發同學將所有的依賴進行下沉,隨著時間的推移這種規范非常容易被打破。

 

圖9 層依賴關系

依賴倒置的分層架構

如圖9右側,這種分層架構是依賴倒置的分層架構,特點是:

  • 基礎設計層可直接依賴其他三層,反之則不行。
  • 用戶接口層、應用層、領域層如果要使用基礎設施層中的能力,只能通過IOC的方式進行依賴注入,這也遵從了面向對象編程中的依賴倒置原則。

當開發同學要在以上三層中直接引用第三方依賴時,是找不到具體的類信息的,也就是不能import。同時這種方式對單元測試的規范也可以起到很大的作用,當我們編寫單元測試時可以為領域層注入一個測試運行時的依賴,這樣應用運行單元測試可以不依賴下游服務,在代碼層面上也更加規范。

五 總結

 

經典的三層或多層架構雖然是目前最普遍的架構,但是在隔離方面做得并不夠好。在業務架構選型時要結合自身業務特點,而不能千篇一律的選擇某一種業務架構,合適的業務架構可以延長項目的生命周期,降低項目的重構頻率,最終達到降低人力成本的目的。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-11-06 13:25:38

React Concu

2024-12-31 11:05:07

2022-05-27 20:53:42

數字化轉型數字化經營消費者

2023-07-29 22:27:44

2023-11-13 14:44:14

DDD開發Java

2017-06-16 16:22:41

機房墻面

2019-10-14 13:20:26

物聯網數據IOT

2017-10-25 09:50:51

Linux

2021-12-16 22:43:52

運營商手機號卡數據

2015-07-23 09:20:19

mmap

2018-01-08 14:18:14

代碼互聯網持續集成

2021-03-14 15:17:13

前端開發架構

2021-08-04 08:33:25

React服務端渲染

2018-02-07 00:00:00

數字化轉型

2025-02-11 09:51:52

2018-08-02 15:24:05

RPCJava微服務

2014-03-17 16:40:20

戴爾

2022-05-01 17:23:01

比特幣NFT數字資產

2025-11-03 16:30:44

2011-08-04 10:18:45

數據驅動編程
點贊
收藏

51CTO技術棧公眾號

色婷婷亚洲精品| 国产精品人妻一区二区三区| 欧美一区二区三区成人片在线| 色婷婷精品视频| 国产一区二区免费看| 亚洲美女喷白浆| 韩日视频在线观看| 国产人妻精品一区二区三| 欧美日韩在线观看视频小说| 好吊成人免视频| 岛国视频一区| 黄色一级视频免费| 久久丁香四色| 亚洲欧美日韩国产另类专区| 国产区亚洲区欧美区| 国产精品20p| 人成在线免费网站| 成人a免费在线看| 欧美成人第一页| 亚洲高清在线不卡| 精品国产99久久久久久| 欧美中文字幕一区二区| 欧美主播一区二区三区| 日韩精品欧美专区| 中国a一片一级一片| 狠狠色狠狠色综合婷婷tag| 色综合久久久久久久| 免费看av软件| 亚洲av无码乱码国产精品久久| 在线看片不卡| 日韩视频一区在线观看| 欧美日韩午夜爽爽| 亚洲成人一级片| 久久国产精品72免费观看| www.国产精品一二区| 天堂在线中文在线| 91网在线看| 成人综合在线视频| 456亚洲影院| 成人午夜福利一区二区| 成人av集中营| 亚洲少妇30p| 国产精品yjizz| 中文字幕一区二区在线视频| 手机在线电影一区| 日韩三级免费观看| 三上悠亚在线一区二区| 国内外激情在线| 日本一区二区三区四区在线视频| 国产精品亚洲自拍| 91视频综合网| 加勒比视频一区| 91福利在线导航| 最近看过的日韩成人| 丰满少妇一级片| 久久久久一区| 久久国产精品久久国产精品| 老头老太做爰xxx视频| **欧美日韩在线| 午夜视频一区二区三区| 日韩一区国产在线观看| 欧美女子与性| 久久精品国产秦先生| 久久久久久伊人| 日本爱爱爱视频| 国内精品久久久久久久影视简单| 亚洲欧美制服第一页| www激情五月| 国产精品1区在线| 黑人巨大精品欧美一区二区三区 | 337p日本欧洲亚洲大胆鲁鲁| 国内成人精品2018免费看| 国产做受69高潮| 免费看一级黄色| 精品午夜电影| 日韩国产欧美区| 在线播放免费视频| 综合激情久久| 欧洲av在线精品| 黄色片在线免费| 爱情岛论坛亚洲品质自拍视频网站| 国产亚洲精品中文字幕| 国产精品日韩一区二区| 91久久精品国产91性色69| 国产精品乱看| 欧美激情精品久久久久久| 欧美三级视频网站| 999国产精品| 欧美精品久久久久| 亚洲乱码国产乱码精品| 亚洲国产日韩在线| 欧美超级免费视 在线| 久久视频免费看| 国产精品99视频| 国产亚洲综合久久| 影音先锋人妻啪啪av资源网站| 国产亚洲高清在线观看| 精品精品欲导航| 欧美日韩久久婷婷| 国产精品迅雷| 亚洲成av人片观看| 一区二区在线播放视频| 国产一区二区久久久久| 亚洲精品国精品久久99热| 国产调教打屁股xxxx网站| 欧洲午夜精品| 色狠狠色噜噜噜综合网| 在线观看日本www| 三级精品视频| xxx成人少妇69| 欧美一级片免费在线观看| 99热国内精品永久免费观看| 欧美人交a欧美精品| 最新av电影网站| 欧美三级电影在线| 精品国产凹凸成av人网站| 特黄特色免费视频| 国产亚洲精品美女久久久久久久久久| 不卡av电影在线观看| 91嫩草|国产丨精品入口| 亚洲影视综合| 日韩免费观看在线观看| 亚洲永久精品一区| 久久综合综合久久综合| 精品视频一区在线| 蜜桃视频在线观看视频| 一区二区三区四区在线| 亚洲熟妇无码av在线播放| 9lporm自拍视频区在线| 欧美日韩国产麻豆| 一级片免费在线观看视频| 国产精品欧美日韩一区| 午夜精品国产精品大乳美女| 在线观看国产亚洲| 国产精品影视天天线| 国产高清精品一区二区| 麻豆传媒在线观看| 亚洲最新在线观看| 欧美国产亚洲一区| 国产成人精品一区二三区在线观看| 91国偷自产一区二区使用方法| 久久久久久久久久影视| 日韩成人一级| 国内精久久久久久久久久人| 国产成人精品a视频| 99re66热这里只有精品3直播| 欧美日韩最好看的视频| 在线观看黄色av| 在线视频一区二区三| 爱爱免费小视频| 日韩欧美自拍| 久久免费在线观看| 亚洲av无码专区在线| 亚洲欧美日韩小说| 国产资源中文字幕| 自拍视频亚洲| 97神马电影| 神马久久高清| 亚洲欧美日韩在线| www.久久com| 欧美日韩国产欧| 国产99在线|中文| 色综合888| 亚洲美女视频在线观看| 天天操夜夜操很很操| 午夜国产精品视频免费体验区| 欧美亚洲伦理www| 亚洲三级中文字幕| 亚洲欧美日韩系列| 女女调教被c哭捆绑喷水百合| 欧美成人中文| 国产精品二区二区三区| 黄色激情在线播放| 91精品免费观看| b站大片免费直播| 青青草精品视频| 好看的日韩精品视频在线| 欧美男男tv网站在线播放| 亚洲美女视频网站| 中文字幕一区二区三区免费看| 亚洲色大成网站www久久九九| 永久免费看片在线观看| 日韩欧美视频| 99久久一区三区四区免费| www视频在线观看免费| 精品久久香蕉国产线看观看gif| 日韩高清在线一区二区| 亚洲激情网站| 天天综合狠狠精品| 国模冰冰炮一区二区| 这里只有精品久久| 日韩欧美国产另类| 亚洲日本一区二区三区| 免费看毛片的网站| 欧美日韩p片| 欧洲亚洲一区二区| 午夜影视一区二区三区| 日韩精品一区二区三区在线播放| 欧美xxxx精品| 日韩一区欧美二区| 欧美日韩一区二区视频在线| 青青久久精品| 午夜精品久久久久久久99热| jizz亚洲| 亚洲精品videossex少妇| 中文字幕在线播出| 亚洲小说欧美激情另类| 伊人久久久久久久久| 日韩二区三区四区| 日韩国产一级片| 超碰成人免费| 欧美成人午夜剧场免费观看| 三级毛片在线免费看| 欧美一区二区视频免费观看| 久久国产美女视频| 久久综合九色综合欧美就去吻| 免费看的黄色大片| 亚洲精品91| 99久久久精品免费观看国产 | 国内在线免费高清视频| 午夜精品免费在线观看| 精品少妇一区二区三区密爱| 99国产精品国产精品毛片| 久久6免费视频| 夜间精品视频| 亚洲成人a**址| 欧美成人福利| 久久精品国产亚洲精品2020| 国产一区二区小视频| 色综合天天综合狠狠| 国产污视频在线观看| 91偷拍与自偷拍精品| 欧美成人精品欧美一级乱| 国内精品视频在线观看| 好吊色欧美一区二区三区| 日本在线视频一区二区三区| 欧美精品久久久久久久久| 日本在线观看www| 欧美一级电影网站| 一本一道精品欧美中文字幕| 亚洲免费毛片网站| 黄色av片三级三级三级免费看| 久久综合久久99| 亚洲av无码一区二区二三区| 99久久婷婷国产综合精品| 免费裸体美女网站| 亚洲一区久久| 欧美一级在线看| 先锋亚洲精品| 欧美精品色婷婷五月综合| 欧美激情欧美| 在线免费一区| 香蕉久久网站| 超碰在线免费观看97| 91精品综合久久久久久久久久久 | 99国产盗摄| 精品久久亚洲| 成人欧美一区二区三区视频| 亚洲国产一区二区三区网站| 99国内精品久久久久久久软件| 一区二区三区在线免费看| 国产精品国产亚洲精品看不卡15| 91精品入口| 国产偷久久久精品专区| 日本在线中文字幕一区二区三区| 日韩女优人人人人射在线视频| 欧美第一视频| 久久青草福利网站| 欧美办公室脚交xxxx| 国产不卡精品视男人的天堂| 26uuu亚洲电影在线观看| 久久国产精品久久久久| 欧美人体视频xxxxx| 伊人伊成久久人综合网站| 蜜臀av免费在线观看| 亚洲国产欧美一区| 免费a级毛片在线观看| 中文字幕亚洲一区| 影音先锋男人资源在线| 91干在线观看| 日韩av激情| 久久精品99久久久香蕉| 日韩三级免费| 国产成人一区二区三区小说| 亚洲国产一区二区久久| 99re在线国产| 蜜桃成人av| 久久久99国产精品免费| av毛片精品| 欧美日韩在线高清| 中文无码久久精品| 91猫先生在线| 一区二区日本视频| 欧美精品久久久久久久久久久| 国产一区导航| 欧美精品 - 色网| 91色九色蝌蚪| 国产乱国产乱老熟300| 国产精品麻豆欧美日韩ww| 国产又粗又猛又爽又黄av| 亚洲欧美日韩在线不卡| 色一情一乱一伦| 午夜国产不卡在线观看视频| 最新中文字幕免费| 亚洲精品一线二线三线无人区| 暖暖视频在线免费观看| 欧美成人免费视频| yy6080久久伦理一区二区| 国产精品9999久久久久仙踪林| 久久国产亚洲精品| 一女被多男玩喷潮视频| 国产美女精品在线| 国产手机在线观看| 精品成人在线视频| 精品国自产在线观看| 精品久久人人做人人爽| aⅴ在线视频男人的天堂| 午夜精品视频在线| 日本少妇精品亚洲第一区| 亚洲丰满在线| 欧美亚洲自偷自偷| 亚洲精品成人无码毛片| 亚洲欧美日韩国产中文在线| 国产九色91回来了| 日韩精品中文字幕在线观看| 四虎在线观看| 久久久久国产精品www| 国产午夜亚洲精品一级在线| 色综合久久久久久久久五月| 国产精品外国| 精品中文字幕在线播放| 亚洲精品大片www| 一二三区在线播放| 一区二区成人精品| 激情开心成人网| 欧美成熟毛茸茸复古| 精品盗摄女厕tp美女嘘嘘| 你真棒插曲来救救我在线观看| 国产一区二区三区av电影| 2014亚洲天堂| 欧美日韩国产系列| www.日韩高清| 久久综合免费视频| 亚洲资源在线| 亚洲国产精品综合| 美女网站视频久久| 在线播放第一页| 亚洲少妇最新在线视频| 国产毛片一区二区三区va在线 | av网站导航在线观看免费| 国产在线视频一区| 在线观看免费一区二区| 久久出品必属精品| 亚洲特黄一级片| www.黄色av| 97免费中文视频在线观看| 欧美人成在线观看ccc36| 亚洲美免无码中文字幕在线| 日韩成人精品在线观看| 亚洲AV无码国产成人久久| 91黄色小视频| 日韩大片在线永久免费观看网站| 国产日韩精品在线播放| 亚洲欧洲中文字幕| 性活交片大全免费看| 午夜视频在线观看一区二区三区| 日韩午夜影院| 国产欧美精品一区二区| 久久久久久久久国产一区| 先锋资源在线视频| 午夜精品在线视频一区| 色播色播色播色播色播在线| 国产精品video| 狠狠一区二区三区| 欧美日韩在线不卡视频| 欧美激情综合网| 国产手机精品视频| 97精品国产91久久久久久| 欧美日韩一区二区三区视频播放| 中文字幕久久av| 亚洲成a天堂v人片| 99热这里只有精品99| 久久免费视频在线观看| 欧美日韩色图| 中文在线字幕观看| 日本韩国精品在线| 福利视频在线| 国产欧美欧洲在线观看| 重囗味另类老妇506070| 中文字幕在线观看的网站| 亚洲五月六月丁香激情| 久久久久久久久亚洲精品| 国产一区二区丝袜| 99在线热播精品免费99热| 国产jizz18女人高潮| 亚洲国产精品久久精品怡红院| 羞羞视频在线观看不卡| 久久久综合香蕉尹人综合网| 国产在线播放一区二区三区| 黄色在线视频网址|