Spring Cloud 微服務---演變歷程
Spring Cloud 演變歷程:
單體架構–>垂直架構–>SOA架構–>spring cloud 微服務
1.1:單體架構
特點: 1、所有的功能整合在一個專案工程中。 2、所有的功能打一個war包部署到伺服器。 3、應用與資料庫分開部署。 4、通過部署應用叢集和資料庫叢集來提高系統的效能。
優點: 1、專案架構簡單,前期開發成本低,週期短,小型專案的首選。
缺點: 1、全部功能整合在一個工程中,對於大型專案不易開發、擴充套件及維護。 2、系統性能擴充套件只能通過擴充套件叢集結點,成本高、有瓶頸。 3、技術棧受限。 4、系統啟動慢,一個程序包含了所有業務邏輯,涉及模組過多。
1.2:垂直架構
特點: 1、以單體結構規模的專案為單位進行垂直劃分專案即將一個大專案拆分成一個一個單體結構專案。 2、專案與專案之間的存在資料冗餘,耦合性較大,比如上圖中三個專案都存在客戶資訊。 3、專案之間的介面多為資料同步功能,如:資料庫之間的資料庫,通過網路介面進行資料庫同步。 優點: 1、專案架構簡單,前期開發成本低,週期短,小型專案的首選。 2、通過垂直拆分,原來的單體專案不至於無限擴大。 3、不同的專案可採用不同的技術。 缺點: 1、全部功能整合在一個工程中,對於大型專案不易開發、擴充套件及維護。 2、系統性能擴充套件只能通過擴充套件叢集結點,成本高、有瓶頸。
1.3:SOA架構:
特點: 1、基於SOA的架構思想將重複公用的功能抽取為元件,以服務的方式給各各系統提供服務。 2、各各專案(系統)與服務之間採用webservice、rpc等方式進行通訊。 3、ESB企業服務匯流排作為專案與服務之間通訊的橋樑。 優點: 1、將重複的功能抽取為服務,提高開發效率,提高系統的可重用性、可維護性。 2、可以針對不同服務的特點制定叢集及優化方案。 3、採用ESB減少系統中的介面耦合。 缺點: 1、系統與服務的界限模糊,不利於開發及維護。 2、雖然使用了ESB,但是服務的介面協議不固定,種類繁多,不利於系統維護。 3、抽取的服務的粒度過大,系統與服務之間耦合性高。
1.4:微服務架構
特點: 1、將系統服務層完全獨立出來,並將服務層抽取為一個一個的微服務。 2、微服務遵循單一原則。 3、微服務之間採用RESTful等輕量協議傳輸。
優點: 1、服務拆分粒度更細,有利於資源重複利用,提高開發效率。 2、可以更加精準的制定每個服務的優化方案,提高系統可維護性。 3、微服務架構採用去中心化思想,服務之間採用RESTful等輕量協議通訊,相比ESB更輕量。 4、適用於網際網路時代,產品迭代週期更短。 缺點: 1、微服務過多,服務治理成本高,不利於系統維護。 2、分散式系統開發的技術成本高(容錯、分散式事務等),對團隊挑戰大。 3.服務太多,不利於負載均衡,高可用, 4.資料庫太多,不利於分散式事務控制
1.5 什麼是微服務
為適應企業的業務發展,提高軟體研發的生產力,降低軟體研發的成本,軟體架構也作了升級和優
化,將一個獨立的系統拆分成若干小的服務,每個小服務執行在不同的程序中,服務與服務之間採用
http 輕量協議(比如流行的RESTful)傳輸資料,每個服務所擁有的功能具有獨立性強、高內聚的特
點,這樣的設計就實現了單個服務的高內聚,服務與服務之間的低耦合效果,這一個一個的小服務就
是微服務,基於這種方法設計的系統架構即微服務架構。