一篇文章,讓你看懂 Spring Cloud

在這裏插入圖片描述

Spring Cloud

Spring Boot 讓我們從繁瑣的配置文件中解脫了出來,而 Spring Cloud,它我們提供了一整套的微服務解決方案,大大的降低了微服務開發的門檻,同時也減少了開發成本。

Spring Cloud 的組成

Spring Cloud 並不是特指某個框架,它其實是一系列成熟框架的組合,通過 Spring Boot 風格的封裝,屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、容易部署的分佈式系統開發工具包。

我們知道,在微服務開發中,以下的基礎設施是很有必要的:

  • 服務治理
  • 配置管理中心
  • 網關
  • 服務容錯
  • 服務消費者
  • 消息中間件
  • 分佈式服務追蹤
  • 安全
  • 微服務測試

以下是 Spring Cloud 體系所包含的框架示意圖:
在這裏插入圖片描述

基礎組件介紹

服務註冊與發現

服務註冊與發現是 Spring Cloud 中最核心的組件之一,整個系統中所有的服務都可以註冊到註冊中心,然後由註冊中心進行統一調度,方便後續的水平擴展以及故障轉移等。Spring Cloud 體系中的註冊中心有很多的實現方式(參考上圖),後續教程會一一介紹。

配置中心

隨着服務的不斷增多,同時每個服務也會有多個環境(開發環境、測試環境、生產環境等),每個環境的配置文件又會有所不同,但是其中又有許多配置是可以共用的,如果每個服務自己去管理這些配置,會給維護帶來很大的麻煩,這時候,我們就需要引入配置中心去統一管理這些配置。Spring Cloud 提供了 Spring Cloud Config 來完成這項任務,但是也有社區提供的比較好的實現,如攜程提供的 Apollo。但是,配置更新後怎樣通知到具體服務,這又是個問題,所以 Spring Cloud 還提供了 Spring Cloud Bus 組件,來進行服務間的通訊。

服務消費者

既然是微服務架構,那服務間的調用肯定是無法避免的,Spring Cloud 提供了 Ribbon 組件,它可以用來進行服務間的調用,同時,它還支持客戶端的負載均衡。但是,直接使用 Ribbon 不是很方便,所以,Spring Cloud 基於 Netflix Feign ,並整合了 Ribbon,這就有了 Spring Cloud OpenFeign,它實現了聲明式的服務調用客戶端,使得編寫 web 服務客戶端更加方便。

服務容錯

在微服務架構中,通常會有多個服務之間相互調用的情況,一旦某些基礎服務出現故障,則可能造成整個系統的不可用,稱之爲服務雪崩,爲了避免這種情況的發生,我們需要在服務出現故障時實現故障隔離和服務降級。針對這種情況,Spring Cloud 使用了 Hystrix 來實現服務的容錯。

網關

網關爲系統提供了路由、鑑權、監控、負載均衡等功能。Spring Cloud 爲此提供了兩個解決方案:Zuul 以及 Spring Cloud Gateway。

服務追蹤

在微服務架構中,服務之間的調用鏈會隨着服務的增多越來越複雜,當我們在排查某些問題以及監控服務間通訊的指標時,服務的追蹤就變得非常重要。Spring Cloud 提供的實現是:Spring Cloud Sleuth。

服務測試

因爲微服務架構的特性,每個服務都可能依賴其它的服務,而不同的服務可能是由不同的團隊去維護的,這樣當我們在測試某個服務時,需要將它依賴的服務都部署起來,成本非常大;而如果只是使用單元測試,需要 mock 非常多的數據,而且一旦依賴的服務接口改變了,單純只通過單元測試是無法感知的。所以有人就提出了 CDC (Consumer-Driver Contracts) 即 消費者驅動契約 的方式來進行測試。Spring Cloud Contract 就是 CDC的一種實現。

最後:

在這裏插入圖片描述

上面都是自己整理好的!我就把資料貢獻出來給有需要的人!順便求一波關注。學習我們是認真的,拿大廠offer是勢在必得的。

java交流羣點擊一下可以獲取更多相關資料哦!

作者:Docs4dev 鏈接:https://juejin.im/post/5d778cd45188255457502d2e