軟件架構的演變-單體架構,垂直架構,分佈式架構,SOA架構和微服務架構的演變歷程

軟件架構的發展經歷了從單體架構、垂直架構、SOA架構到微服務架構的過程,作爲一個80年代的程序員,今天燕青跟大家說說具體的經歷。

單體架構

Web應用程序發展的早期,大部分web工程師將所有的功能模塊打包到一起並放在一個web容器中運行,所有功能模塊使用同一個數據庫。

下圖是一個單體架構的電商系統:
在這裏插入圖片描述
特點:

1、所有的功能集成在一個項目工程中。

2、所有的功能打在一個war包部署到服務器。

3、通過部署應用集羣和數據庫集羣來提高系統的性能。

優點:

1、項目架構簡單,前期開發成本低,週期短,小型項目的首選。

2、開發效率高,模塊之間交互採用本地方法調用。

3、容易部署,運維成本小,直接打包爲一個完整的包,拷貝到web容器的某個目錄下即可運行。

4、容易測試:IDE都是爲開發單個應用設計的、容易測試——在本地就可以啓動完整的系統。

缺點:

1、全部功能集成在一個工程中,對於大型項目不易開發、擴展及維護。

2、版本迭代速度逐漸變慢,修改一個地方就要將整個應用全部編譯、部署、啓動,開發及測試周期過長。

3、無法按需伸縮,通過集羣的方式來實現水平擴展,無法針對某業務按需伸縮。

分佈式架構

針對單體架構的不足,爲了適應大型項目的開發需求,許多公司將一個單體系統按業務垂直拆分爲若干系統,系統之間通過網絡交互來完成用戶的業務處理,每個系統可分佈式部署,這種架構稱爲分佈式架構。

在這裏插入圖片描述
特點:

1、按業務垂直拆分成一個一個的單體系統,此架構也稱爲垂直架構。

2、系統與系統之間的存在數據冗餘,耦合性較大,如上圖中三個項目都存在客戶信息。

3、系統之間的接口多爲實現數據同步,如上圖中三個項目要同步客戶信息。

優點:

1、通過垂直拆分,每個子系統變成小型系統,功能簡單,前期開發成本低,週期短。

2、每個子系統可按需伸縮。

3、每個子系統可採用不同的技術。

缺點:

1、子系統之間存在數據冗餘、功能冗餘,耦合性高。

2、按需伸縮粒度不夠,對同一個子系統中的不同的業務無法實現,比如訂單管理和用戶管理。

SOA架構

SOA是一種面向服務的架構,基於分佈式架構,它將不同業務功能按服務進行拆分,並通過這些服務之間定義良好的接口和協議聯繫起來。
在這裏插入圖片描述
特點:

1、基於SOA的架構思想,將重複公用的功能抽取爲組件,以服務的方式向各各系統提供服務。

2、各各系統與服務之間採用webservice、rpc等方式進行通信。

3、ESB企業服務總線作爲系統與服務之間通信的橋樑。

優點:

1、將重複的功能抽取爲服務,提高開發效率,提高系統的可重用性、可維護性。

2、可以針對不同服務的特點按需伸縮。

3、採用ESB減少系統中的接口耦合。

缺點:

1、系統與服務的界限模糊,會導致抽取的服務的粒度過大,系統與服務之間耦合性高。

2、雖然使用了ESB,但是服務的接口協議不固定,種類繁多,不利於系統維護。

微服務架構

基於SOA架構的思想,爲了滿足移動互聯網對大型項目及多客戶端的需求,對服務層進行細粒度的拆分,所拆分的每個服務只完成某個特定的業務功能,比如訂單服務只實現訂單相關的業務,用戶服務實現用戶管理相關的業務等等,服務的粒度很小,所以稱爲微服務架構。
在這裏插入圖片描述
特點:

1、服務層按業務拆分爲一個一個的微服務。

2、微服務的職責單一。

3、微服務之間採用RESTful、RPC等輕量級協議傳輸。

4、有利於採用前後端分離架構。

優點:

1、服務拆分粒度更細,有利於資源重複利用,提高開發效率。

2、可以更加精準的制定每個服務的優化方案,按需伸縮。

3、適用於互聯網時代,產品迭代週期更短。

缺點:

1、開發的複雜性增加,因爲一個業務流程需要多個微服務通過網絡交互來完成。

2、微服務過多,服務治理成本高,不利於系統維護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章