從單體架構到微服務的演變之路

單體架構

1.描述:

  • 一個包含了應用全部功能的應用程序,咱們一般稱之爲 單體架構 。這是一種傳統的架構風格,好比經典三層架構(UI,BLL,DAL)就是一個單體架構

2.示例圖:

3.單體架構的特色:

  • 全部功能都集中在一個項目中。
  • 全部的功能打成一個war包部署到服務器。
  • 應用與數據庫分開部署
  • 經過集羣來提升服務器性能
  • 技術棧受到限制

war包是一個能夠直接運行的web模塊,一般用於網站,打成包部署到容器中web

4.單體架構的優勢

  • 單體架構簡單,前期開發成本低,週期短,小型項目首選

5.單體架構的缺點

  • 所有功能集中在一個項目中,隨着項目的變大,變的不易開發,擴展,維護
  • 提升服務器性能只能擴展集羣節點,成本過高

垂直架構

1.描述

  • 訪問量逐漸增大,單體架構單加集羣節點帶來服務器性能愈來愈小時,咱們一般將應用拆成互不相干的幾個應用,這就稱之爲 垂直架構

2.示例圖

3.垂直架構的特色

  • 以單體架構規模的項目爲單位進行垂直劃分項目,即將一個大項目拆分紅一個一個單體結構項目。
  • 項目與項目之間的存在數據冗餘,耦合性較大,好比上圖中三個項目都存在客戶信息。
  • 項目之間的接口多爲數據同步功能,如:數據庫之間的數據庫,經過網絡接口進行數據庫同步。

4.垂直架構的優勢

  • 項目架構簡單,前期開發成本低,週期短,小型項目的首選。
  • 經過垂直拆分,原來的單體項目不至於無限擴大。
  • 不一樣的項目可採用不一樣的技術。

5.垂直架構的缺點

  • 複雜應用的開發維護成本變高,部署效率逐漸下降。由於隨着業務功能的不斷膨脹,代碼全量編譯和部署一次所需的時間很是長。
  • 團隊協做效率差,部分公共功能重複開發,代碼重複率居高不下。
  • 系統可靠性變差。垂直架構將全部的應用模塊都部署到一個進程中,若是某個應用接口發生故障,例如內存泄漏,會致使整個節點宕機。

SOA架構

1.描述

  • SOA是 Service-Oriented Architecture 英文的縮寫,也就是 面向服務的架構 。

2.示例圖

3.SOA架構的特色

  • 基於SOA的架構思想將重複公用的功能抽取爲組件,以服務的方式給各各系統提供服務。
  • 各個項目(系統)與服務之間採用webservice、rpc等方式進行通訊。
  • ESB(企業服務總線)做爲項目與服務之間通訊的橋樑。

4.SOA架構的優勢

  • 將重複的功能抽取爲服務,提升開發效率,提升系統的可重用性、可維護性。
  • 能夠針對不一樣服務的特色制定集羣及優化方案。
  • 採用ESB減小系統中的接口耦合。

5.SOA架構的缺點

  • 系統與服務的界限模糊,不利於開發及維護。
  • 雖然使用了ESB,可是服務的接口協議不固定,種類繁多,不利於系統維護。
  • 抽取的服務的粒度過大,系統與服務之間耦合性高。

微服務架構

1.描述

  • 微服務架構 風格的開發方法,是以開發一組小型服務的方式來開發一個獨立的應用系統的。其中每一個小型服務都運行在本身的進程中,並常常採用HTTP資源API輕量的機制來相互通訊。

2.示例圖

 

3.微服務架構的特色

  • 將系統服務層徹底獨立出來,並將服務層抽取爲一個一個的微服務。
  • 微服務遵循單一原則(一個服務作一件事)。
  • 微服務之間採用RESTful等輕量協議傳輸。

4.微服務架構的優勢

  • 服務拆分粒度更細,有利於資源重複利用,提升開發效率。
  • 能夠更加精準的制定每一個服務的優化方案,提升系統可維護性。
  • 微服務架構採用去中心化思想,服務之間採用RESTful等輕量協議通訊,相比ESB更輕量。
  • 適用於互聯網時代,產品迭代週期更短。
  • 單個微服務啓動較快
  • 技術棧不受限

5.微服務架構的缺點

  • 微服務過多,服務治理成本高,不利於系統維護。
  • 分佈式系統開發的技術成本高(容錯、分佈式事務等),對團隊挑戰大。

總結:

  • 隨着互聯網行業的發展,架構的進化是必然的,固然,微服務並非終點,之後將會有更多的架構涌現出來,而目地都是爲了更好的解決所面臨的問題。
相關文章
相關標籤/搜索