成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于架構設計的易變性,應該如何理解呢?

開發 架構
通常情況下,我們的架構設計圖大概率會如下圖這個樣子了,首先聲明一點,這其實并沒有什么不妥的,這也是很典型的分層設計啦~

[[427981]]

本文轉載自微信公眾號「架構精進之路」,作者架構精進之路。轉載本文請聯系架構精進之路公眾號。

hello,大家好,我是張張,「架構精進之路」公號作者。

一、架構設計分層

通常情況下,我們的架構設計圖大概率會如下圖這個樣子了,首先聲明一點,這其實并沒有什么不妥的,這也是很典型的分層設計啦~

關于各個分層的具體描述,就簡單的來聊聊吧。

  • Client層

這個比較簡單,就不多說了。

  • Business Logic

業務邏輯這層分成 Manager 和 Engine 層,Manager 負責管理流程類的易變性,Engine 負責某個活動節點本身的易變性。

什么是流程易變性呢?簡單理解,就是工作流嘛。

下面的兩個流程是完全相同的,只是在第二步使用的活動不一樣,如果 B 和 D 干的是同一件事情,那么 B 和 D 應該被封裝進同一個 Engine 中。

當然,如果 B 和 D 功能不一樣,那這兩個流程就不一樣了,另論。

  • Resource Access

這一層是資源訪問層,負責一些存儲資源的封裝,也就是說公司內的基礎設施要變化的時候,不應該影響到上層的業務,這種在 DDD 社區也有 Repo Pattern 之類的,比較好理解。

  • Utilities

那些紫色的組件,一般是一些大家公用的非功能性 SDK,也比較好理解。

架構圖里的模塊大多是服務:

這樣的分層每一次都是在解決 Who、What、How、Where 這四個問題:

從上往下,易變性是逐漸降低的,這個我們可以理解,公司里最常修改的都是上面的一些業務邏輯,底層的基礎設施幾年變一次就不錯了。

自上而下的重用性是逐漸增加的,Manager 經常做變更、重構、完全重寫,都是挺正常的。

二、架構組合設計方案

  • 開放架構

任何組件都可以調用任何其它組件,而不必考慮組件所在的層。可以向上向下調用。

開發架構有很大的靈活性,不過顯然會導致層與層之間互相耦合,層內的橫向調用也會導致層內的相互耦合,這樣的項目是沒法維護的。

作者認為產生橫向調用是因為架構按照功能分解的惡果之一。

  • 封閉架構

封閉架構禁止層內的橫向調用,并且禁止下層調用上層系統。

這樣才能發揮分層的優勢,將層與層之間解耦。

封閉架構只允許一層的組件調用相鄰較低層中的組件,下層的組件封裝更下層的邏輯。

半封閉半開放架構

基礎設施的關鍵部分,有時互相調用是難以避免的。因為基礎設施要考慮性能問題,必須要進行最大優化,而有時向下轉換會導致性能問題。

但大多系統不需要半開半閉,只要封閉就可以了。

放寬一點封閉架構的規則

因為封閉架構的要求太苛刻,實際開發中確實會遇到問題,在下面這些情況下也可以酌情放寬:

調用 utilities

按業務邏輯訪問資源訪問,即 manager 層直接調用 resource access 層

manager 組件調用不太相鄰的引擎

manager 組件到其它 manager 組件通過 MQ 來通信,這種情況 manager 組件不需要知道其它組件,只要發 message 就可以了

  • 設計禁忌

下面這些行為都是不能允許的:

Client 不應該在一個用例中調用多個 Manager,不應該直接調用 Engine

Engine 不應該發布消息,不應該訂閱消息隊列

Engine 與 Manager 不應該相互調用

三、總結

關于可組合架構與架構驗證,一定不要根據需求設計,而是要根據易變性來設計。

設計系統時,要從需求列表中找到核心需求,在設計完成之后,先用核心用例進行架構驗證。在增加新的需求時,應該不太需要變更架構,這才說明這套架構設計對了。 

系統中的功能是集成的結果,而不是實現的結果。

 

責任編輯:武曉燕 來源: 架構精進之路
相關推薦

2020-01-08 21:38:30

機器學習工業4.0物聯網

2023-01-05 08:12:11

分層應用代碼

2012-06-07 10:45:12

軟件架構設計原則

2024-12-06 08:59:08

2009-04-09 10:16:43

Oracle架構基礎

2012-06-07 10:25:35

架構設計服務層軟件設計

2023-12-13 08:31:23

2021-11-08 06:57:35

Redis架構設計

2015-06-02 04:17:44

架構設計審架構設計說明書

2025-03-04 00:00:33

2015-06-02 04:34:05

架構設計

2025-04-15 04:00:00

2022-07-22 10:09:28

架構設計

2022-07-26 12:33:38

架構設計場景

2025-05-27 10:15:00

Go開發軟件架構

2017-02-20 09:02:31

Impala架構設計

2013-05-27 10:58:28

Tumblr架構設計雅虎收購

2015-08-27 09:12:58

大數據

2022-11-11 10:48:55

AQS源碼架構

2023-05-12 08:06:46

Kubernetes多云架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看av免费 | 日本不卡免费新一二三区 | 国产激情亚洲 | 一区二区三区高清 | 亚洲精品久 | 99福利| 一级毛片播放 | 国产成人免费视频网站高清观看视频 | www.青青草 | 欧美日韩久久精品 | av特级毛片| 欧美a区| 国产高清免费 | 91精品国产乱码久久久久久久久 | 亚洲精品一区av在线播放 | 国产精品一区二区福利视频 | 国产精品久久久久免费 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 在线一区二区三区 | 一级全黄少妇性色生活免费看 | 日韩在线第一 | 在线视频日韩 | 日韩高清国产一区在线 | 亚洲在线一区二区 | 成人精品国产一区二区4080 | 欧美日韩在线视频一区二区 | 日韩欧美国产精品 | 成人午夜影院 | 欧美成人精品 | www.亚洲成人网 | 国产精品99久久久久久www | 久久久久久国产精品mv | 久热久热 | 国产精品国产馆在线真实露脸 | 第一av| 亚洲精品美女在线观看 | 国产精品欧美精品日韩精品 | 亚洲区中文字幕 | 成人免费在线观看 | 羞羞网站免费观看 | 中文天堂网 |