
Spring Cloud
Spring Cloud 是一套完整的微服務解決方案,基于 Spring Boot 框架,準確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架集成進來,從而簡化了開發者的代碼量,
它利用 Spring Boot 的開發便利性簡化了分布式系統的開發,比如服務發現、服務網關、服務路由、鏈路追蹤等,Spring Cloud 并不重復造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從而減少了各模塊的開發成本,
一句話總結:Spring Cloud 提供了構建分布式系統所需的“全家桶”,
Spring Cloud核心組件

Spring Cloud Netflix 集成眾多Netflix的開源軟體:Eureka, Hystrix, Zuul, Archaius,組成了微服務的最重要的核心組件,這里主要介紹5大常用組件,
1.Eureka
Eureka 作為 Spring Cloud 框架的注冊中心,與之對應的是 Dubbo 框架的Zookeeper,

上圖簡要描述了Eureka的基本架構,由3個角色組成:
1)Service Provider: 暴露服務的服務提供方,
2)Service Consumer: 呼叫遠程服務的服務消費方,
3)EureKa Server: 服務注冊中心和服務發現中心,
2.Hystrix
熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力,
分布式系統環境下,服務間類似依賴非常常見,一個業務呼叫通常依賴多個別的服務,如下圖:

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

ServiceB依賴于ServiceC,由于ServiceC訪問量比較大,由于ServiceC掛了,很可能ServiceB也會被拖累掛,
同理上游的ServiceA還依賴于ServiceB,同樣也會被涉及,
最終一個服務失敗,導致整條鏈路的服務都失敗的情形,為造成大面積的服務雪崩效應,
這就給之前我們的大A股熔斷是一個道理,所以針對這種情況需要考慮引入Hystrix 熔斷機制,避免大面積雪崩等場景,
Hystrix 斷路器是一種開關裝置,當某個服務單元發生故障之后,通過斷路器的故障監控,向呼叫方回傳一個符合預期的、可處理的備選回應(FallBack),而不是長時間的等待或者拋出呼叫方無法處理的例外,這樣就保證了服務呼叫方不會長時間、不必要占用,從而避免了故障在分布式系統中的蔓延,乃至雪崩,
3.Netflix Zuul
Zuul是Spring Cloud全家桶中的微服務API網關,
所有從設備或網站來的請求都會經過Zuul到達后端的應用程式,作為一個邊界性質的應用程式,Zuul提供了動態路由、監控、彈性負載和安全功能,
簡單的話,Zuul 就是樓下保安亭的大爺,所有進入大樓的人,都需要大爺檢查,得到大爺的許可,我們可以通過一張圖理解,

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

5.Spring Cloud Config

實際作業中,我們可能會有幾十上百的微服務節點,每一個節點有需要有配置資訊,比如資料庫的連接,服務中心的地址等等,當中資訊變化的時候,我們可能面臨手動一臺一臺修改的囧境,為了解決上述問題,我們能否借鑒 Git 的思想,有一個標準的配置,當我們配置修改,我們只需要同步重繪一下即可,不用手動搬運呢?答案是有的,我們可以通過 Spring Cloud Config 達到同步更新配置資訊,
Spring Cloud架構實作
通過這張圖,可以比較清楚的了解到各組件配置使用運行機制:

1、請求統一通過API網關(Zuul)來訪問內部服務.
2、網關接收到請求后,從注冊中心(Eureka)獲取可用服務
3、由Ribbon進行均衡負載后,分發到后端具體實體
4、微服務之間通過Feign進行通信處理業務
5、Hystrix負責處理服務超時熔斷
6、Turbine監控服務間的呼叫和熔斷相關指標
微服務、Spring Cloud、Spring Boot三者關系
微服務是一種架構的理念,提出了微服務的設計原則,從理論為具體的技術落地提供了指導思想,
- SpringBoot專注于快速方便的開發單個個體微服務,
- SpringCloud是關注全域的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合并管理起來,
- 為各個服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全域鎖、精選決策、分布式會話等集成服務,
- SpringBoot可以離開SpringCloud獨立開發專案,但是SpringCloud離不開SpringBoot,屬于依賴關系,
- SpringBoot專注于快速、方便的開發單個微服務個體,SpringCloud關注全域的服務治理框架,

4年了,謝謝陪伴與支持,奉上Mike的最新《架構技術連載合集》,以及免費《大廠Java架構視頻資料》,私信666領取對應的學習資料!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/375778.html
標籤:其他
