根據軟件系統在運行期的表現風格和部署結構,咱們能夠粗略地將其劃分爲兩大類。前端
(1)整個系統的全部功能單元,總體部署到同一個進程(全部代碼能夠打包成 1 個或多個文件),咱們能夠稱之爲 「單體架構」(Monolithic Architecture);後端
(2)整個系統的功能單元分散到不一樣的進程,而後由多個進程共同提供不一樣的業務能力,咱們稱之爲 「分佈式架構」(Distributed Architecture)。架構
再結合軟件系統在整個生命週期的特色,咱們能夠進一步區分不一樣的架構風格。框架
對於單體架構,咱們根據設計期和開發實現期的不一樣模式和劃分結構,能夠分爲:前後端分離
簡單單體模式:代碼層面沒有拆分,全部的業務邏輯都在一個項目(Project)裏打包成一個二進制的編譯後文件,經過這個文件進行部署,並提供業務能力;分佈式
MVC 模式:系統內每一個模塊的功能組件按照不一樣的職責劃分爲模型(Model)、視圖(View)、控制器(Controller)等角色,並以此來組織研發實現工做;微服務
先後端分離模式:將先後端代碼耦合的設計改成前端邏輯和後端邏輯獨立編寫實現的處理模式;架構設計
組件模式:系統的每個模塊拆分爲一個子項目(SubProject),每一個模塊獨立編譯打包成一個組件,而後全部須要的組件一塊兒再部署到同一個容器裏;設計
類庫模式:A 系統須要複用 B 系統的某些功能,這時能夠直接把 B 系統的某些組件做爲依賴庫,打包到 A 系統來使用。生命週期
對於分佈式架構,咱們根據設計期的架構思想和運行期的不一樣結構,能夠分爲:
面向服務架構(Service Oriented Architecture):以業務服務的角度和服務總線的方式(通常是 WebService 與 ESB)考慮系統架構和企業 IT 治理;
分佈式服務架構(Distributed Service Architecture):基於去中心化的分佈式服務框架與技術,考慮系統架構和服務治理;
微服務架構(MicroServices Architecture):微服務架構能夠看作是面向服務架構和分佈式服務架構的拓展,使用更細粒度的服務(因此叫微服務)和一組設計準則來考慮大規模的複雜系統架構設計。
也有人把如上的各個架構風格總結爲四個大的架構發展階段:
(1)單體架構階段
(2)垂直架構階段
(3)SOA 架構階段
(4)微服務架構階段