本文分為兩個部分:
-
Spring Cloud"全家桶"簡單介紹。
-
通過實際電商業務場景,讓你徹底明白Spring Cloud幾個核心元件的底層原理。
Spring Cloud介紹
SpringCloud是關注全域性的服務協調治理框架,它利用 Spring Boot 的開發便利性簡化了分散式系統基礎設施的開發,提供瞭如服務註冊與發現、負載均衡、配置中心、訊息匯流排、熔斷器、資料監控等等元件,都可以用 spring boot 的開發風格做到一鍵啟動部署,所以叫它”全家桶”。
SpringCloud 的核心元件有哪些?
(1) Eureka 服務註冊與發現中心(服務治理)。
(2) Ribbon 負載均衡器,服務間發起請求的時候,基於Ribbon做負載均衡,從一個服務的多臺機器中選擇一臺。
(3) Feign 基於動態代理的服務呼叫工具,可以讓我們通過定義介面的方式直接呼叫其他服務的API。
(4) Hystrix 用於服務之間遠端呼叫時的容錯保護,熔斷器就好比家裡電路裝置的“保險”,當電路斷路,那麼“保險”裝置的“保險絲”就會被熔斷,從而達到斷開電路的效果,以防止不良後果。而Spring Cloud Hystrix 實現了熔斷器,執行緒隔離等一些列的服務保護功能,當Hystrix判定請求出現故障,會立馬對請求做出響應動作,不會繼續執行正常請求邏輯,請求執行緒也不會處於阻塞狀態,從而有效防止雪崩效應。
(5) Zuul 是API閘道器,是客戶端請求的入口,負責鑑權,路由等功能。
(6) Gateway 是新推出的基於Spring 5的響應式閘道器。
(7) Config 用於統一的配置管理。
(8) Bus 訊息匯流排。
(9) Sleuth 用於請求鏈路跟蹤。
(10) Stream 用來為微服務應用構建訊息驅動能力。
電商業務場景分析
接下來,我將通過一個實際的電商業務場景來剖析一下Spring Cloud中幾個核心元件(Eureka、Ribbon、Feign、Hystrix、Zuul......)底層的工作原理。
業務場景介紹
電商網站中,當使用者提交訂單並支付的過程中需要執行如下操作:
-
將訂單狀態更新為“已支付”;
-
同時扣減對應的商品庫存;
-
隨後通知倉儲中心,進行發貨;
-
以及給使用者增加購物積分;
...... 支付訂單的業務流程結束。
上述流程中,設計到訂單服務、庫存服務、倉儲服務、積分服務之間的呼叫,呼叫過程如下圖:
整體業務架構圖如下:
接下來我將分成多篇文章,圍繞上面的電商業務場景來具體分析Spring Cloud微服務架構中,各元件(Eureka,Ribbon,Feign,Hystrix,Zuul)發揮的作用和其背後的原理,以及各元件間是如何相互協作的。
希望本文章對您有幫助,您的轉發、點贊是我的創作動力,十分感謝。
掃描下方二維碼關注我,您會收到更多優質文章推送。