淺談SpringCloud的主要組件

       SpringCloud作爲Spring家族中的一員,它將現在非常流行的一些技術整合到一起,實現了微服務中諸如:配置管理,服務發現,智能路由,負載均衡,熔斷器,控制總線,集羣狀態等等功能。其主要涉及的組件包括:

1.Eureka:註冊中心

2.Zuul:服務網關

3.Ribbon:負載均衡

4.Feign:服務調用

5.Hystix:熔斷器

如下圖所示爲組件中的調用的關係圖解:

Eureka註冊中心

簡述:

       Eureka就好比是一個公司的後臺,負責管理、記錄服務提供者的信息。我們只要將我們的微服務註冊到Eureka中去,我們的服務調用者在調用微服務的時候,就無需自己尋找服務,而是把自己的需求告訴Eureka,然後Eureka會把符合你需求的服務告訴你,從而完成微服務的調用。

圖解:

Eureka架構中的三個核心角色:

①服務註冊中心

Eureka的服務端應用,提供服務註冊和發現功能,就是剛剛我們建立的eureka-demo

②服務提供者

提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,只要對外提供的是Rest風格服務即可。

③服務消費者

消費應用從註冊中心獲取服務列表,從而得知每個服務方的信息,知道去哪裏調用服務方。

具體的案例請看:SpringCloud--構建高可用Eureka註冊中心

負載均衡Ribbon

簡述:

     Ribbon是我們SpringCould採用的一種負載均衡器,它的主要作用在於,當我們同一個功能的微服務開啓了很多個時,當我們需要調用微服務時所遵循的一種微服務調用的規則,這樣我們才能準確的調用響應的微服務。所以,只要我們爲Ribbon配置了提供服務者的同一類微服務的地址列表後,我們的Ribbon就可以基於某種負載均衡的算法自動的幫助服務事物消費者去請求服務。Ribbon默認的爲我們提供了輪循,隨機等負載均衡的算法,同時我們也可以自定義負載均衡的算法。

Hystrix熔斷器

簡述:

      熔斷器Hystrix是容錯管理工具,作用是通過隔離、控制服務從而對延遲和故障提供更強大的容錯能力,避免整個系統被拖垮。複雜分佈式架構通常都具有很多依賴,當一個應用高度耦合其他服務時非常危險且容易導致失敗,這種失敗很容易傷害服務的調用者,最後導致一一個接一個的連續錯誤,應用本身就處在被拖垮的風險中,最後失去控制,就像在一一個高流量的網站中,某個單一的後端一旦發生延遲,將會在數秒內導致所有應用資源被耗盡。如何處理這些問題是有關係統性能和效率的關鍵性問題。 當在系統高峯時期,大量對微服務的調用可能會堵塞遠程服務器的線程池,如果這個線程池沒有和主應用服務器的線程池隔離,就可能導致整個服務器掛機。 Hystrix使用自己的線程池,這樣和主應用服務器線程池隔離,如果調用花費很長時間,會停止調用,不同的命令或命令組能夠被配置使用它們各自的線程池,可以隔離不同的服務。

圖解:

正常工作的情況下,客戶端請求調用服務API接口:

當有服務出現異常時,直接進行失敗回滾,服務降級處理:

 

 Hystrix熔斷器主要的作用就是當我們的服務繁忙時,如果服務出現異常,不是粗暴的直接報錯,而是返回一個友好的提示,雖然拒絕了用戶的訪問,但是會返回一個結果。這就好比去買魚,平常超市買魚會額外贈送殺魚的服務。等到逢年過節,超時繁忙時,可能就不提供殺魚服務了,這就是服務的降級。系統特別繁忙時,一些次要服務暫時中斷,優先保證主要服務的暢通,一切資源優先讓給主要服務來使用,在雙十一、618時,京東天貓都會採用這樣的策略。

 

具體的案例請看:Hystrix熔斷器的使用

Feign服務的遠程調用

微服務架構中,微服務間調用的一個組件。

具體的案例請看:springcloud系列之feign服務間遠程調用

Zuul網關

簡述:

       Zuul是Netfix開源的微服務網關,它可以和Eureka、Ribbon、Hystrix 等組件配合使用。Zuul的核心是一-系列的過濾器,這些過濾器可以完成以下功能。

     ●身份認證與安全:識別每個資源的驗證要求,並拒絕那些與要求不符的請求。

     ●審查與監控:在邊緣位置追蹤有意義的數據和統計結果,從而帶來精確的生產視圖。

     ●動態路由:動態地將請求路由到不同的後端集羣。

     ●壓力測試:逐漸增加指向集羣的流量,以瞭解性能。

     ●負載分配:爲每一~種負載類型分配對應容量,並棄用超出限定值的請求。

     ●靜態響應處理:在邊緣位置直接建立部分響應,從而避免其轉發到內部集羣。

     ●多區域彈性:跨越AWS Region進行請求路由,旨在實現ELB ( Elastic Load Balancing )使用的多樣化,以及讓系統的邊緣更貼近系統的使用者。

圖解:

       不管是來自於客戶端(PC或移動端)的請求,還是服務內部調用。一切對服務的請求都會經過Zuul這個網關,然後再由網關來實現 鑑權、動態路由等等操作。Zuul就是我們服務的統一入口,即,我們可以通過Zuul網關實現微服務的統一調用。

具體的案例實現講解:關於微服務Zuul網關的詳細案例講解

 

謝謝大家閱讀學習,如有錯誤歡迎留言指正ha。


 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章