分層架構和SOA

_sanjun發表於2019-04-18
  • 注:文章來源:極客時間的專欄《從0開始學架構》

分層架構

  • 它也叫分層架構,通常情況下,N至少是2層。例如,C/S架構、B/S架架構、MVC、MVP、作業系統核心架構
1、C/S架構、B/S架構
  • 劃分的物件是整個系統,劃分的維度是使用者互動,即將和使用者互動的部分獨立為一層,支撐使用者互動的後臺作為另外一層。
    分層架構和SOA
2、MVC架構、MVP架構
  • 劃分的物件是單個業務子系統,劃分的維度是職責,將不同的職責劃分到獨立層,但各層的依賴關係比較靈活

分層架構和SOA

3、邏輯分層架構
  • 劃分的物件可以是單個業務子系統,也可以是整個業務系統,劃分的維度也職責
  • 邏輯分層架構中的層是自頂向下依賴的
  • 典型的有作業系統核心架構、TCP/IP架構
  • 下面是Android作業系統架構圖
    分層架構和SOA
  • 下面是典型的J2EE系統架構圖
    分層架構和SOA
  • 下面是針對整個業務系統進行邏輯分層的架構圖
    分層架構和SOA
分層架構設計核心
  • 保證各層之間的差異足夠清晰,邊界足夠明顯,讓人看到架構圖後就能看懂整個架構
  • 較好地支撐系統擴充套件,本質在於隔離關注點,即每個層中的元件只會處理本層的邏輯
  • 例如,Linux核心為了支撐不同的檔案系統格式,抽象了VFS檔案系統介面

分層架構和SOA

優勢
  • 分層架構的優勢就體現在通過分層強制約束兩兩依賴,一旦自由選擇繞過分層,時間一長,架構就會變得混亂
缺點
  • 效能,因為每一次業務請求都需要穿越所有的架構分層

SOA

  • Service Oriented Architecture,面向服務架構
背景
  • 企業各部門有獨立的IT系統,比如人力資源系統、財務系統、銷售系統,這些系統可能都涉及人員管理,各IT系統都需要重複開發人員管理的功能。例如,某個員工離職後,需要分別到上述三個系統中刪除員工的許可權
  • 各個獨立的IT系統可能採購於不同的供應商,實現技術不同,企業自己也不太可能基於這些系統進行重構
  • 隨著業務的發展,複雜度越來越高,更多的流程和業務需要多個IT系統合作完成。由於各個獨立的IT系統沒有標準的實現方式(例如,人力資源系統用Java開發,對外提供RPC;財務系統用C#開發,對外提供SOAP協議),每次開發新的 流程和業務,都需要協調大量的IT系統,同時定製開發,效率很低。
SOA提出的3個關鍵概念
1、服務
  • 所有的業務功能都是一項服務,服務就意味著要對外提供開放的能力,當其他系統需要使用這項功能時,無須定製化開發
  • 服務可大可小,可簡單也可複雜
2、ESB
  • Enterprise Service Bus,企業服務匯流排
  • ESB將企業中各個不同的服務連線在一起
  • SOA使用ESB來遮蔽異構系統對外提供各種不同的介面方式,以此達到服務間高校的互聯互通
3、鬆耦合
  • 目的是減少各個服務間的依賴和互相影響
典型的SOA架構如下:

分層架構和SOA

理念
  • SOA架構是比較高層級的架構設計理念,一般情況下說企業採用了SOA的架構來構建IT系統,但不會說某個獨立的系統採用了SOA的架構。
  • 例如,某企業採用SOA架構,將系統分為“人力資源管理服務”“考勤服務”“財務服務”,但人力資源管理服務本身通常不會再按照SOA的架構拆分更多服務,也 不會再使用獨立的一套ESB,因為這些系統本身可能就是採購的,ESB本身也是採購的,如果人力資源系統本身重構為多個子服務,再部署獨立的ESB系統,成本也很高,也沒什麼收益

注:有興趣瞭解極客時間專欄的同學,可以檢視極客時間專欄—可提供返現服務

相關文章