1 可擴充架構的基本思想和模式
架構可擴充模式:分層架構、SOA 架構、微服務和微核心等
所有的可擴充性架構設計,背後的基本思想都可以總結為:有建設性地拆;
将原本大一統的系統拆分成多個規模小的部分,使得軟體系統變得更加優美(具備更好的可擴充性),在擴充時隻修改其中一部分即可,無須整個系統到處都改,通過這種方式來減少改動範圍,降低改動風險;
合理的拆分,還能夠強制保證即使程式員出錯,出錯的範圍也不會太廣,影響也不會太大。
拆分思路:
面向流程拆分(資料移動的流程):将整個業務流程拆分為幾個階段,每個階段作為一部分。
面向服務拆分:将系統提供的服務拆分,每個服務作為一部分。
面向功能拆分:将系統提供的功能拆分,每個功能作為一部分。
從範圍上來看“流程”“服務”“功能”三者的聯系和差別,從大到小依次為:流程 > 服務 > 功能
不同的拆分方式,本質上決定了系統的擴充方式:
擴充時大部分情況隻需要修改某一層,少部分情況可能修改關聯的兩層,不會出現所有層都同時要修改。
- 面向流程拆分,對應分層架構
對某個服務擴充,或者要增加新的服務時,隻需要擴充相關服務即可,無須修改所有的服務。
- 面向服務拆分,對應SOA、微服務架構
對某個功能擴充,或者要增加新的功能時,隻需要擴充相關功能即可,無須修改所有的服務。
- 面向功能拆分,對應微核心架構
可以組合使用這幾個系統架構
以學生管理系統為例:
- 整體系統采用面向服務拆分中的“微服務”架構,拆分為“注冊服務”“登入服務”“資訊管理服務”“安全服務”,每個服務是一個獨立運作的子系統,有各自獨立的資料庫,緩存,伺服器
- “注冊服務”子系統可以采用面向流程拆分的分層架構
- “登入服務”子系統可以采用面向功能拆分的“微核心”架構,包括手機号登入、身份證登入、郵箱登入三個功能
2 傳統的可擴充架構模式:分層架構和SOA
2.1 分層架構
也叫 N 層架構,通常情況下,N 至少是 2 層。
常見模式:C/S 架構、B/S 架構、邏輯分層架構。
常見的是 3 層架構(例如,MVC、MVP 架構)、4 層架構,5 層架構的比較少見,一般是比較複雜的系統才會達到或者超過 5 層,比如作業系統核心架構。
分層架構設計最核心的一點就是需要保證各層之間的差異足夠清晰,邊界足夠明顯,讓人看到架構圖後就能看懂整個架構,這也是分層不能分太多層的原因。
分層架構之是以能夠較好地支撐系統擴充,本質在于隔離關注點(separation of concerns),即每個層中的元件隻會處理本層的邏輯,分層時要保證層與層之間的依賴是穩定的,才能真正支撐快速擴充。
分層結構的另外一個特點就是層層傳遞,也就是說一旦分層确定,整個業務流程是按照層進行依次傳遞的,不能在層之間進行跳躍,這種限制的好處在于強制将分層依賴限定為兩兩依賴,降低了整體系統複雜度,缺點就是備援了代碼,性能也就相應地有所影響
2.2 SOA
SOA的出現主要是為了應對傳統 IT 系統存在的問題:功能重複、系統來源不同、系統之間通信需要定制開發
SOA 提出了 3 個關鍵概念來處理這些問題:服務、ESB、松耦合
典型架構:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0smaOBzaU5EeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5UDN0UDMyETMzIDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
soa是內建的思想,是解決服務孤島打通鍊條,是無奈之舉。esb集中化的管理帶來了性能不佳,厚重,複雜性高等問題。也無法快速擴充。不适合網際網路的業務特點
SOA是把多個系統整合,而微服務是把單個系統拆開來,方向正好相反