不得不說我是三天打漁兩天曬網,爛泥巴糊不上墻,
爛泥巴開始打漁,
上節跟著大佬學習了,架構的復雜度來源,現在回顧下,確實想不起來了,重新開一遍,
回顧
影響架構復雜度的幾大因素,追求高性能,高可用,高拓展既然已經知道了復雜度的來源于這些方面,那我們有什么原則可以直接將這些復雜度化難為簡呢? 那這這節課,我們就看下架構的三大原則:合適原則,簡單原則,演化原則,
架構的三大原則
合適原則
- 合適原則,合適的意思就是合適唄,選擇一個中間件,或者一些框架,或者物理機等,都得合適我們所要設計的系統,
- 還有就是合適原則的宣言是:“合適優于業界領先,”,就針對這個宣言,我在作業中也有遇到過,有些架構師為了追求新的技術而耗費大量的資源去達到只是起了替換作用的作業,我說一個我自己遇到的真是例子:公司一直用的0是關系性資料庫mysql,現在公司上了一個新的專案,然后有個新來的團隊leader他說選用mongDB來做存盤,當時由于公司之前沒有使用過,運維團隊的維護能力也算是跟不上,最終結果是折騰了一會然后最后還是使用了mysql解決了,這里的沒有選擇mongDB也就是合適原則了,雖然mongDB有很多優勢,且相對來說能符合一些專案需求,但是運維能力跟不上這也是問題的,
- 還有的就是大佬所講的盲目跟風,我現在就是有這樣的情節,一方面為了證明自己走在技術最前沿(裝逼唄),一方面是自己學了,趕緊用公司的專案實踐一下(真TM的自私,說的就是我),這都是自己之前不成熟的想法,如果我的領導看到我的文章,如果我下次要新的技術堆疊我會給你充分的理由的,畢竟我們都是專業的開發人員,
- 之前的微服務就很火嗎?但是有多少公司真正的微服務落地成功,這里的成功不是拆成功,而是真正的達到最終的目的,降低成本,提高服務的穩定性和復雜度等等了嗎? 現在阿里又要拆中臺,不搞了,難道大家又要學阿里合并起來嗎?
- 合適是重中之重,不合適的人最終都會分手的,
簡單原則
簡單原則宣言:“簡單優于復雜”,
- 我靠,我的第一反應這不就廢話嗎?簡單優于復雜,是的我的思維方式有點問題,這里的復雜的意思是為了使架構變得精美,無懈可擊讓架構變得很復雜的意思,其實我個人理解他就是我們所說的:“過度設計”,
- “復雜”在制造領域代表先進,在建筑領域代表領先,但在軟體領域,卻恰恰相反,代表的是“問題”,
- 軟體領域的復雜性體現在兩個方面:
-
結構復雜:
- 組成復雜系統的組件數量更多;
- 同時這些組件之間的關系也更加復雜,
-
看看下面的物理架構圖夠復雜吧,其實再我們很多系統都沒有必要這么全,下面的物理架構圖也算是現在的主流設計了吧,相當全,但是我們的系統需要這么全嗎???

-
我們再來看看如果這么復雜了會出哪些問題呢?
- 組件越多,就越有可能其中某個組件出現故障 必然事件
- 某個組件改動,會影響關聯的所有組件,不需要快取,你加了快取,改了快取那肯定影響系統的一致性問題
- 定位一個復雜系統中的問題總是比簡單系統更加困難,有了快取,到底是資料庫沒有沒出海?事快取沒有重繪呢?
-
- 簡單這件事情 不管是在架構設計,還是在我們寫代碼的時候都有用到,比如設計模式中的kiss原則,不是打kiss的kiss,是keep Simple yourself 或者 Keep It Simple, Stupid!的意思保證簡單單一,生活中我們也應該這樣,不然會讓我們很累
演化原則
演化原則宣言:“演化優于一步到位”,
- 之前一個老師傅講的一句話: “我們先簡單開發(不過度設計),后面結構什么慢慢迭代重構優化”,這是我在上家公司最后一個專案的架構師說的,這也許就本著演化原則來的,希望我沒有充分解讀,哈哈哈
- 不高深的講世間萬物都是一步一步演化而來的,沒有什么是一生下來就是完美的,生物的進化等等等,所以軟體架構設計其實更加類似于大自然“設計”一個生物,通過演化讓生物適應環境,逐步變得更加強大:
- 軟體架構設計同樣是類似的程序:
- 首先,設計出來的架構要滿足當時的業務需要,這是必然不然會被產品經理“砍死”!
- 其次,架構要不斷地在實際應用程序中迭代,保留優秀的設計,修復有缺陷的設計,改正錯誤的設計,去掉無用的設計,使得架構逐漸完善,這也是重構的作用之一,重構也是迭代開發中很重要的一步,
- 第三,當業務發生變化時,架構要擴展、重構,甚至重寫;代碼也許會重寫,但有價值的經驗、教訓、邏輯、設計等(類似生物體內的基因)卻可以在新架構中延續,
總結
- 主要聊了架構的三大原則:
- 合適原則
- 簡單原則
- 演化原則
- 這也是我們生活的原則,選擇合適的,做事簡單點,不要著急,一步一步的腳踏實地前進,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/282910.html
標籤:其他
上一篇:Dubbo基礎專題——第二章(Dubbo工程簡單實踐)
下一篇:Nacos(配置中心)實踐
