天天看點

《從零開始學架構》九:可擴充架構的基本思想和模式1 可擴充架構的基本思想和模式

1 可擴充架構的基本思想和模式

架構可擴充模式:分層架構、SOA 架構、微服務和微核心等

所有的可擴充性架構設計,背後的基本思想都可以總結為:有建設性地拆;

将原本大一統的系統拆分成多個規模小的部分,使得軟體系統變得更加優美(具備更好的可擴充性),在擴充時隻修改其中一部分即可,無須整個系統到處都改,通過這種方式來減少改動範圍,降低改動風險;

合理的拆分,還能夠強制保證即使程式員出錯,出錯的範圍也不會太廣,影響也不會太大。

拆分思路:

面向流程拆分(資料移動的流程):将整個業務流程拆分為幾個階段,每個階段作為一部分。

面向服務拆分:将系統提供的服務拆分,每個服務作為一部分。

面向功能拆分:将系統提供的功能拆分,每個功能作為一部分。

從範圍上來看“流程”“服務”“功能”三者的聯系和差別,從大到小依次為:流程 > 服務 > 功能

不同的拆分方式,本質上決定了系統的擴充方式:

  1. 面向流程拆分,對應分層架構
擴充時大部分情況隻需要修改某一層,少部分情況可能修改關聯的兩層,不會出現所有層都同時要修改。
  1. 面向服務拆分,對應SOA、微服務架構
對某個服務擴充,或者要增加新的服務時,隻需要擴充相關服務即可,無須修改所有的服務。
  1. 面向功能拆分,對應微核心架構
對某個功能擴充,或者要增加新的功能時,隻需要擴充相關功能即可,無須修改所有的服務。

可以組合使用這幾個系統架構

以學生管理系統為例:

  • 整體系統采用面向服務拆分中的“微服務”架構,拆分為“注冊服務”“登入服務”“資訊管理服務”“安全服務”,每個服務是一個獨立運作的子系統,有各自獨立的資料庫,緩存,伺服器
  • “注冊服務”子系統可以采用面向流程拆分的分層架構
  • “登入服務”子系統可以采用面向功能拆分的“微核心”架構,包括手機号登入、身份證登入、郵箱登入三個功能

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、松耦合

典型架構:

《從零開始學架構》九:可擴充架構的基本思想和模式1 可擴充架構的基本思想和模式

soa是內建的思想,是解決服務孤島打通鍊條,是無奈之舉。esb集中化的管理帶來了性能不佳,厚重,複雜性高等問題。也無法快速擴充。不适合網際網路的業務特點

SOA是把多個系統整合,而微服務是把單個系統拆開來,方向正好相反

繼續閱讀