什么是微服務?
微服務是一種架構風格,它要求我們在開發一個應用的時候,這個應用必須構建成一系列小服務的組合;可以通過http的方式進行互通。要說微服務架構,先得說說過去我們的單體應用架構。
單體應用架構
所謂單體應用架構(all in one)是指,我們將一個應用的中的所有應用服務都封裝在一個應用中。
無論是ERP、CRM或是其他什么系統,你都把數據庫訪問,web訪問,等等各個功能放到一個war包內。
-
這樣做的好處是,易於開發和測試;也十分方便部署;當需要擴展時,只需要將war復制多份,然后放到多個服務器上,再做個負載均衡就可以了。
-
微服務架構
all in one的架構方式,我們把所有的功能單元放在一個應用里面。然后我們把整個應用部署到服務器上。如果負載能力不行,我們將整個應用進行水平復制,進行擴展,然后在負載均衡。
所謂微服務架構,就是打破之前all in one的架構方式,把每個功能元素獨立出來。把獨立出來的功能元素的動態組合,需要的功能元素才去拿來組合,需要多一些時可以整合多個功能元素。所以微服務架構是對功能元素進行復制,而沒有對整個應用進行復制。
這樣做的好處是:
-
節省了調用資源。
-
每個功能元素的服務都是一個可替換的、可獨立升級的軟件代碼。
Martin Flower 於 2014 年 3 月 25 日寫的《Microservices》,詳細的闡述了什么是微服務。
如何構建微服務
一個大型系統的微服務架構,就像一個復雜交織的神經網絡,每一個神經元就是一個功能元素,它們各自完成自己的功能,然后通過http相互請求調用。比如一個電商系統,查緩存、連數據庫、瀏覽頁面、結賬、支付等服務都是一個個獨立的功能服務,都被微化了,它們作為一個個微服務共同構建了一個龐大的系統。如果修改其中的一個功能,只需要更新升級其中一個功能服務單元即可。
但是這種龐大的系統架構給部署和運維帶來很大的難度。於是,spring為我們帶來了構建大型分布式微服務的全套、全程產品:
-
構建一個個功能獨立的微服務應用單元,可以使用springboot,可以幫我們快速構建一個應用;
-
大型分布式網絡服務的調用,這部分由spring cloud來完成,實現分布式;
-
在分布式中間,進行流式數據計算、批處理,我們有spring cloud data flow。
-
spring為我們想清楚了整個從開始構建應用到大型分布式應用全流程方案。