項目架構的演進
時間 2021-01-09
標籤
Java Web技術解析
系統架構
單體架構
分佈式架構
SOA架構
微服務架構
一 概述
隨着軟件行業的發展,軟件架構的發展經過了從單體架構->垂直架構->SOA架構->微服務架構的演進。
二 單體架構
單體架構是Web應用程序發展早期的一種架構,這種架構的特點就是所有的功能模塊都打成一個war包,並放在同一個web容器中,而且所有的功能模塊使用同一個數據庫。
單體架構的特點:
- 該架構下會將所有的功能集成在一個項目工程中。
- 所有的功能打成一個war包部署到服務器。
- 通過部署應用集羣和數據庫集羣來提高系統的性能。
單體架構的優點:
- 項目架構簡單,前期開發成本低,週期短,適合小型項目。
- 單體架構項目開發效率高,模塊之間交互採用本地方法調用。
- 項目部署方便,運維成本小,直接打包成一個完整的包並拷貝到web容器的某個目錄下即可。
- 容易測試,單體應用本地啓動方便,從而測試功能方便。
單體架構的缺點:
- 全部功能集成在一個項目中,對於大型項目不易開發,擴展及維護。
- 版本迭代速度逐漸變慢,修改一個地方就要將整個應用全部編譯,部署,啓動,開發和測試周期長。
- 無法按需伸縮,通過集羣的方式來實現水平擴展,無法針對某業務按需伸縮。
三 分佈式架構
在Web應用程序的發展過程中,爲了適應大型項目的開發需求,開發者需要將一個單體系統按業務垂直拆分爲若干個系統,系統之間通過網絡交互完成用戶的業務處理,每個系統可分佈式部署,所以就出現了分佈式架構。
分佈式架構的特點:
- 分佈式架構按業務垂直拆分成一個一個的單體系統,被稱爲垂直架構。
- 分佈式架構中,系統與系統之間存在數據冗餘,耦合性較大,如上圖三個項目都存在客戶信息。
- 分佈式架構中,系統之間的接口多爲實現數據同步,如上圖三個項目要求客戶信息同步。
分佈式架構的優點:
- 分佈式架構將系統進行垂直拆分,每個子系統都變成小型系統,功能簡單,前期開發成本低,週期短。
- 每個系統可按需伸縮,且可以按需採用不同的技術。
分佈式架構的缺點:
- 分佈式架構中存在數據冗餘,功能冗餘,耦合性高。
- 分佈式架構垂直拆分的子系統可以按需伸縮,但是伸縮的粒度不夠,對於一個子系統中的不同業務無法實現,比如訂單管理和用戶管理。
四 SOA架構
SOA架構是一種面向服務的架構,基於分佈式系統,將不同業務功能按服務進行拆分,並通過這些服務之間定義良好的接口和協議聯繫起來。
SOA架構的特點:
- 基於SOA的架構思想,將重複公用的功能抽取爲組件,以服務的方式爲不同的系統提供服務。
- 不同系統與服務之間採用webservice,rpc等方式進行通信。
- ESB(Enterprise Service BUS)企業級服務總線作爲不同系統與服務之間的橋樑。
SOA架構的優點:
- SOA架構將重複的功能抽取爲服務,提高開發效率,提高系統的可重用性,可維護性。
- 可以針對不同服務的特點按需伸縮。
- 採用ESB減少系統中的接口耦合。
SOA架構的缺點:
- 系統和服務之間界限模糊,會導致抽取的服務的粒度過大,系統與服務之間耦合性高。
- 雖然使用ESB,但是服務的接口協議不固定,種類繁多,不利於系統維護。
五 微服務架構
基於SOA架構的思想,爲了滿足移動互聯網對大型項目及多客戶端的需求,對服務層進行細粒度的拆分,所拆分的每個服務只能完成某個特定的業務功能,如訂單服務只能實現定單相關的業務,用戶服務實現用戶管理相關的業務等等,服務的粒度很小,所以稱作微服務架構。
微服務架構的特點:
- 服務層按業務拆分爲一個一個微服務,每個微服務的職責單一。
- 微服務之間採用RESTful,RPC等輕量級協議傳輸。
- 有利於採用前後端分離架構。
微服務架構的優點:
- 微服務架構中的服務拆分粒度更細,有利於資源的重複利用,提高開發效率。
- 可以更加精準的指定每個服務的優化方案,按需伸縮。
- 適用於互聯網時代,產品迭代週期更短。
微服務架構缺點:
- 由於每個業務流程需要多個微服務通過網絡交互來完成,所以微服務架構系統開發的複雜度增加。
- 微服務過多,服務治理的成本高,不利於系統的維護。