首頁 >Java >Java基礎 >Spring Cloud七大元件是什麼

Spring Cloud七大元件是什麼

青灯夜游
青灯夜游原創
2021-04-25 17:43:5223023瀏覽

Spring Cloud七大元件:1、Eureka元件,描述了服務如何進行註冊,註冊到哪裡;2、Ribbon元件;3、Feign元件,一個聲明web服務客戶端;4、Hystrix元件; 5、Config組件;6、Zuul組件;7、Bus組件。

Spring Cloud七大元件是什麼

本教學操作環境:windows7系統、java8版、DELL G3電腦。

Spring Cloud全家桶組件

在介紹Spring Cloud 全家桶之前,首先要介紹一下Netflix ,Netflix 是一個很棒的公司,在Spring Cloud專案中佔著重要的作用,Netflix 公司提供了包括Eureka、Hystrix、Zuul、Archaius等在內的許多元件,在微服務架構中至關重要,Spring在Netflix 的基礎上,封裝了一系列的元件,命名為:Spring Cloud Eureka、Spring Cloud Hystrix、Spring Cloud Zuul等,下邊對各個元件進行分別得介紹:

(1)Spring Cloud Eureka

#我們使用微服務,微服務的本質還是各種API介面的調用,那麼我們怎麼產生這些介面、產生了這些介面之後如何進行調用那?如何進行管理哪?

答案就是Spring Cloud Eureka,我們可以將自己定義的API 介面註冊到Spring Cloud Eureka上,Eureka負責服務的註冊於發現,如果學習過Zookeeper的話,就可以很好的理解,Eureka的角色和Zookeeper的角色差不多,都是服務的註冊和發現,構成Eureka體系的包括:服務註冊中心、服務提供者、服務消費者。

Spring Cloud七大元件是什麼

上圖中描述了(圖片來自網路):

1、兩台Eureka服務註冊中心構成的服務註冊中心的主從複製叢集;
2、然後服務提供者向註冊中心進行註冊、續約、離線服務等;
3、服務消費者Eureka註冊中心拉去服務清單並維護在本地(這也是客戶端發現模式的機制體現!);
4、然後服務消費者根據從Eureka服務註冊中心取得的服務清單選取一個服務提供者進行消費服務。

(2)Spring Cloud Ribbon

在上Spring Cloud Eureka描述了服務如何進行註冊,註冊到哪裡,服務消費者如何取得服務生產者的服務訊息,但是Eureka只是維護了服務生產者、註冊中心、服務消費者三者之間的關係,真正的服務消費者調用服務生產者提供的數據是透過Spring Cloud Ribbon來實現的。

在(1)中提到了服務消費者是將服務從註冊中心獲取服務生產者的服務清單並維護在本地的,這種客戶端發現模式的方式是服務消費者選擇合適的節點進行存取服務生產者提供的數據,這種選擇合適節點的過程就是Spring Cloud Ribbon完成的。

Spring Cloud Ribbon客戶端負載平衡器由此而來。

(3)Spring Cloud Feign

上述(1)、(2)中我們已經使用最簡單的方式實現了服務的註冊發現和服務的調用操作,如果具體的使用Ribbon呼叫服務的話,你就可以感受到使用Ribbon的方式還是有一些複雜,因此Spring Cloud Feign應運而生。

Spring Cloud Feign 是一個聲明web服務客戶端,這使得編寫Web服務客戶端更容易,使用Feign 建立一個介面並對它進行註解,它具有可插拔的註解支援包括Feign註解與JAX-RS註解,Feign也支援可插拔的編碼器與解碼器,Spring Cloud 增加了對Spring MVC的註解,Spring Web 預設使用了HttpMessageConverters, Spring Cloud 整合Ribbon 和Eureka 提供的負載平衡的HTTP客戶端Feign 。

簡單的可以理解為:Spring Cloud Feign 的出現使得Eureka和Ribbon的使用更為簡單。

(4)Spring Cloud Hystrix

我們在(1)、(2)、(3)中知道了使用Eureka進行服務的註冊和發現,使用Ribbon實作服務的負載平衡調用,也知道了使用Feign可以簡化我們的編碼。但是,這些還不足以實現一個高可用的微服務架構。

例如:當有一個服務出現了故障,而服務的呼叫方不知道服務出現故障,若此時呼叫放的請求不斷的增加,最後就會等待故障的依賴方對應形成任務的積壓,最終導致自身服務的癱瘓。

Spring Cloud Hystrix正是為了解決這種情況的,防止對某一故障服務持續進行存取。 Hystrix的意思是:斷路器,斷路器本身是一種開關裝置,用於我們家庭的電路保護,防止電流的過載,當線路中有電器發生短路的時候,斷路器能夠及時切換故障的電器,防止發生過載、發熱甚至起火等嚴重後果。

(5)Spring Cloud Config

對於微服務還不是很多的時候,各種服務的配置管理起來還相對簡單,但是當成百上千的微服務節點起來的時候,服務配置的管理變得會變得複雜。

分散式系統中,由於服務數量龐大,為了方便服務設定檔統一管理,即時更新,所以需要分散式設定中心元件。在Spring Cloud中,有分散式配置中心元件Spring Cloud Config ,它支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git倉庫。在Cpring Cloud Config 元件中,分成兩個角色,一個是Config Server,二是Config Client。

Config Server用於配置屬性的存儲,儲存的位置可以為Git倉庫、SVN倉庫、本機檔案等,Config Client用於服務屬性的讀取。

Spring Cloud七大元件是什麼

(6)Spring Cloud Zuul

#我們使用Spring Cloud Netflix中的Eureka實現了服務註冊中心以及服務註冊與發現;而服務間透過Ribbon或Feign實現服務的消費以及平衡負載;透過Spring Cloud Config實現了應用多環境的外部化配置以及版本管理。為了讓服務群集更為健壯,使用Hystrix的融斷機制來避免在微服務架構中個別服務出現異常時所造成的故障蔓延。

Spring Cloud七大元件是什麼

先來說說這樣架構需要做的一些事兒以及存在的不足:

1、首先,破壞了服務無狀態特點。為了確保對外服務的安全性,我們需要實現對服務存取的權限控制,而開放服務的權限控制機制將會貫穿並污染整個開放服務的業務邏輯,這會帶來的最直接問題是,破壞了服務叢集中REST API無狀態的特性。從具體開發和測試的角度來說,在工作中除了要考慮實際的業務邏輯之外,還需要額外可續對介面存取的控制處理。

2、其次,無法直接重複使用既有介面。當我們需要對一個即有的集群內存取接口,實現外部服務訪問時,我們不得不透過在原有接口上增加校驗邏輯,或增加一個代理調用來實現權限控制,無法直接復用原有的接口。
面對類似上面的問題,我們要如何解決呢?以下進入本文的正題:服務網關!

為了解決上面這些問題,我們需要將權限控制這樣的東西從我們的服務單元中抽離出去,而最適合這些邏輯的地方就是處於對外訪問最前端的地方,我們需要一個更強大一些的平衡負載器,它就是本文將來介紹的:服務閘道。

服務閘道是微服務架構中一個不可或缺的部分。透過服務閘道統一向外系統提供REST API的過程中,除了具備服務路由、平衡負載功能之外,它還具備了權限控制等功能。 Spring Cloud Netflix中的Zuul就擔任了這樣的一個角色,為微服務架構提供了前門保護的作用,同時將權限控制這些較重的非業務邏輯內容遷移到服務路由層面,使得服務集群主體能夠具備更高的可重複使用性和可測試性。

(7)Spring Cloud Bus

在(5)Spring Cloud Config中,我們知道的設定檔可以透過Config Server儲存到Git等地方,透過Config Client進行讀取,但是我們的設定檔不可能是一直不變的,當我們的設定檔放生變化的時候如何進行更新哪?

一種最簡單的方式重新一下Config Client進行重新獲取,但Spring Cloud絕對不會讓你這樣做的,Spring Cloud Bus正是提供一種操作使得我們在不關閉服務的情況下更新我們的配置。

Spring Cloud Bus官方意義:訊息總線。

當然動態更新服務設定只是訊息匯流排的一個用處,還有很多其他用途。

Spring Cloud七大元件是什麼

總結

Spring Cloud 的元件還不止這些,透過上邊的口水話的介紹,應該可以大致有一定的了解,但是每一個組件的功能遠不止上述介紹的那些,每一個組件還有很多其他的功能點,這裡的介紹希望能夠帶大家入個門,不要對微服務這個這麼大的概念有所畏懼。

更多程式相關知識,請造訪:程式設計影片! !

以上是Spring Cloud七大元件是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn