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

單體分層應用架構剖析

開發 架構
單體分層架構風格是分層思想在單體架構中的應用,其關注于技術視角的職責分層。同時,基于不同層變化速率的不同,在一定程度上控制變化在系統內的傳播,有助于提升系統的穩定性。但這種技術視角而非業務視角的關注點隔離,導致了問題域與工程實現之間的Gap,這種割裂會導致系統認知復雜度的提升。

分層單體架構風格是分層思想在單體架構中的應用,其關注于技術視角的職責分層。同時,基于不同層變化速率的不同,在一定程度上控制變化在系統內的傳播,有助于提升系統的穩定性。但這種技術視角而非業務視角的關注點隔離,導致了問題域與工程實現之間的Gap,這種割裂會導致系統認知復雜度的提升。

1、經典單體分層架構

1.1 四層單體架構風格

經典的四層單體分層架構如下圖所示,應用在邏輯上劃分為展現層、業務層、持久層及數據存儲層,每層的職責如下:

  • 展現層:負責給最終用戶展現信息,并接受用戶的輸入觸發系統的業務邏輯。用戶可以是使用系統的人,也可以是其他軟件系統。
  • 業務層:關注系統業務邏輯的實現
  • 持久層:負責數據的存取
  • 數據存儲層:底層的數據存儲設施

這種分層單體架構可能是大多數開發人員最早接觸、最為熟悉的應用架構風格,其特點是:

層間的依賴關系由上到下逐層向下直接依賴,每層都是關閉狀態,請求的數據流向從上到下,必須嚴格通過每個分層進行流轉,而不能進行穿透調用。

  • 關注點隔離:通過分層將系統的關注點進行垂直分配,每層只關注自身層邊界內的職責,層間職責相互獨立不存在交叉。比如業務層負責處理系統的核心業務邏輯,而持久層則關注于對數據的存取。
  • 除了關注點隔離這一維度,分層也在 “變化” 的維度進行隔離。每層的變化速率不同,由下級上逐層增加,展現層的變化速率最快,數據存儲層變化速率最低。通過嚴格層依賴關系約束,盡量降低低層變化對上層的影響。這個特點的上下文是分層之間依賴于抽象,而非依賴于具體。當實現發生變化而接口契約不變時,變更范圍框定在當前層。但,如果是接口契約的變更,則可能會直接影響到上游的依賴層。

這種分層架構風格具有明顯的優勢:

  • 分層模型比較簡單,理解和實現成本低
  • 開放人員接受度和熟悉程度高,認知和學習成本低

1.2 五層單體架構風格

四層架構面臨的問題是:

  • 層間數據效率問題: 由于層間調用關系的依賴約束,層間的數據流轉需要付出額外成本
  • 業務層服務能力的復用性:業務層中處于對等地位的組件或模塊之間存在共享服務的訴求

從復用性的角度考慮,如下所示的五層架構中,通過引入中間層解決復用問題。將共享服務從業務層沉淀到通用服務層,以提高復用性。其特點是:

  • 引入通用服務層提供通用服務,提高復用性
  • 通用服務層是開放層,允許調用鏈路穿透,業務層可以按需直接訪問更下層的持久層

相比于四層架構,五層分層架構的主要優勢是:通過中間層的引入一定程度解決系統的復用性問題。但從反向角度看,正是由于中間層的引入導致了如下問題:

  • 引入中間層降低了數據傳輸效率,提高了開發實現成本
  • 有造成系統混亂度提升的風險:由于通用服務層的開放性導致業務層可以穿透調用。但這種是否需要進行穿透的場景無法形成統一的判定原則,往往依賴于實現人員的個人經驗進行權衡,同一個業務場景由不同的開發人員實現可能會有不同的判定結果(在四層架構中如果放開層間調用約束也會存在該問題)。隨著業務需求迭代,系統的依賴關系一定會日趨增加,最終形成復雜的調用關系,也導致系統復雜性上升,增加團隊成員的認知成本。

2、單體分層架構的共性問題探討

當然,正是由于其極高的接受度,也造成了大家對分層的認知誤區,認為分層是必然的“默認選項” ,從而忽略了分層的本質。分層到底是為了解決什么問題?

分層本質上是處理復雜性的一種方式:將復雜性在不同級別進行抽象,通過分層進行職責隔離,以此降低認知成本。同時,通過分層形成的“屏障”,控制變化在系統間的傳播,提升系統穩定性。

不論是四層架構還是五層架構都是分層思想在單體應用架構風格下的實踐,這種分層模式存在的固有問題主要體現在以下幾個方面:

  • 分層對系統復雜度和效率的影響
  • 變化真的能完全隔離嗎?
  • 問題域與解決方案的隔離

2.1 分層對系統復雜度和效率的影響

如上文所述,分層架構中各層的變化速度不同。越往上變化越快,穩定性越低,越往下變化越慢,穩定性越高。比如,展現層的用戶展示邏輯可能頻繁變化,對應于不同的場景訴求展示數據及形式都可能不同。

如果劃分層次越多,層間依賴關系越嚴格,則系統的調用鏈路和依賴關系會更加清晰。但,請求及響應的鏈路越長,層間數據轉換有額外成本。即使引入各種數據轉換工具,比如MapStruct,實現起來依然會感覺非常繁瑣和重復。

如果劃分層次越多,層間依賴關系寬松,允許跨層調用(如下所示的從展現層調用持久層只是一個示意),則能在一定程度降低數據頻繁轉換的成本。但:

其一:如何判定是否要跨層調用很難形成統一的嚴格判定標準,只能進行粗粒度劃分。因此,在實現過程中會有不同的判定結果,系統的調用關系會隨著代碼規模增長而日趨復雜。當然,團隊可以加強代碼評審的粒度,每次評審基于是否穿透調用進行討論、判斷并達成一致。但實際經驗是,由于人為因素,靠嚴格的代碼評審并不能保證決策的一致性。

其二:如果允許跨層調用,則意味著 “模型” 的穿透,低層的模型會直接暴露在更上層,這與我們追求的組件內聚性和模型的封裝性存在沖突

注:層間的依賴約束是一種架構決策,可以考慮通過自動化單元測試機制進行保證,具體參考:

《 基于ArchUnit守護系統架構 》

《 輕量級的架構決策記錄機制 - ADR》

2.2 變化的隔離

我們對分層有一個普遍的、“先入為主” 的認知,分層能夠隔離變化。首先會想到的例子,比如,如果底層的數據庫發生了變更,又或者ORM框架發生了變更,那么,我們只需要修改DAO層的實現,而不需要更改上層的業務層代碼。

  • 你真的會替換數據庫嗎?你真的會替換ORM框架嗎?有可能,但概率非常低,大部分系統并不會發生這種場景。
  • 發生替換就真的能隔離嗎?如果你的層間不是依賴于抽象,而是依賴于具體,那么隔離也無從談起。
  • 即使層間依賴于抽象,變化就真的隔離了嗎?實現發生變化的直接結果就是依賴方需要引用新的實現,這種變化也同樣會影響到上層。只不過是這種變化可能交由IOC容器了

但,這個是變化隔離的全部嗎?

  • 如果是展現層需要增加一個新的字段,而當前數據庫模型中沒有?
  • 如果是數據庫中需要增加一個新的字段,而展現層和業務邏輯層不關心?
  • 如果是......

所以,引起系統變化的原因很多,場景各異,業務訴求亦不相同,分層對變化隔離程度也不相同:

分層可以控制變化在系統內的傳播,由于變化場景的多樣化,分層不能完全的隔離變化。

2.3 問題域與解決方案的割裂

重新思考下上文提到的分層單體架構的特點之一:關注點隔離,展現層、業務層、數據訪問層、存儲層等各層聚焦于自身的職責。這種關注點的本質是什么?

技術視角的隔離!!!

每層都是從技術視角將技術關注點進行隔離,而非業務領域視角。技術視角是研發友好的,作為開發人員,天然的可以理解和接受這種技術維度的統一語言:DAO層只負責處理數據相關邏輯,Controller層之服務處理Restful API相關,RPC層只處理與外部系統的跨進程調用等等。

而對于非常核心的業務概念,比如以訂單為例,在單體分層架構下需要回答這樣一個問題:“訂單組件” 在哪里?

在經典的分層單體架構風格中,典型的實現如下圖所示:

  • OrderConroller:Spring技術棧下的系統訪問的Rest接口
  • OrderService/OrderServiceImpl:訂單的核心業務邏輯實現服務,實現諸如下單、取消訂單等邏輯
  • OrderDAO/OrdeDAOImpl:訂單數據的存取

訂單組件并不是以一個單一的、內聚的事物存在,其組成元素OrderService以及其依賴的OrderDAO分散于不同的層,因此,這種模式下訂單組件只是邏輯性、概念性的存在。作為業務域的核心抽象,訂單組件沒有真實的、直觀的、內聚的反映在代碼實現中。我們在工程代碼庫中尋找“訂單組件”:

  • 首先,在工程頂層最先看到的是技術視角的Module(Maven Module):web、service 、dao
  • 然后,需要在各層導航才能一窺其全貌

在IDE的支持下,這種導航并不會很復雜。但問題的根本在于:認知成本的增加。

我們去了解系統,天然的是從業務域而非技術域出發,單體分層恰恰是從技術域而非業務域出發,這種不同導致業務域與實現間的割裂,增加了對系統的認知成本。

實現要反應抽象,組件化思維本質上一種模塊化思維,通過內聚性和封裝性,將問題空間進行拆分成子空間,分而治之。對外通過接口提供組件能力,屏蔽內部的復雜性。接口契約的大小粒度需要權衡,粒度越小,能力提供越約聚焦,理解和接入成本越低,但通用性越差。接口契約粒度越大,則通用性越強,但理解和接入復雜性越高。

將組件化思維應用于單體分層架構,引申出模塊化單體架構風格。應用架構按照問題域進行模塊化組織,而非基于技術關注點進行拆分。組件內部遵循內聚性原則,其內包含了實現組件能力所需要的各個元素及交互關系。組件之間通過統一的、合適粒度的接口契約進行交互,不直接依賴于組件的內部能力或模型。同時,組織良好的模塊化單體應用架構也是進行微服務拆分的重要保證。如果你無法在單體架構中進行優雅的模塊化組織,又何談合理的微服務拆分呢?

3、結語

單體分層架構風格是分層思想在單體架構中的應用,其關注于技術視角的職責分層。同時,基于不同層變化速率的不同,在一定程度上控制變化在系統內的傳播,有助于提升系統的穩定性。但這種技術視角而非業務視角的關注點隔離,導致了問題域與工程實現之間的Gap,這種割裂會導致系統認知復雜度的提升。將組件化思維應用于單體分層架構,模塊化單體技術視角的分層拉回至業務域視角的模塊化,一定程度上降低業務與工程實現間的隔離。良好的模塊化是單體走向微服務的重要基石,如果模塊化設計較差的系統,不僅會增加微服務拆分的成本,更為重要的是,會增加形成分布式單體的概率和風險。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-03-16 06:38:44

架構分層插件化

2023-08-02 08:51:46

服務架構分層架構

2023-02-27 16:24:17

架構開發數字化

2023-12-09 14:33:05

2021-03-26 07:47:18

單體架構程序

2023-01-05 08:12:11

分層應用代碼

2021-12-24 07:10:36

架構分層模塊化

2023-06-16 13:34:00

軟件架構模式

2024-02-05 08:11:30

架構模式單體

2022-12-21 16:13:31

微服務架構

2022-04-28 11:04:27

架構微服務技術

2024-11-19 08:10:00

2023-11-01 11:17:26

單體架構微服務架構

2015-09-22 09:17:19

2010-02-23 09:34:15

WCF重載

2024-01-19 11:57:42

2016-06-07 16:43:57

云計算混合云

2019-12-10 10:59:11

分層架構項目

2017-11-17 07:06:27

互聯網分層架構APP

2022-04-29 14:56:40

通話應用源碼剖析
點贊
收藏

51CTO技術棧公眾號

鲁片一区二区三区| 91av国产在线| 黄色激情在线观看| 亚洲天堂电影| 国产精品网站在线| 岛国一区二区三区高清视频| 精品美女久久久久| 日韩成人a**站| 欧美mv日韩mv国产网站app| 99精品免费在线观看| 乱人伦中文视频在线| 波多野结衣91| 国产日韩欧美夫妻视频在线观看| 久久久久久国产精品免费播放| 美女久久久久| 欧美成人女星排行榜| 能看的毛片网站| jizz一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 污污内射在线观看一区二区少妇 | 成人福利网站在线观看| 日韩精品人妻中文字幕| 天天做天天爱综合| 亚洲日本中文字幕| 秘密基地免费观看完整版中文 | 男人的天堂成人在线| 欧美成人午夜激情| 亚洲色图第四色| 老汉色老汉首页av亚洲| 欧美一级一级性生活免费录像| 无遮挡又爽又刺激的视频| 草美女在线观看| 亚洲男人的天堂在线aⅴ视频| 日本在线免费观看一区| 人妻少妇精品无码专区| 国产一区二区毛片| 国产欧美久久一区二区| 国产免费一级视频| 国产亚洲毛片在线| 91精品国产高清久久久久久| 1024手机在线视频| 欧美一区视频| 欧美成人精品三级在线观看| 国产大屁股喷水视频在线观看| 久草精品在线| 亚洲天堂成人在线| 成人免费毛片糖心| 亚洲69av| 国产亚洲精品久久久久动| 人妻少妇一区二区| 亚洲免费毛片| 亚洲无av在线中文字幕| 国产交换配乱淫视频免费| 免费观看不卡av| 亚洲欧美一区二区三区情侣bbw| 国产又粗又长又爽| 小嫩嫩12欧美| 亚洲欧美在线看| 人妻视频一区二区| jiujiure精品视频播放| 正在播放国产一区| 欧美色视频一区二区三区在线观看| 日韩一区欧美| 久久成年人视频| 黄色在线观看免费| 亚洲欧洲另类| 日本亚洲精品在线观看| 成人免费视频国产免费| 蜜臀av性久久久久蜜臀aⅴ| 成人免费淫片视频软件| 国产福利视频导航| av电影在线观看不卡| 免费试看一区| 一区二区三区视频在线观看视频| 自拍av一区二区三区| 日韩久久久久久久久久久久| 免费高潮视频95在线观看网站| 色婷婷亚洲婷婷| 国产三级三级看三级| 国产亚洲字幕| 亚洲精品av在线| 熟女少妇内射日韩亚洲| 91成人网在线观看| 91国内在线视频| 日本妇乱大交xxxxx| 激情综合一区二区三区| 国产精品区一区| 精品视频二区| 亚洲黄网站在线观看| www.中文字幕在线| 在线观看欧美| 亚洲女人天堂色在线7777| 国产在视频线精品视频| 亚洲私人影院| 欧美一级视频一区二区| 一级特黄特色的免费大片视频| 成人性色生活片| 亚洲精品9999| 偷拍自拍在线看| 9191久久久久久久久久久| 国产精品久久不卡| 亚洲高清影视| 国产97在线|亚洲| 亚洲奶汁xxxx哺乳期| 国产亚洲综合av| 日韩精品免费一区| 色天使综合视频| 亚洲高清一二三区| 国产高潮流白浆| 乱码第一页成人| 国产精品免费区二区三区观看| 天天在线视频色| 欧美午夜xxx| 亚洲av无一区二区三区久久| 免费一区二区| 97福利一区二区| 国产成人av免费看| 国产精品嫩草久久久久| 99精品人妻少妇一区二区| 日韩欧美中文字幕一区二区三区| 亚洲一区二区福利| 日韩av无码中文字幕| 国产美女主播视频一区| 亚洲国产欧美不卡在线观看 | 亚洲综合激情在线| 日本不卡视频在线播放| 欧美自拍偷拍一区二区| 亚洲精品高清在线观看| 中文字幕第100页| 国产99久久久国产精品成人免费| 欧美激情一区二区三区高清视频| 一区二区不卡视频在线观看| 国产色婷婷亚洲99精品小说| 91九色在线观看视频| 成人爽a毛片| 欧美日韩成人免费| 性一交一乱一伧老太| 中文字幕亚洲一区二区av在线| 欧美成人黄色网址| 精品久久影视| 日韩免费在线视频| 玖玖综合伊人| 日本黄色一区二区| 国精产品一区二区三区| 久久综合导航| 欧洲精品在线一区| 精品成人av| 一道本无吗dⅴd在线播放一区| 日日骚av一区二区| 久久久精品国产99久久精品芒果| 99精品免费在线观看| 深爱激情综合网| 国产成人精品在线播放| 成人高清免费在线播放| 欧美日韩国产精选| 一本一本久久a久久| 久久er精品视频| 在线观看成人免费| 日韩一区二区三区色| 久久久久久久爱| 天堂网在线观看视频| 精品久久香蕉国产线看观看亚洲| 日本丰满少妇裸体自慰| 狂野欧美一区| 中国一区二区三区| 免费欧美网站| 91国产在线精品| porn亚洲| 日韩美女主播在线视频一区二区三区| 欧美精品xxxxx| av在线综合网| 人妻丰满熟妇av无码区app| 色呦哟—国产精品| www.成人三级视频| 偷拍自拍在线看| 上原亚衣av一区二区三区| 国产视频一区二区三区四区五区| 亚洲一区在线观看网站| 泷泽萝拉在线播放| 紧缚奴在线一区二区三区| www.av91| 禁果av一区二区三区| 91免费人成网站在线观看18| 蜜桃传媒在线观看免费进入| 日韩经典中文字幕在线观看| 中文字字幕在线观看| 亚洲一卡二卡三卡四卡无卡久久 | 午夜激情av在线| 午夜国产欧美理论在线播放 | 四虎精品成人免费网站| 在线观看成人免费视频| 欧美成人免费看| 久久精品欧美日韩精品| 日本成人在线免费| 日本女优在线视频一区二区| 免费在线看黄色片| 色爱综合网欧美| 久久精品午夜一区二区福利| 9999精品视频| 奇米4444一区二区三区| 成人av免费| 日韩国产精品亚洲а∨天堂免| 91丨九色丨蝌蚪丨对白| 日韩欧美成人精品| 99精品久久久久| 国产精品私房写真福利视频| 欧美xxxxx精品| 国产精品888| 天天视频天天爽| 国产一级久久| 国产黄色激情视频| 婷婷六月综合| 日本成人黄色免费看| 米奇精品关键词| 91精品久久久久久蜜桃| 久久亚洲精品人成综合网| 91sa在线看| 成年网站在线视频网站| 米奇精品一区二区三区在线观看| 粉嫩一区二区三区国产精品| 日韩精品在线观看一区| 亚洲AV无码精品国产| 欧美蜜桃一区二区三区| 无码视频在线观看| 欧美性xxxx在线播放| 日本一区二区欧美| 亚洲午夜免费视频| 欧美人妻一区二区| 亚洲激情在线激情| 91精品国产高清一区二区三蜜臀| 中文字幕精品一区二区三区精品| 魔女鞋交玉足榨精调教| av成人动漫在线观看| 亚洲午夜久久久久久久久| 国产福利不卡视频| 久久精品一二三四| 国内精品伊人久久久久av一坑| 玖玖爱视频在线| 韩国av一区二区三区在线观看| 中文字幕 日韩 欧美| 久久精品国产99| 鲁一鲁一鲁一鲁一av| 麻豆国产欧美一区二区三区| 一本色道久久亚洲综合精品蜜桃| 日韩成人免费电影| 97超碰成人在线| 激情伊人五月天久久综合| 天天干天天玩天天操| 久久精品久久久精品美女| 天天操狠狠操夜夜操| 国产在线视频精品一区| 伊人成人免费视频| 高清国产一区二区三区| 性色av蜜臀av浪潮av老女人| av一本久道久久综合久久鬼色| 性囗交免费视频观看| 99精品视频免费在线观看| 成人网站免费观看| 国产片一区二区三区| 青青青视频在线免费观看| 亚洲欧美日韩国产综合| 久草视频中文在线| 午夜a成v人精品| 日韩三级一区二区| 欧美无砖砖区免费| 国产人妻精品一区二区三区| 精品奇米国产一区二区三区| 性xxxx18| 少妇高潮 亚洲精品| 视频在线这里都是精品| 国语对白做受69| 午夜日韩成人影院| 成人黄色av播放免费| 成人台湾亚洲精品一区二区| 欧美美乳视频网站在线观看| 精品久久网站| 日本aa在线观看| 亚洲欧美成人| 爱豆国产剧免费观看大全剧苏畅| 丁香啪啪综合成人亚洲小说| 好吊视频在线观看| 亚洲男同性视频| 天码人妻一区二区三区在线看| 欧美性生活久久| 精品国产无码AV| 亚洲精品综合久久中文字幕| 欧美96在线| 97在线精品国自产拍中文| 色香欲www7777综合网| 成人一区二区在线| 国产亚洲一卡2卡3卡4卡新区| 2021狠狠干| 久久国产日本精品| 深夜福利网站在线观看| 26uuu精品一区二区| 自拍偷拍你懂的| 怡红院av一区二区三区| 国产成人精品777777| 日韩视频中午一区| 国产福利电影在线| 国内精品久久久久伊人av| 久久福利在线| 久久精品综合一区| 亚洲欧美综合国产精品一区| 久久午夜夜伦鲁鲁一区二区| 国产91精品露脸国语对白| 丁香六月激情综合| 欧美午夜宅男影院在线观看| 国产精品自拍电影| 精品香蕉在线观看视频一| 18+视频在线观看| 国产精品久久一区主播| 鲁大师精品99久久久| 可以免费看的黄色网址| 老司机精品视频导航| 精品人妻少妇嫩草av无码| 亚洲欧美电影院| 伊人精品在线视频| 亚洲色图美腿丝袜| 多野结衣av一区| 99久久精品免费看国产四区| 日本不卡电影| 麻豆传传媒久久久爱| 99久久精品国产毛片| 四虎免费在线视频| 91精品视频网| 久久久久久国产精品免费无遮挡| 国产成人拍精品视频午夜网站| 欧美人妖视频| 青草青青在线视频| 高清不卡一区二区在线| 老女人性淫交视频| 欧美一区二区三区精品| 日本欧美在线视频免费观看| 国产精品久久久久久久久久免费| 影视先锋久久| 久草精品在线播放| 久久综合狠狠综合久久综合88| 日韩精品一区二区三区国语自制| 欧美mv和日韩mv国产网站| 在线观看电影av| 96久久精品| 欧美午夜一区| 日本美女视频网站| 亚洲午夜国产一区99re久久| www香蕉视频| 久久久久九九九九| 极品束缚调教一区二区网站| 久久这里只有精品23| 成人一道本在线| 福利一区二区三区四区| 亚洲国产另类 国产精品国产免费| 51漫画成人app入口| 精品国产乱码久久久久久久软件| 亚洲精品极品| 野外性满足hd| 欧美视频你懂的| 黄网站免费在线观看| 成人黄在线观看| 欧美+亚洲+精品+三区| 一级黄色免费视频| 欧美体内谢she精2性欧美| 裸体xxxx视频在线| 国产欧美婷婷中文| 午夜精品亚洲| 亚洲天堂成人av| 欧美亚洲国产怡红院影院| 久草资源在线| 国产精品国模大尺度私拍| 亚洲影院在线| 日本成人免费在线观看| 欧美一区二区三区四区在线观看 | 亚洲国产成人精品视频| 十九岁完整版在线观看好看云免费| 青青草精品毛片| 性欧美69xoxoxoxo| 丝袜熟女一区二区三区| 欧日韩精品视频| 直接在线观看的三级网址| 久久99久久99精品蜜柚传媒| 奇米四色…亚洲| 久久黄色免费视频| 亚洲图片制服诱惑| 亚洲一二av| www.涩涩涩| 亚洲成人av电影| 尤物网在线观看| 韩国成人一区| 国内成人精品2018免费看| 日韩伦理在线视频| 波霸ol色综合久久| 欧美一级一片| www.51色.com| 欧美日韩午夜剧场| h片在线播放| 日韩精彩视频| 成人av电影免费观看| 国产一区二区小视频| 青草成人免费视频| 欧美日韩精品一本二本三本 |