日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一篇帶你了解DDD四層微服務架構

來源: 責編: 時間:2024-05-21 17:34:29 311觀看
導讀一、微服務搭建思路大家看到的這張架構圖并不是空穴來潮,它是通過不斷演變出來的,我們要從DDD四層架構、微服務架構兩個維度去融合理解。這里的DDD四層架構適用于單個服務的工程架構(如圖中的左下部分),就是單體應用的DDD

0R028資訊網——每日最新資訊28at.com

一、微服務搭建思路

0R028資訊網——每日最新資訊28at.com

大家看到的這張架構圖并不是空穴來潮,它是通過不斷演變出來的,我們要從DDD四層架構、微服務架構兩個維度去融合理解。0R028資訊網——每日最新資訊28at.com

這里的DDD四層架構適用于單個服務的工程架構(如圖中的左下部分),就是單體應用的DDD四層架構的包劃分方式。0R028資訊網——每日最新資訊28at.com

而微服務架構,則是從整體去看,整合多個單體應用,它們之間通過應用SDK工程進行RPC通訊。0R028資訊網——每日最新資訊28at.com

二、微服務架構下的應用SDK

這個工程比較好理解,類似于我們傳統的理解的RPC包,或者叫API包,在Maven工程里,一般定義為一個子Module,里面主要定義的是Feign接口(如service.XxxFeignService),DTO對象(contract.dto.XxxRequest/XxxResponse)等等,此外還可以對FeignService返回的數據進行清洗與簡單通用的封裝(如util.XxxUtil),也就是說它還能封裝簡單的業務邏輯。0R028資訊網——每日最新資訊28at.com

但需要特別注意:應用SDK要往一個大尺度獨立的聚合工程的方向去搭建,它里面的頂層包要按內部業務系統的維度去隔離,并且它和業務系統不是一對一的關系。0R028資訊網——每日最新資訊28at.com

為什么要這樣設計?我講個例子你就明白了。0R028資訊網——每日最新資訊28at.com

我們公司的業務系統在頂層劃分為SaaS應用和PaaS應用,那么PaaS應用對應的應用SDK可以命名為PaaSSdk,在PaaSSdk工程里,包括了消息中心、ChatAI、應用市場等PaaS應用的外部接口封裝與簡單業務邏輯封裝。0R028資訊網——每日最新資訊28at.com

這樣做的好處顯而易見——SaaS應用需要用到PaaS應用的接口時,只需要引入PaaSSdk即可,原則上這個內部Sdk與我們平時引入的外部Jar包沒什么區別,可能只是網關和鑒權體系不一樣罷了。0R028資訊網——每日最新資訊28at.com

而且,簡單的業務系統就用一個module就好了,沒必要再拆分多個module,要知道,每引入多一個東西就有更多的不確定性。0R028資訊網——每日最新資訊28at.com

所以你也就能理解,為什么這里的應用Sdk與業務系統不是一對一的關系,如果是一對一,業務系統勢必要引入大量的Jar包,這在維護成本上是個災難。試想一下,如果要用到阿里云OSS的Jar包時,你會引入大量POM嗎?0R028資訊網——每日最新資訊28at.com

三、DDD四層架構下的業務工程

DDD建模與落地的這幾年,收獲了不少好評,也著實為業務成功做出了貢獻,優化了大半年,如今終于可以跟大家正式見面了。0R028資訊網——每日最新資訊28at.com

0R028資訊網——每日最新資訊28at.com

先談架構思想:

  • 經典DDD四層架構:作為主要骨架,其他優秀架構思想作指導
  • 整潔架構思想:應用到DDD領域層與基礎設施層,接口與實現拆到不同層,把技術代碼與業務代碼分離
  • 菱形架構思想:內部以領域層的領域模型為核心,向南北兩個方向發散
  • D3boot基礎框架:作為基礎設施,提供基礎CRUD接口、BOM依賴等基礎封裝,應用在各層,簡化鏈接,是快速搭建應用SDK、業務系統的粘合劑

DDD四層架構說明:

  • 接入層:對外提供的系統入口/接口,如放Controller類,并按端劃分(這里的client包寫移動端接口,admin包寫管理端接口,open包寫開放接口)
  • 應用層:跨聚合的服務編排service.XxxAppService、跨聚合領域事件監聽event.XxxListener,實體工廠factory.XxxFactory
  • 領域層:定義核心業務規則,與具體技術無關,不依賴其他各層;服務內按領域聚合劃分,外部聚合external.xxx按限界上下文(微服務)劃分;model定義充血模型、值對象,repository定義倉庫接口,service定義聚合內的領域服務,event定義聚合內的領域事件監聽器;領域契約contract包含:API層特殊出入參dto.XxxRequest/dto.XxxResponse、數據查詢參數param.XxxParam、領域事件event.XxxEvent
  • 基礎設施層:具體技術相關的代碼/框架、倉庫層實現repository.impl.XxxRepositoryImpl,包括數據聚合實現(fill方法);external放外部服務實現,做接口防腐

四、集成D3boot基礎框架

領導讓你搭個業務系統,如果什么都從零開始的話,項目周期就太長了。我們在搭建系統的過程中,如果有這么一個框架,能夠快速解決CRUD、工程結構劃分等等問題就好了。0R028資訊網——每日最新資訊28at.com

D3boot基礎框架的出現,正是為了解決這個問題。一般SpringBoot只能集成Spring體系內的技術棧,但作為心態更開放的我們,不應把目光聚焦在Spring體系內,每家企業都應該有自己的基礎框架。0R028資訊網——每日最新資訊28at.com

D3boot,意為DDD工程快速啟動,其中融入了DDD領域驅動的架構思想,并且能處處體現充血模型帶來的CRUD上的便利,還支持SaaS應用的搭建(租戶隔離)。D3boot框架旨在快速搭建SaaS業務系統,減少繁瑣的CRUD定義,減少不必要的xml代碼書寫。0R028資訊網——每日最新資訊28at.com

充血模型的思想體現在對Model的繼承,即可實現你想要的CRUD;而通過領域工廠(Factory的build、convert、fill等方式),又可以利用貧血模型思想的優勢,對復雜的對象進行構建、轉換、填充,彌補了充血模型的不足。0R028資訊網——每日最新資訊28at.com

目前我已使用這套輕量級微服務基礎框架,在公司里的健康管理平臺、消息中臺、工單中臺、社交中臺、ChatAI等業務系統應用了起來,使用感受一個字:舒服。0R028資訊網——每日最新資訊28at.com

而作為基礎框架,考慮的更多是不同框架集成的問題、功能邊界問題,接下來我給大家一一介紹。0R028資訊網——每日最新資訊28at.com

以下是D3boot的結構:0R028資訊網——每日最新資訊28at.com

0R028資訊網——每日最新資訊28at.com

0R028資訊網——每日最新資訊28at.com

0R028資訊網——每日最新資訊28at.com

1.base:基礎組件

可擴展的基礎組件,下面包括多個子模塊,包括:0R028資訊網——每日最新資訊28at.com

base-core:基礎核心組件:0R028資訊網——每日最新資訊28at.com

定義了基礎核心上下文(如SpringContext、ThreadContext、BaseContext)、核心契約(如R對象、Page對象、抽象領域事件、業務異常、統一狀態碼等)、核心工具類(如Bean轉換工具、Json轉換工具、業務斷言工具等)。0R028資訊網——每日最新資訊28at.com

base-data:基礎數據組件:0R028資訊網——每日最新資訊28at.com

定義了基礎模型(支持CRUD的充血模型)、基礎倉庫及MybatisPlus的倉庫實現、數據類型處理器等,支持通過@TenantId注解PO類租戶字段來隔離租戶數據等。用到數據庫的工程需要依賴此包。0R028資訊網——每日最新資訊28at.com

base-mq:基礎MQ組件:0R028資訊網——每日最新資訊28at.com

目前集成了Kafka消息隊列,可快速通過注解方式實現MQ消費。0R028資訊網——每日最新資訊28at.com

base-kit:基礎工具箱:0R028資訊網——每日最新資訊28at.com

工具類,底下按不同的能力又細分為緩存類、事件類、語言類、線程類、WEB類工具。0R028資訊網——每日最新資訊28at.com

base-monitor:基礎監控組件:0R028資訊網——每日最新資訊28at.com

集成HealthCheck接口、啟動打印代碼版本功能、日志告警功能(能把log.error的日志告警到企微機器人/釘釘機器人)。0R028資訊網——每日最新資訊28at.com

base-web:基礎WEB組件:0R028資訊網——每日最新資訊28at.com

定義了CRUD控制器基類CRUDController、按端劃分的模型控制器接口ModelController、全局異常增強、全局R對象包裝、全局Feign異常降級、各類WEB攔截器、基礎接口認證功能等。WEB工程需要依賴此包。0R028資訊網——每日最新資訊28at.com

2.base-bom:基礎依賴組件

Maven的BOM(Bill of Materials)機制是Maven項目中的一個重要概念,它用于管理項目的依賴關系和版本控制。BOM機制可以幫助開發人員快速構建和維護項目,并且可以確保項目的穩定性和可靠性。0R028資訊網——每日最新資訊28at.com

Spring有自己的bom文件,如spring-boot-dependencies,里面定義了構建SpringBoot工程所需要的依賴。0R028資訊網——每日最新資訊28at.com

參考Spring的方式,我們把第三方的依賴統一在base-bom組件里進行管理,這樣一來,業務工程只需要引入對應的dependency即可(包括定義D3boot框架里的組件版本),不需要再在業務系統過多地指定用哪個版本,達到版本統一的效果。0R028資訊網——每日最新資訊28at.com

3.base-contract-parent:業務Contract父工程組件

作為應用SDK工程的父POM,快速搭建應用SDK。0R028資訊網——每日最新資訊28at.com

4.base-parent:業務父工程組件

作為業務工程的父POM,快速搭建業務系統。0R028資訊網——每日最新資訊28at.com

5.ddd-demo:DDDDemo工程

基于D3boot框架搭建的DDD四層架構風格的業務工程,寫得比較粗糙,具體參考架構圖的實現為準。0R028資訊網——每日最新資訊28at.com

五、寫在最后

我一直認為,基礎框架不能寫得太重,公司的公共組件不應放在基礎框架工程內實現,而是另外定制。在基礎框架的開發過程中,我不斷汲取前輩的優秀代碼經驗,并融入自己的代碼特色,提煉高復用性代碼,并對中間件進行淺封裝。0R028資訊網——每日最新資訊28at.com

此外,本著技術開放的心態,這套基礎框架決定走開源路線,大家可以下載Deploy到自己的私倉使用,基于自己公司的業務進一步定制自己的基礎組件。0R028資訊網——每日最新資訊28at.com

Gitee源碼地址:https://gitee.com/jensvn/d3boot(例行賒Star)0R028資訊網——每日最新資訊28at.com

D3boot基礎框架具體的使用方式見源碼的README.md文件,這里不再贅述。0R028資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-89719-0.html一篇帶你了解DDD四層微服務架構

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python Selenium:網頁自動化的利器

下一篇: 京東面試:如何進行JVM調優?

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲高清资源| 国产精品影视天天线| 欧美在线视频一区| 久久久免费精品视频| 麻豆成人在线播放| 欧美日韩蜜桃| 国产日韩一区在线| 亚洲国产日韩一区| 一区二区三区四区精品| 欧美影院久久久| 欧美jjzz| 国产精品久久毛片a| 国内精品久久久久国产盗摄免费观看完整版| 韩国精品一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆 | 99精品热视频只有精品10| 亚洲欧美日韩视频二区| 久久免费精品日本久久中文字幕| 欧美日本免费| 国产一级一区二区| 99re66热这里只有精品3直播| 午夜在线一区| 欧美黄色成人网| 国产酒店精品激情| 亚洲电影激情视频网站| 亚洲综合视频网| 免费亚洲婷婷| 国产欧美1区2区3区| 亚洲日本va在线观看| 欧美一进一出视频| 欧美精品一区二区久久婷婷| 国产亚洲精品综合一区91| 亚洲另类自拍| 久久久精品欧美丰满| 欧美日韩免费区域视频在线观看| 国产一区二区福利| 99re这里只有精品6| 久久九九精品| 国产精品mv在线观看| 在线播放精品| 性亚洲最疯狂xxxx高清| 欧美日韩天堂| 亚洲国产导航| 久久成人这里只有精品| 欧美性猛交xxxx乱大交退制版| 亚洲电影在线| 久久精品一本久久99精品| 国产精品久久久91| 妖精视频成人观看www| 久久香蕉国产线看观看网| 国产精品久久久久久五月尺| 亚洲免费成人av| 老司机精品导航| 国产精品男人爽免费视频1| 亚洲欧洲在线免费| 久久婷婷国产麻豆91天堂| 国产精品视频精品视频| 在线视频精品一区| 欧美激情一区二区在线| 亚洲国产精品传媒在线观看 | 99re6热只有精品免费观看| 久久一区国产| 国产自产高清不卡| 欧美一区二区三区啪啪| 国产精品丝袜白浆摸在线| 亚洲天堂成人在线视频| 欧美日韩国产精品专区| 亚洲日本一区二区| 欧美凹凸一区二区三区视频| 欲香欲色天天天综合和网| 久久国产日韩| 国产一区二区三区四区hd| 羞羞漫画18久久大片| 国产精品丝袜久久久久久app| 亚洲性感激情| 国产精品国产自产拍高清av王其| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产日韩欧美成人| 亚洲欧美精品一区| 国产精品捆绑调教| 亚洲一区二区三区免费视频| 欧美视频免费在线观看| 一区二区三区色| 欧美日韩一区二区精品| 一本综合精品| 欧美性久久久| 亚洲视频电影在线| 国产精品黄视频| 欧美一级在线播放| 国产一区视频在线看| 久久久亚洲综合| 亚洲成人在线网| 欧美福利电影网| 日韩视频一区二区三区| 欧美午夜视频在线| 午夜欧美电影在线观看| 国产一级揄自揄精品视频| 久久久综合香蕉尹人综合网| 在线欧美日韩国产| 欧美精品电影在线| 中文有码久久| 国产精品亚洲综合色区韩国| 欧美一区二区三区久久精品茉莉花| 国产日韩视频| 久久综合狠狠综合久久激情| 亚洲欧洲一区二区在线播放| 一区二区亚洲欧洲国产日韩| 久久久久久久久久久成人| 永久域名在线精品| 欧美精品国产精品| 亚洲综合国产精品| 韩国av一区二区三区四区| 免费亚洲一区二区| 一区二区欧美视频| 国产日韩视频| 欧美成人午夜77777| 亚洲午夜精品久久久久久app| 国产日韩欧美日韩大片| 看欧美日韩国产| 一本久久a久久精品亚洲| 国产日韩高清一区二区三区在线| 另类春色校园亚洲| 一区二区三区福利| 国产亚洲成av人片在线观看桃| 蜜桃av一区二区在线观看| 99视频在线观看一区三区| 国产日韩成人精品| 欧美成人国产va精品日本一级| 中国av一区| 狠狠综合久久av一区二区小说 | 久久亚洲精品一区| 一区二区三区 在线观看视| 国产视频精品免费播放| 欧美国产91| 午夜精品久久久久久99热软件| 伊人色综合久久天天五月婷| 欧美日韩直播| 久久久国产视频91| 99视频一区| 怡红院精品视频| 国产精品www色诱视频| 久久婷婷久久| 亚洲一区久久| 亚洲国内在线| 国产日本欧美一区二区三区在线| 欧美成人免费小视频| 久久经典综合| 亚洲私人影院在线观看| 一区免费在线| 国产精品素人视频| 欧美精品福利视频| 久久精品亚洲一区| 一区二区免费在线观看| 激情综合色综合久久| 国产精品伦一区| 欧美福利视频网站| 久久精品国产精品亚洲精品| 一区二区三区产品免费精品久久75| 国产日韩综合一区二区性色av| 欧美另类久久久品| 久久午夜电影网| 亚洲欧美综合精品久久成人| 亚洲精品一区二区三区福利| 国产尤物精品| 国产精品嫩草久久久久| 欧美精品一区二区高清在线观看| 久久精品毛片| 亚洲欧美资源在线| 99视频精品| 亚洲人成网站在线观看播放| 国产综合色精品一区二区三区| 国产精品久久久久久福利一牛影视| 欧美高清在线一区二区| 久久久中精品2020中文| 欧美一区日本一区韩国一区| 亚洲一区二区免费在线| 日韩一区二区久久| 91久久中文| 亚洲大片av| 精品99一区二区| 国产午夜精品视频免费不卡69堂| 欧美日韩亚洲91| 免费亚洲电影在线观看| 另类专区欧美制服同性| 久久精品一本| 久久精彩视频| 久久精品30| 久久国产免费| 久久精品一区二区三区四区| 久久成人亚洲| 亚洲欧美日韩一区二区三区在线观看 | 日韩视频一区二区在线观看| 亚洲激情一区二区| 1024欧美极品| 在线看一区二区| 在线观看视频日韩| 激情久久久久久久久久久久久久久久| 国产婷婷一区二区| 国产午夜精品全部视频播放| 国产视频丨精品|在线观看| 国产精品一区在线播放| 国产精品亚洲欧美| 国产美女在线精品免费观看| 国产精品一级久久久|