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

架構設計的簡單原則,你學會了嗎?

開發 架構
誰都無法忍受這樣的場景。功能復雜的組件,另一個典型特征就是采用了復雜的算法。復雜算法導致的問題主要是難以理解,進而難以實現、難以修改,并且出了問題難以快速解決。

簡單原則宣言是:“簡單優于復雜”。

圖片圖片

由于軟件架構與建筑架構在表面上存在相似性,我們往往會下意識地將對建筑的審美觀念遷移至軟件架構之上。對于我們親自構建的軟件架構,我們期望它如著名建筑一般宏偉、精美、富有藝術感且豪華…… 總之,絕不能顯得寒酸或簡單。

團隊壓力有時也會在有意無意間促使我們走向復雜的方向。因為在大多數人評價一個方案水平高低時,復雜性是一項重要的參考指標。例如,設計一個主備方案,若采用心跳機制來實現,或許大家會覺得這太過簡單。然而,若引入 ZooKeeper 來做主備決策,很多人可能會認為這個方案更加 “高大上”。畢竟 ZooKeeper 運用的是 ZAB 協議,而 ZAB 協議本身就十分復雜。實際上,真正理解 ZAB 協議的人少之又少,但這并不妨礙我們都知曉 ZAB 協議很優秀。

軟件領域的復雜性體現在兩個方面

結構復雜的系統通常具備兩個特點:一是組成系統的組件數量眾多;二是這些組件之間的關系極為復雜。

然而,結構上的復雜性存在第一個問題。組件越多,其中某個組件出現故障進而導致系統故障的可能性就越大。這個概率是可以計算出來的,假設組件的故障率為 10%(即有 10% 的時間不可用),那么由 3 個組件組成的系統可用性為(1 - 10%)×(1 - 10%)×(1 - 10%)=72.9%,而由 5 個組件組成的系統可用性為(1 - 10%)×(1 - 10%)×(1 - 10%)×(1 - 10%)×(1 - 10%)=59%,兩者的可用性相差 13%。

結構上的復雜性存在第二個問題。某個組件的改動會影響與之關聯的所有組件,而這些被影響的組件又會繼續遞歸地影響更多的組件。這一問題會影響整個系統的開發效率,因為一旦變更涉及外部系統,就需要協調各方共同進行方案評估、資源協調以及上線配合。

結構上的復雜性存在第三個問題。在復雜系統中定位問題總是比在簡單系統中更加困難。首先,由于組件眾多,每個組件都有出現問題的嫌疑,所以需要逐一排查;其次,組件間關系復雜,表現出故障的組件未必是真正問題的根源。

第二個方面體現在邏輯的復雜性

當我們意識到結構的復雜性后,第一反應或許是 “降低組件數量”,畢竟組件數量越少,系統結構就越簡單。而最簡單的結構無疑是整個系統僅有一個組件,即系統本身,所有功能和邏輯都在這一個組件中實現。

然而,不幸的是,這樣做并不可行。原因在于除了結構的復雜性之外,還存在邏輯的復雜性。如果某個組件的邏輯過于復雜,同樣會帶來各種問題。

邏輯復雜的組件,有一個典型特征就是單個組件承擔了過多的功能。以電商業務為例,常見的功能包括商品管理、商品搜索、商品展示、訂單管理、用戶管理、支付、發貨、客服等。如果把這些功能全部在一個組件中實現,那就是典型的邏輯復雜性。

假設現在淘寶將這些功能全部在單一的組件中實現,我們可以想象一下這個恐怖的場景:系統會非常龐大,可能有上百萬、上千萬的代碼規模,“clone” 一次代碼要 30 分鐘。幾十、上百人維護這一套代碼,某個 “菜鳥” 不小心改了一行代碼,就可能導致整站崩潰。需求如雪片般飛來,為了應對,會開幾十個代碼分支,然后各種分支合并、各種分支覆蓋。產品、研發、測試、項目管理不停地開會討論版本計劃,協調資源,解決沖突。版本太多,每天都要上線幾十個版本,系統每隔 1 個小時就要重啟一次。線上運行出現故障,幾十個人撲上去定位和處理,一間小黑屋都裝不下所有人,整個辦公區都會鬧翻天。

總之,誰都無法忍受這樣的場景。功能復雜的組件,另一個典型特征就是采用了復雜的算法。復雜算法導致的問題主要是難以理解,進而難以實現、難以修改,并且出了問題難以快速解決。

責任編輯:武曉燕 來源: 二進制跳動
相關推薦

2024-03-05 10:09:16

restfulHTTPAPI

2022-09-28 07:31:03

SOLID對象設計

2024-03-06 08:28:16

設計模式Java

2022-07-08 09:27:48

CSSIFC模型

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2024-01-26 08:24:16

Dalvik架構ART

2024-05-09 08:14:09

系統設計語言多語言

2023-10-10 11:04:11

Rust難點內存

2024-05-06 00:00:00

InnoDBView隔離

2024-07-31 08:39:45

Git命令暫存區

2023-01-30 09:01:54

圖表指南圖形化

2024-08-06 09:47:57

2023-12-12 08:02:10

2023-06-06 07:50:07

權限管理hdfsacl

2024-02-02 11:03:11

React數據Ref

2024-01-30 18:29:29

微服務架構Ingress

2024-01-02 12:05:26

Java并發編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草色视频 | 久久久久国产一区二区 | 欧美激情综合 | 亚洲伊人精品酒店 | 国产精品成人在线 | 性色在线 | xxx国产精品视频 | 国产福利在线免费观看 | www.久久精品视频 | 欧美在线网站 | 激情视频一区 | 天天曰天天干 | 国产精品免费观看视频 | 欧美成人精品一区二区男人看 | 精品一二三区 | 国产91久久久久久久免费 | 亚洲精品国产第一综合99久久 | 国产精品日韩欧美一区二区三区 | 国产精品一区二区久久久久 | 偷拍亚洲色图 | 户外露出一区二区三区 | 国产视频福利一区 | 国产视频福利在线观看 | 欧美福利精品 | 国产成人精品一区二 | 亚洲视频在线一区 | 成人在线视频网址 | 91玖玖| 国产精品久久久久999 | 在线播放中文字幕 | 亚洲一区二区三区在线视频 | 综合激情网 | 草草视频在线播放 | 999精品在线观看 | 日本视频中文字幕 | 日韩福利在线 | 国产精品精品视频一区二区三区 | 四虎影 | 香蕉久久av | 在线中文字幕av | 怡红院成人在线视频 |