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

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

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

來源: 責編: 時間:2024-09-10 09:47:06 126觀看
導讀簡單原則宣言是:“簡單優(yōu)于復雜”。圖片由于軟件架構與建筑架構在表面上存在相似性,我們往往會下意識地將對建筑的審美觀念遷移至軟件架構之上。對于我們親自構建的軟件架構,我們期望它如著名建筑一般宏偉、精美、富有藝

簡單原則宣言是:“簡單優(yōu)于復雜”。Uvf28資訊網——每日最新資訊28at.com

圖片圖片Uvf28資訊網——每日最新資訊28at.com

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

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

軟件領域的復雜性體現(xiàn)在兩個方面

結構復雜的系統(tǒng)通常具備兩個特點:一是組成系統(tǒng)的組件數量眾多;二是這些組件之間的關系極為復雜。Uvf28資訊網——每日最新資訊28at.com

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

結構上的復雜性存在第二個問題。某個組件的改動會影響與之關聯(lián)的所有組件,而這些被影響的組件又會繼續(xù)遞歸地影響更多的組件。這一問題會影響整個系統(tǒng)的開發(fā)效率,因為一旦變更涉及外部系統(tǒng),就需要協(xié)調各方共同進行方案評估、資源協(xié)調以及上線配合。Uvf28資訊網——每日最新資訊28at.com

結構上的復雜性存在第三個問題。在復雜系統(tǒng)中定位問題總是比在簡單系統(tǒng)中更加困難。首先,由于組件眾多,每個組件都有出現(xiàn)問題的嫌疑,所以需要逐一排查;其次,組件間關系復雜,表現(xiàn)出故障的組件未必是真正問題的根源。Uvf28資訊網——每日最新資訊28at.com

第二個方面體現(xiàn)在邏輯的復雜性

當我們意識到結構的復雜性后,第一反應或許是 “降低組件數量”,畢竟組件數量越少,系統(tǒng)結構就越簡單。而最簡單的結構無疑是整個系統(tǒng)僅有一個組件,即系統(tǒng)本身,所有功能和邏輯都在這一個組件中實現(xiàn)。Uvf28資訊網——每日最新資訊28at.com

然而,不幸的是,這樣做并不可行。原因在于除了結構的復雜性之外,還存在邏輯的復雜性。如果某個組件的邏輯過于復雜,同樣會帶來各種問題。Uvf28資訊網——每日最新資訊28at.com

邏輯復雜的組件,有一個典型特征就是單個組件承擔了過多的功能。以電商業(yè)務為例,常見的功能包括商品管理、商品搜索、商品展示、訂單管理、用戶管理、支付、發(fā)貨、客服等。如果把這些功能全部在一個組件中實現(xiàn),那就是典型的邏輯復雜性。Uvf28資訊網——每日最新資訊28at.com

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

總之,誰都無法忍受這樣的場景。功能復雜的組件,另一個典型特征就是采用了復雜的算法。復雜算法導致的問題主要是難以理解,進而難以實現(xiàn)、難以修改,并且出了問題難以快速解決。Uvf28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-112723-0.html架構設計的簡單原則,你學會了嗎?

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

上一篇: 盤點分頁查詢中遇到的坑!

下一篇: Go1.23 新特性:爭議最大的 iter 迭代器,可遍歷萬物!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 开江县| 惠州市| 丹巴县| 尼玛县| 浙江省| 容城县| 拉孜县| 色达县| 兴化市| 砚山县| 商都县| 西乌珠穆沁旗| 修水县| 色达县| 台南县| 兰西县| 奉节县| 子洲县| 衡水市| 邢台市| 扎鲁特旗| 兰西县| 友谊县| 和顺县| 凉山| 丹棱县| 永昌县| 大埔县| 屯留县| 广西| 万盛区| 宁武县| 水城县| 高青县| 定州市| 即墨市| 阿克陶县| 鄢陵县| 达孜县| 通化市| 仙游县|