­

《從零開始學架構》讀後感

  • 2019 年 10 月 6 日
  • 筆記

2019.9.9到9.10,花了兩天的時間通讀了《從零開始學架構》。


在互聯網的浪潮下,技術迭代如此之快,不免心生疑惑,有些迷茫。

大三下學完Spring+SpringMVC以及MyBatis的組合框架以為終於能歇一歇了,SpringBoot和SpringCloud映入眼帘。了解完SpringCloud組件後對單體和微服務之間產生了極強的主觀偏見,分佈式,集群,高性能,高可用這些名詞在大腦中留下了深深的烙印。

大四想跟朋友一起開發一個APP,卻在後端技術選型上面犯了難。剛剛學完SpringCloud的我自然是想用以至用。但理智讓我冷靜了下來,微服務真的適合我們嗎?

且不說業務開發的難度,Docker和K8s的部署我只是有所耳聞,根本不能信手拈來,團隊里的其他人也沒有了解過容器化部署的相關技術。


9.8晚由於白天的焦灼和問題難以解決,晚上10點就早早入睡了。第二天起了個大早,突發奇想去圖書館溜達溜達,暑假過去兩個多月,圖書館四樓最靠窗的新書架又更新了。挑幾本感興趣的,於是兩天的瘋狂閱讀開始了。


回顧一下

如果拿三國鼎立時代來做比喻的話,書里沒有描繪子龍是如何習武,軍隊是如何訓練,而是講述孔明是如何行軍布陣,運籌帷幄的。

在書里幾乎沒有一行關於代碼的闡述,而是着眼於整個系統的結構和設計,或者說是一種立足與軟件開發上的全局觀。

第一部分 架構設計原則和流程

合適,簡單,演化三個原則瞬間解決了我的困惑,聚焦於技術,就會為了使用技術而使用技術。 針對具體的業務和預算成本制定合適的開發計劃才是可取之道。

第二部分 高性能,高可用架構模式

數據庫的選擇和緩存的使用,搭建服務器集群實現存儲和計算的高可用,高性能。

隨着業務的發展,初期的架構產生瓶頸。需要更高性能的服務提供。與此同時,會帶來成本上的劇增。所以在項目開始,對於初創項目,並不建議直接採用這種方式,當業務訪問量過小,高性能,高可用就是一場打水漂的遊戲,白白浪費了資源。

第三部分 可擴展架構模式

分層,SOA和微服務。同樣,分層結構對比之下最為簡單,而SOA是針對於大量異構的IT系統的整合,微服務是業務發展後理想的樣子,但服務粒度劃分值得商榷。

第四部分 架構實戰

開篇淘寶的發展史令我為之震動。

其中, 互聯網業務發展

  • 業務複雜性
    • 初創期(創新,快)0-1w
    • 發展期(堆功能,優化期)1w-10w
    • 架構期(拆功能,拆數據庫,拆服務器)10w到100w
    • 競爭期(平台化,避免重複造輪子;服務化,解決系統交互問題)1000w+
    • 成熟期(優化)1億+
  • 用戶規模增大
    • 性能
    • 可用性

非常具有參考價值,是在技術選擇盲目時的指南針。


小結:

技術是隨着業務發展而變化的合適優於業界領先,簡單優於複雜,演化優於一步到位。