Spring Cloud的5大核心組件詳解


Spring Cloud

Spring Cloud 是一套完整的微服務解決方案,基於 Spring Boot 框架,准確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架集成進來,從而簡化了開發者的代碼量。

它利用 Spring Boot 的開發便利性簡化了分布式系統的開發,比如服務發現、服務網關、服務路由、鏈路追蹤等。Spring Cloud 並不重復造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從而減少了各模塊的開發成本。

一句話總結:Spring Cloud 提供了構建分布式系統所需的“全家桶”。

Spring Cloud核心組件

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

Spring Cloud Netflix 集成眾多Netflix的開源軟件:Eureka, Hystrix, Zuul, Archaius,組成了微服務的最重要的核心組件,這里主要介紹5大常用組件。

1.Eureka

Eureka 作為 Spring Cloud 框架的注冊中心,與之對應的是 Dubbo 框架的Zookeeper。

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

上圖簡要描述了Eureka的基本架構,由3個角色組成:

1)Service Provider: 暴露服務的服務提供方。

2)Service Consumer:調用遠程服務的服務消費方。

3)EureKa Server: 服務注冊中心和服務發現中心。

2.Hystrix

熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。

分布式系統環境下,服務間類似依賴非常常見,一個業務調用通常依賴多個別的服務,如下圖:

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

如果各個服務正常運行,那大家齊樂融融,但是如果其中一個服務Service C崩壞掉會出現什么樣的情況呢?如下圖:

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

ServiceB依賴於ServiceC,由於ServiceC訪問量比較大,由於ServiceC掛了,很可能ServiceB也會被拖累掛。

同理上游的ServiceA還依賴於ServiceB,同樣也會被涉及。

最終一個服務失敗,導致整條鏈路的服務都失敗的情形,為造成大面積的服務雪崩效應。

這就給之前我們的大A股熔斷是一個道理,所以針對這種情況需要考慮引入Hystrix 熔斷機制,避免大面積雪崩等場景。

Hystrix 斷路器是一種開關裝置,當某個服務單元發生故障之后,通過斷路器的故障監控,向調用方返回一個符合預期的、可處理的備選響應(FallBack),而不是長時間的等待或者拋出調用方無法處理的異常,這樣就保證了服務調用方不會長時間、不必要占用,從而避免了故障在分布式系統中的蔓延,乃至雪崩。

3.Netflix Zuul

Zuul是Spring Cloud全家桶中的微服務API網關。

所有從設備或網站來的請求都會經過Zuul到達后端的應用程序。作為一個邊界性質的應用程序,Zuul提供了動態路由、監控、彈性負載和安全功能。

簡單的話,Zuul 就是樓下保安亭的大爺,所有進入大樓的人,都需要大爺檢查,得到大爺的許可。我們可以通過一張圖理解。

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

4.Ribbon

Zuul默認和Ribbon結合實現了負載均衡的功能,Ribbon就可基於某種負載均衡算法,自動地幫助服務消費者去請求。

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

5.Spring Cloud Config

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

實際工作中,我們可能會有幾十上百的微服務節點,每一個節點有需要有配置信息,比如數據庫的連接,服務中心的地址等等,當中信息變化的時候,我們可能面臨手動一台一台修改的囧境。為了解決上述問題,我們能否借鑒 Git 的思想,有一個標准的配置,當我們配置修改,我們只需要同步刷新一下即可,不用手動搬運呢?答案是有的,我們可以通過 Spring Cloud Config 達到同步更新配置信息。

Spring Cloud架構實現

通過這張圖,可以比較清楚的了解到各組件配置使用運行機制:

Spring Cloud的5大核心組件詳解-mikechen的互聯網架構

1、請求統一通過API網關(Zuul)來訪問內部服務.

2、網關接收到請求后,從注冊中心(Eureka)獲取可用服務

3、由Ribbon進行均衡負載后,分發到后端具體實例

4、微服務之間通過Feign進行通信處理業務

5、Hystrix負責處理服務超時熔斷

6、Turbine監控服務間的調用和熔斷相關指標

 

微服務、Spring Cloud、Spring Boot三者關系

微服務是一種架構的理念,提出了微服務的設計原則,從理論為具體的技術落地提供了指導思想。

  1.  SpringBoot專注於快速方便的開發單個個體微服務。
  2.  SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,
  3.  為各個服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、精選決策、分布式會話等集成服務。
  4.  SpringBoot可以離開SpringCloud獨立開發項目,但是SpringCloud離不開SpringBoot,屬於依賴關系。
  5.  SpringBoot專注於快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM