架構思考:不靠譜的元件與可靠的系統
我們應該把精力放到單個元件的精益求精上還是整體流程和架構上?構建一個大規模卻依然可靠的軟體系統是否可行?
對於架構和元件的關係,曾經閱讀過一本書,關於如何構建一個大型分散式系統的,被幾個觸及靈魂的問題吸引,略加整理,供大家參考。
一、我們應該把精力放到單個元件的精益求精上還是整體流程和架構上?
這個問題說實話很不好回答,要麼得罪程式設計師要麼得罪架構師,按照中國傳統的中庸哲學,肯定是走中間路線,誰也不得罪。所以我們會說,都要重要。重視元件主要是編碼能力和編碼質量,很多時候由技術人員個體水平決定,重視架構則是軟體工程和軟體架構的規劃和設計,更多是技術管理和管控層的水平決定。重視單個元件的精益演進是“術”層面的事情,重視架構是“道”層面的事情。
另外,從工程實踐層面講,單個元件的迭代和最佳化屬於具象化的,是可見可控的。流程和架構的持續迭代是抽象的,根據情況的不同和干係人的不同會有不同的辦法和演進思路。
二、構建一個大規模卻依然可靠的軟體系統是否可行?
這個問題乍一聽,覺得有點不可理喻,要是不靠譜,我們這一大幫人整天瞎忙活什麼啊,散了算了。
其實,這個問題要從墨菲定律談起。
“墨菲定律”很複雜,簡而言之,其根本內容是“凡是可能出錯的事有很大機率會出錯”,指的是任何一個事件,只要具有大於零的機率,就不能夠假設它不會發生。通俗來講,事情往往會朝化的一面演進和發展。
回到我們的問題上。有了“墨菲定律”這樣一個神論斷,加上“大規模”這樣一個嚇人的前提,我們會發現在軟體開發和執行過程中,程式碼質量、硬體穩定性、網路可靠性等因素,其負面影響會形成疊加效應,會被不斷放到,直到成為制約軟體成敗的關鍵因素。所以我們可以得出這樣的結論,如果一項工作要經過多個“不靠譜”環節和過程的協同作用,其誤差和負面影響會疊加,最終導致結果不能收斂不可控。
這樣來看,我們好像得出了一個相反的結論,其實不然。我們可以用一個生命體來類比。
不可靠的部件可以理解成構成生命體的基本細胞和分子,在熱力學擾動、生物學複製差錯的影響下,這些細胞和分子是不可靠的,是不靠譜的。但是我們的生命體卻是鮮活的,恰恰是因為使用了不可靠的部件完成遺傳進化,這裡面的關鍵是我們的生命體承認細胞和分子的不可靠,會靠生命體本身的代償機制和進化機制,實現細胞和分子的新舊交替,不可靠的細胞和分子一定會消亡,也終究會在靠譜的系統組織下重生。
回到我們的話題上,那就是架構在起作用,有人把這種架構稱之為“鳳凰架構”,俗稱“不死鳥”。
三、演進的架構是系統永葆青春的秘籍
從單體應用、SOA、微服務、服務網格、無服務等架構的興起,我們的系統架構其實一種呈現一種有規律的演進,從集中到分散、從大到小、從宏觀到微觀。但是,我們也應該看到,“分久必合合久必分”的天下大勢,迴歸到我們的系統架構上,集中與分散都是因勢而為。每一種架構的優點都是讓系統活得更好,但是系統架構的關鍵問題是如何讓系統持續穩定的執行,至於用什麼架構去實現,那是術層面的問題,切不可本末倒置。
流水不腐戶樞不蠹,有老朽,有消亡,有重生,有更替,這才是一個生態應該有的正常秩序。哪怕系統採用了十分不靠譜的元件,只要整體架構設計了恰當熔斷和服務淘汰和重建機制,從系統外部觀察,架構依然會表現出整體的穩定性和持續的服務能力。
以上很多觀點都來自於那本書和網上的內容,又加了一些本人的淺見。
來自 “ twt社群 ”, 原文作者:鄭金輝;原文連結:https://mp.weixin.qq.com/s/RUJOe42GHGwDkrOdkdmIiw,如有侵權,請聯絡管理員刪除。
相關文章
- 不靠譜專案經理成長記--“不靠譜”的Jerry
- 無人值守的運維到底靠譜不靠譜?運維
- Nucleus PLUS系統架構和元件架構元件
- Firefox的scrapbook外掛不靠譜Firefox
- 分散式系統架構的冰與火分散式架構
- Android系統架構-----Android的系統體系架構Android架構
- Vue 折騰記 - (7) 寫一個挺不靠譜的Vue-Echarts元件VueEcharts元件
- Vue 折騰記 – (7) 寫一個挺不靠譜的Vue-Echarts元件VueEcharts元件
- 一套十萬級TPS的IM綜合訊息系統的架構實踐與思考架構
- Spark跟Flink的JDBC,都不靠譜SparkJDBC
- FACEBOOK 的系統架構架構
- IOS的系統架構iOS架構
- 系統架構師大會:中國系統架構師的盛宴架構
- 如何在敏捷中交付可靠的架構?敏捷架構
- vue與react元件的思考VueReact元件
- View.post() 不靠譜的地方你知道嗎?View
- Web系統開發構架再思考-前後端的完全分離Web後端
- Android的系統架構Android架構
- SAP的三系統架構架構
- 大前端架構思考與選擇前端架構
- 夏雪:蜀漢成敗與架構思考架構
- 架構的深入思考 From FunData架構
- Hbase 系統架構與資料結構架構資料結構
- 我對雲原生軟體架構的觀察與思考架構
- 超融合架構與傳統IT架構的區別架構
- MQTT 安全解析:構建可靠的物聯網系統MQQT
- 關於軟體架構和業務架構的思考架構
- HDFS架構指南(分散式系統Hadoop的檔案系統架構)架構分散式Hadoop
- 大型購物平臺的系統設計與架構架構
- 電商網站秒殺與搶購的系統架構網站架構
- 關於構建自己的知識體系架構的一點個人思考架構
- 分散式系統的架構思路分散式架構
- 系統架構師的修煉架構
- PetShop的系統架構設計架構
- 技術架構演進的思考架構
- 永久免費oa辦公系統到底靠不靠譜?免費oa辦公系統市場分析
- 服務架構學習與思考(12):從單體架構到微服務架構的演進歷程架構微服務
- Android系統架構與系統原始碼目錄Android架構原始碼