分層架構
- 它也叫分層架構,一般狀況下,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系統,成本也很高,也沒什麼收益
注:有興趣瞭解極客時間專欄的同窗,能夠查看極客時間專欄—可提供返現服務架構