單體架構
1.描述:
- 一個包含了應用全部功能的應用程序,咱們一般稱之爲 單體架構 。這是一種傳統的架構風格,好比經典三層架構(UI,BLL,DAL)就是一個單體架構。
2.示例圖:
![](http://static.javashuo.com/static/loading.gif)
3.單體架構的特色:
- 全部功能都集中在一個項目中。
- 全部的功能打成一個war包部署到服務器。
- 應用與數據庫分開部署
- 經過集羣來提升服務器性能
- 技術棧受到限制
war包是一個能夠直接運行的web模塊,一般用於網站,打成包部署到容器中web
4.單體架構的優勢
- 單體架構簡單,前期開發成本低,週期短,小型項目首選
5.單體架構的缺點
- 所有功能集中在一個項目中,隨着項目的變大,變的不易開發,擴展,維護
- 提升服務器性能只能擴展集羣節點,成本過高
垂直架構
1.描述
- 訪問量逐漸增大,單體架構單加集羣節點帶來服務器性能愈來愈小時,咱們一般將應用拆成互不相干的幾個應用,這就稱之爲 垂直架構 。
2.示例圖
![](http://static.javashuo.com/static/loading.gif)
3.垂直架構的特色
- 以單體架構規模的項目爲單位進行垂直劃分項目,即將一個大項目拆分紅一個一個單體結構項目。
- 項目與項目之間的存在數據冗餘,耦合性較大,好比上圖中三個項目都存在客戶信息。
- 項目之間的接口多爲數據同步功能,如:數據庫之間的數據庫,經過網絡接口進行數據庫同步。
4.垂直架構的優勢
- 項目架構簡單,前期開發成本低,週期短,小型項目的首選。
- 經過垂直拆分,原來的單體項目不至於無限擴大。
- 不一樣的項目可採用不一樣的技術。
5.垂直架構的缺點
- 複雜應用的開發維護成本變高,部署效率逐漸下降。由於隨着業務功能的不斷膨脹,代碼全量編譯和部署一次所需的時間很是長。
- 團隊協做效率差,部分公共功能重複開發,代碼重複率居高不下。
- 系統可靠性變差。垂直架構將全部的應用模塊都部署到一個進程中,若是某個應用接口發生故障,例如內存泄漏,會致使整個節點宕機。
SOA架構
1.描述
- SOA是 Service-Oriented Architecture 英文的縮寫,也就是 面向服務的架構 。
2.示例圖
![](http://static.javashuo.com/static/loading.gif)
3.SOA架構的特色
- 基於SOA的架構思想將重複公用的功能抽取爲組件,以服務的方式給各各系統提供服務。
- 各個項目(系統)與服務之間採用webservice、rpc等方式進行通訊。
- ESB(企業服務總線)做爲項目與服務之間通訊的橋樑。
4.SOA架構的優勢
- 將重複的功能抽取爲服務,提升開發效率,提升系統的可重用性、可維護性。
- 能夠針對不一樣服務的特色制定集羣及優化方案。
- 採用ESB減小系統中的接口耦合。
5.SOA架構的缺點
- 系統與服務的界限模糊,不利於開發及維護。
- 雖然使用了ESB,可是服務的接口協議不固定,種類繁多,不利於系統維護。
- 抽取的服務的粒度過大,系統與服務之間耦合性高。
微服務架構
1.描述
- 微服務架構 風格的開發方法,是以開發一組小型服務的方式來開發一個獨立的應用系統的。其中每一個小型服務都運行在本身的進程中,並常常採用HTTP資源API輕量的機制來相互通訊。
2.示例圖
![](http://static.javashuo.com/static/loading.gif)
3.微服務架構的特色
- 將系統服務層徹底獨立出來,並將服務層抽取爲一個一個的微服務。
- 微服務遵循單一原則(一個服務作一件事)。
- 微服務之間採用RESTful等輕量協議傳輸。
4.微服務架構的優勢
- 服務拆分粒度更細,有利於資源重複利用,提升開發效率。
- 能夠更加精準的制定每一個服務的優化方案,提升系統可維護性。
- 微服務架構採用去中心化思想,服務之間採用RESTful等輕量協議通訊,相比ESB更輕量。
- 適用於互聯網時代,產品迭代週期更短。
- 單個微服務啓動較快
- 技術棧不受限
5.微服務架構的缺點
- 微服務過多,服務治理成本高,不利於系統維護。
- 分佈式系統開發的技術成本高(容錯、分佈式事務等),對團隊挑戰大。
總結:
- 隨着互聯網行業的發展,架構的進化是必然的,固然,微服務並非終點,之後將會有更多的架構涌現出來,而目地都是爲了更好的解決所面臨的問題。