分層架構和SOA

  • 注:文章來源:極客時間的專欄《從0開始學架構》

分層架構

  • 它也叫分層架構,一般狀況下,N至少是2層。例如,C/S架構、B/S架架構、MVC、MVP、操做系統內核架構
一、C/S架構、B/S架構
  • 劃分的對象是整個系統,劃分的維度是用戶交互,即將和用戶交互的部分獨立爲一層,支撐用戶交互的後臺做爲另一層。
二、MVC架構、MVP架構
  • 劃分的對象是單個業務子系統,劃分的維度是職責,將不一樣的職責劃分到獨立層,但各層的依賴關係比較靈活

三、邏輯分層架構
  • 劃分的對象能夠是單個業務子系統,也能夠是整個業務系統,劃分的維度也職責
  • 邏輯分層架構中的層是自頂向下依賴的
  • 典型的有操做系統內核架構、TCP/IP架構
  • 下面是Android操做系統架構圖
  • 下面是典型的J2EE系統架構圖
  • 下面是針對整個業務系統進行邏輯分層的架構圖
分層架構設計核心
  • 保證各層之間的差別足夠清晰,邊界足夠明顯,讓人看到架構圖後就能看懂整個架構
  • 較好地支撐系統擴展,本質在於隔離關注點,即每一個層中的組件只會處理本層的邏輯
  • 例如,Linux內核爲了支撐不一樣的文件系統格式,抽象了VFS文件系統接口

優點
  • 分層架構的優點就體如今經過分層強制約束兩兩依賴,一旦自由選擇繞過度層,時間一長,架構就會變得混亂
缺點
  • 性能,由於每一次業務請求都須要穿越全部的架構分層

SOA

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

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

注:有興趣瞭解極客時間專欄的同窗,能夠查看極客時間專欄—可提供返現服務架構

相關文章
相關標籤/搜索