架構發展之微服務

 

Spring Cloud是一個集成了衆多開源的框架,利用Spring Boot的開發便利性實現了服務治理、服務註冊與發現、負載均衡、數據監控,REST API發佈方式等,基本囊括了分佈式框架所需要的所有功能。是一套易開放、易部署、易維護的分佈式開發工具包。在詳細的瞭解Spring Cloud中所使用的各個組件之前,我們先了解下微服務框架的前世今生。
  • 架構發展史

    單體架構——>垂直架構——>soa面向服務架構——>微服務架構

單體架構 
在網站開發的前期,項目面臨的流量相對較少,單一應用可以實現我們所需要的功能,從而減少開發、部署和維護的難度。這種用於簡單的增刪改查的數據訪問框架(ORM)十分的重要。 
這裏寫圖片描述 
垂直應用架構 
當用戶訪問量不斷的提升,單一應用需要不斷的增加服務器來應對,同時將單一的應用拆分成多個應用用來處理提升效率。這種用於加速Web前端加載的Web框架(MVC)起到了關鍵性的作用。 
在這一階段往往會將系統分爲不同的層級,每個層級有對應的職責,UI層負責和用戶進行交互、業務邏輯層負責具體的業務功能、數據庫層負責和上層進行數據交換和存儲。 
這裏寫圖片描述

在這一階段我們最常使用到的開發框架就是Spring(業務邏輯層管理POJO)+Struts(web層前置服務控制)+Hibernate(數據庫層持久化)。
  •  

服務化架構 
伴隨着企業服務量的不斷提升,MVC框架的部署導致系統的負重越來越多,無法滿足併發的要求,系統間數據、報文的傳輸會出現頻繁的丟失。這時候我們需要考慮服務化的架構(SOA)。SOA表示面向服務的架構。將應用根據不同的職責劃分成不同的模塊(類似於企業劃分不同的事業部),不同的模塊使用特定的調用協議(RPC)和接口進行交互。 
這樣使整個系統切分成很多單個組件服務來完成請求,當流量過大時通過水平擴展相應的組件來支撐,所有的組件通過交互來滿足整體的業務需求。 
SOA服務化的優點是,它可以根據需求通過網絡對鬆散耦合的粗粒度應用組件進行分佈式部署、組合和使用。 
服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人爲依賴性。 
服務化架構是一套松耦合的架構,服務的拆分原則是服務內部高內聚,服務之間低耦合。 
這裏寫圖片描述 
在這個階段可以使用WebService或者dubbo來服務治理。 
微服務架構 
微服務架構算是SOA架構的一種拓展,主要關注的是服務個體的獨立性、拆分粒度更小。相對於SOA架構來說,微服務擁有以下優勢: 
微服務強調更深層次的組件化和服務化,每個微服務都可以擁有獨立的運行空間,確保每一個服務組件可以作爲單獨的產品進行發佈。 
微服務拋棄了傳統SOA笨重的企業服務總線,對外發布強調使用HTTP REST API的接口發佈形式。 
微服務拆分粒度更小

微服務的使用場景

        需求層面:

        公司發展到一定規模,需求變化頻繁,並且研發團隊達到10人左右

        性能層面:

        對響應時間要求不苛刻的系統,比如:電商系統 

        數據一致性層面:

        儘量避免分佈式事務問題,對數據一致性不太高可保證最終一致性     

  微服務的目的

        項目快速迭代

        項目持續交付   

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