spring cloud 是一套完整的微服務解決方案,基於 spring boot 框架,準確的說,它不是乙個框架,而是乙個大的容器,它將市面上較好的微服務框架整合進來,從而簡化了開發者的**量。
它利用 spring boot 的開發便利性簡化了分布式系統的開發,比如服務發現、服務閘道器、服務路由、鏈路追蹤等。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
熔斷器,容錯管理工具,旨在通過熔斷機制控**務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。
分布式系統環境下,服務間類似依賴非常常見,乙個業務呼叫通常依賴多個別的服務,如下圖:
serviceb依賴於servicec,由於servicec訪問量比較大,由於servicec掛了,很可能serviceb也會被拖累掛。
同理上游的servicea還依賴於serviceb,同樣也會被涉及。
最終乙個服務失敗,導致整條鏈路的服務都失敗的情形,為造成大面積的服務雪崩效應。
這就給之前我們的大a股熔斷是乙個道理,所以針對這種情況需要考慮引入hystrix 熔斷機制,避免大面積雪崩等場景。
hystrix 斷路器是一種開關裝置,當某個服務單元發生故障之後,通過斷路器的故障監控,向呼叫方返回乙個符合預期的、可處理的備選響應(fallback),而不是長時間的等待或者丟擲呼叫方無法處理的異常,這樣就保證了服務呼叫方不會長時間、不必要占用,從而避免了故障在分布式系統中的蔓延,乃至雪崩。
3.netflix zuul
zuul是spring cloud全家桶中的微服務api閘道器。
所有從裝置或**來的請求都會經過zuul到達後端的應用程式。作為乙個邊界性質的應用程式,zuul提供了動態路由、監控、彈性負載和安全功能。
簡單的話,zuul 就是樓下保安亭的大爺,所有進入大樓的人,都需要大爺檢查,得到大爺的許可。我們可以通過一張圖理解。
zuul預設和ribbon結合實現了負載均衡的功能,ribbon就可基於某種負載均衡演算法,自動地幫助服務消費者去請求。
實際工作中,我們可能會有幾十上百的微服務節點,每乙個節點有需要有配置資訊,比如資料庫的連線,服務中心的位址等等,當中資訊變化的時候,我們可能面臨手動一台一台修改的囧境。為了解決上述問題,我們能否借鑑 git 的思想,有乙個標準的配置,當我們配置修改,我們只需要同步重新整理一下即可,不用手動搬運呢?答案是有的,我們可以通過 spring cloud config 達到同步更新配置資訊。
通過這張圖,可以比較清楚的了解到各元件配置使用執行機制:
1、請求統一通過api閘道器(zuul)來訪問內部服務.
2、閘道器接收到請求後,從註冊中心(eureka)獲取可用服務
3、由ribbon進行均衡負載後,分發到後端具體例項
4、微服務之間通過feign進行通訊處理業務
5、hystrix負責處理服務超時熔斷
6、turbine監控服務間的呼叫和熔斷相關指標
微服務是一種架構的理念,提出了微服務的設計原則,從理論為具體的技術落地提供了指導思想。
springboot專注於快速方便的開發單個個體微服務。
springcloud是關注全域性的微服務協調整理治理框架,它將springboot開發的乙個個單體微服務整合並管理起來,
為各個服務之間提供,配置管理、服務發現、斷路器、路由、微**、事件匯流排、全域性鎖、精選決策、分布式會話等整合服務。
springboot可以離開springcloud獨立開發專案,但是springcloud離不開springboot,屬於依賴關係。
springboot專注於快速、方便的開發單個微服務個體,springcloud關注全域性的服務治理框架。
SpringCloud簡介與5大常用元件
springcloud springcloud是微服務架構的集大成者,將一系列優秀的元件進行了整合。基於springboot構建,對我們熟悉spring的程式設計師來說,上手比較容易。通過一些簡單的註解,我們就可以快速的在應用中配置一下常用模組並構建龐大的分布式系統。springcloud的元件相當...
Spring cloud 五大元件
1.zuul 閘道器 2.eureka 註冊中心 3.ribbon 負載均衡 4.feign 服務呼叫 5.hystix 熔斷器 1.zuul閘道器 動態路由 為什麼會出現乙個zuul閘道器?因為我們所用的微服務的框架,寫好的每乙個服務可以通過外面直接請求,這樣的話對外暴露會有安全性的問題。那麼怎麼...
SpringCloud五大核心元件
微服務 springcloud 很多朋友想學習 spring cloud 微服務技術,但又不知道如何著手,本篇將對 spring cloud 微服務的五大核心元件進行介紹!1 netflix eureka 服務發現,註冊中心 同源技術 1.consul 2.nacos 阿里的 既可以做服務註冊也可以...