1. 程式人生 > >《億級流量網站架構核心技術》讀書筆記

《億級流量網站架構核心技術》讀書筆記

雖然本人平時主要從事OA系統的開發,系統併發量不會特別大,主要是注重業務邏輯和快速交付,但是通過學習電商網站對高併發高可用的處理,可以促進自己對系統架構的思考,提升自己的業務水平,以後出現高併發高可用問題的時候,才不會手足無措,而且,系統架構原理是想通的,即使是小系統,也可以從大系統的架構中學習到相關技術解決方案和設計思路,也就是所謂的觸類旁通。

一,系統設計的一些原則

在我們的技術生涯中,總是不斷針對新的需求去研發新的系統,而很多系統的設計都是可以觸類旁通的。在設計系統時,要因場景、時間而異,一個系統也不是一下子就能設計得非常完美,在具有有限資源的情況下,一定是先解決當下最核心的問題,預測並發現未來可能出現的問題,一步步解決最痛點的問題。也就是說,系統設計是一個不斷迭代的過程,在迭代中發現問題並修復問題,即滿足需求的系統是不斷迭代優化出來的,這是一個持續的過程,個人不相信完美架構銀彈。不過,如果一開始就有好的基礎系統設計,未來可以更容易達到一個比較滿意的目標。一個好的設計要做到,解決現有需求和問題,把控實現和進度風險,預測和規劃未來,不要過度設計,從迭代中演進和完善。

在設計系統時,應該多思考墨菲定律。

  1. 任何事都沒有表面看起來那麼簡單。
  2. 所有的事都會比你預計的時間長。
  3. 可能出錯的事總會出錯。
  4. 如果你擔心某種情況發生,那麼它就更有可能發生。

在系統劃分時,也要思考康威定律。

  1. 系統架構是公司組織架構的反映。
  2. 應該按照業務閉環進行系統拆分/組織架構劃分,實現閉環/高內聚/低耦合,減少溝通成本。
  3. 如果溝通出現問題,那麼就應該考慮進行系統和組織架構的調整。
  4. 在合適時機進行系統拆分,不要一開始就把系統/服務拆得非常細,雖然閉環,但是每個人維護的系統多,維護成本高。

應該多鼓勵團隊成員積極主動溝通並推動系統演進。另外,也要多思考二八定律,在系統設計初期將有限的資源用到刀刃上,以最小化可行產品方式進行推進。

在持續開發系統的過程中,會有一些設計原則/經驗可以用來遵循和指導我們。但設計原則應該在系統迭代過程中,根據現有問題或特徵匹配使用,如果剛開始遇到不是核心問題,那麼不要複雜化系統設計,但先行規劃和設計是有必要的,要對現有問題有方案,對未來架構有預案。