最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cloud  Hystrix實現(xiàn)服務容錯的方法

 更新時間:2024年10月18日 14:26:57   作者:布說在見  
Hystrix是SpringCloud中重要的熔斷保護組件,由Netflix開源,主要提供延遲和容錯管理,以保障分布式系統(tǒng)的高可用性和魯棒性,通過封裝依賴項實現(xiàn)服務間隔離,引入回退邏輯應對依賴服務故障,有效防止系統(tǒng)崩潰和服務級聯(lián)故障

Hystrix概述:

作為Spring Cloud體系內(nèi)實現(xiàn)熔斷機制的關鍵組件,Hystrix承擔著服務容錯保護的重要職責。

它由Netflix開源,旨在為分布式系統(tǒng)提供延遲處理和容錯解決方案。

其核心作用在于引入延遲容忍與容錯邏輯,精細管理分布式服務間的交互,確保系統(tǒng)的高可用性和魯棒性。

在復雜分布式系統(tǒng)環(huán)境中,往往涉及數(shù)十個應用,這些應用依賴于多個項目。

不可避免地,每個依賴項目都有可能在某個時刻遭遇失敗并觸發(fā)故障。

若未對這些故障實施有效隔離措施,整個分布式系統(tǒng)可能面臨崩潰風險。

在分布式系統(tǒng)中,當某個環(huán)節(jié)出現(xiàn)延遲時,可能會阻塞整個用戶請求。

特別是在高流量情況下,后端依賴的延遲可能迅速導致全部服務資源在短短幾秒內(nèi)耗盡,從而無法處理后續(xù)請求,使應用發(fā)生故障。

更嚴重的是,這些問題還可能引發(fā)服務間延遲累積,占用備份隊列、線程等關鍵資源,觸發(fā)連鎖反應般的級聯(lián)故障。

為應對這些挑戰(zhàn),Hystrix應運而生。

它通過封裝每一個依賴項,實現(xiàn)它們之間的相互隔離。

一旦延遲發(fā)生,問題被限制在局部資源中,并包含回退邏輯,該邏輯決定在依賴失敗時應采取何種措施,確保系統(tǒng)的穩(wěn)定性。

第一個Hystrix程序

步驟1:創(chuàng)建父工程hystrix-1

將搭建的Eureka基本應用中的3個子項目都復制到hystrix-1父工程中,并依次添加為Maven項目。

在這里插入圖片描述

步驟2:改造服務提供者

在服務提供者eureka-provider中創(chuàng)建controller包,并在該包下創(chuàng)建HystrixController類,該類定義了一個demo ()方法,用于處理路徑為/demo的請求。

HystrixController類的內(nèi)容如下:

在這里插入圖片描述

步驟3:改造服務消費者為Hystrix客戶端

流程:

(1)添加Hystrix依賴

(2)添加@EnableHystrix注解

(3)創(chuàng)建Config配置類

(4)創(chuàng)建Service層類

(5)創(chuàng)建Controller層類

(1)添加Hystrix依賴

在項目eureka-consumer的pom文件中添加Hystrix的依賴如下:

在這里插入圖片描述

  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  </dependency>

添加后重新加載pom文件。

(2)添加@EnableHystrix注解

在啟動類EurekaConsumerApplication中添加@EnableHystrix注解啟動熔斷功能。
在這里插入圖片描述

(3)創(chuàng)建Config配置類

在eureka-consumer中創(chuàng)建config包,并在該包下創(chuàng)建類HystrixConfig。在HystrixConfig類中注入restTemplate的Bean對象。

(4)新建service包

在service包下新建LocalItemService類

在這里插入圖片描述

被@HystrixCommand注解修飾的demo()方法就啟動了Hystrix熔斷器的功能fallbackMethod屬性定義的是處理回退(fallback)邏輯的方法。如果必須在fallback邏輯方法中遠程調(diào)度其他服務,最好在遠程調(diào)度其他服務時,也加上熔斷器。

注:@Autowired注解不能運行時可換成@Resource注解,按Bean的名稱裝配。

(5)新建controller包

在controller包下新建LocalItemController類

在這里插入圖片描述

步驟4:項目測試

啟動服務并進行測試。依次啟動eureka-server,eureka-provider,eureka-consumer,在瀏覽器輸入http://localhost:7006/demo?name=布說,觀察瀏覽器顯示的效果。

在這里插入圖片描述

在這里插入圖片描述

關閉服務提供者eureka-provider,制造服務不可用的情形。再次請求 以上地址,觀察瀏覽器顯示的效果。

在這里插入圖片描述

在Feign中使用Hystrix

創(chuàng)建父工程hystrix-2,將上述中的3個子項目都復制到hystrix-2父工程中,并依次添加為Maven項目。

步驟1:開啟Hystrix熔斷

Feign自帶熔斷功能,默認情況下,熔斷功能是關閉的。如果要開啟熔斷,只需在配置文件中將hystrix.enabled設置為true即可。

開啟Hystrix熔斷功能。在eureka-consumer項目的配置文件application.yml中添加開啟熔斷的配置:

在這里插入圖片描述

注:因為在Feign的起步依賴中引入了Hystrix依賴,所以在Feign中使用Hystrix不需要引入任何的依賴,只需要在配置文件中開啟即可。

步驟2:開啟Feign Client功能

因為使用Feign組件調(diào)用,需要在eureka-consumer項目的pom文件中加入feign依賴。

在項目eureka-consumer的pom文件中添加Feign的依賴如下:

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>

添加后重新加載pom文件。

在eureka-consumer的啟動類中添加@EnableFeignClients開啟Feign Client功能。

在這里插入圖片描述

注:使用fallback屬性指定的用于處理回退邏輯的類,必須實現(xiàn)@FeignClient注解修飾的接口。

步驟3:修改項目中接口

在service包中新建失敗邏輯處理類LocalbushuoServiceImpl,并實現(xiàn)被@FeignClient修飾的LocalItemService接口。

在這里插入圖片描述

進入項目eureka-consumer,刪除掉之前的LocalItemService類。創(chuàng)建LocalItemService接口,并在上方的@FeignClient注解中,增加fallback屬性配置,指定LocalItemServiceImpl類為失敗邏輯處理類。

注:使用fallback屬性指定的用于處理回退邏輯的類,必須實現(xiàn)@FeignClient注解修飾的接口。

在這里插入圖片描述

步驟4:項目測試

啟動服務并進行測試。依次啟動eureka-server,eureka-provider,eureka-consumer,在瀏覽器輸入http://localhost:7006/demo?name=www,觀察瀏覽器顯示的效果。

在這里插入圖片描述

關閉服務提供者eureka-provider,制造服務不可用的情形。再次請求 以上地址,觀察瀏覽器顯示的效果。

在這里插入圖片描述

在這里插入圖片描述

問題

1.Hystrix 是怎么實現(xiàn)服務容錯的?

Hystrix 主要通過以下幾點實現(xiàn)服務容錯:

斷路器模式:當依賴服務頻繁失敗時,斷路器會打開,直接拒絕請求,防止系統(tǒng)因等待響應而耗盡資源。當服務恢復后,斷路器會進入半開狀態(tài),逐步恢復請求。(上述程序就是)

資源隔離:使用線程池或信號量隔離來限制依賴服務的請求,防止一個服務的問題影響到整個系統(tǒng)。
Fallback 機制:當依賴服務不可用時,提供一個備用響應(Fallback),確保請求不會完全失敗,而是返回一個默認值或備用結果。

超時與重試:設置請求超時時間,超出時間直接返回錯誤;對于臨時故障,可以配置重試機制。

2.什么是Hystrix ?

Hystrix 是一個由 Netflix 開發(fā)的開源庫,用于提高分布式系統(tǒng)的服務彈性和可靠性。它通過增加延遲容忍和容錯邏輯來防止級聯(lián)故障。

主要功能包括:

斷路器:監(jiān)測依賴服務的故障,當檢測到故障時,阻止請求發(fā)送到有問題的服務上,避免級聯(lián)故障。

資源隔離:使用線程池隔離或信號量隔離來限制服務調(diào)用的資源消耗,防止系統(tǒng)不穩(wěn)定。

Fallback 回退機制:配置備用響應(Fallback),當依賴服務故障時返回備用結果,確保請求不會完全失敗。

監(jiān)控與儀表盤:提供實時監(jiān)控數(shù)據(jù),如延遲和錯誤率,并通過 Hystrix Dashboard 展示,幫助監(jiān)控系統(tǒng)狀態(tài)。

Hystrix 常與 Spring Cloud 集成,用于構建高可用和高彈性的微服務架構。盡管 Netflix 已停止維護 Hystrix,但它在許多現(xiàn)有項目中仍然廣泛使用。

總結

每個微服務都需要獨立部署,管理多個環(huán)境和配置,這無疑增加了部署的復雜性。

由于系統(tǒng)由眾多微服務構成,一旦發(fā)生故障,定位問題的時間會相應增加,監(jiān)控和故障排查的難度也隨之增大。

此外,不同微服務對資源的需求各不相同,需要合理分配以避免資源浪費或不足。

到此這篇關于Spring Cloud Hystrix實現(xiàn)優(yōu)雅的服務容錯的文章就介紹到這了,更多相關Spring Cloud Hystrix服務容錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中泛型使用實例詳解

    Java中泛型使用實例詳解

    這篇文章主要介紹了Java中泛型使用實例詳解的相關資料,需要的朋友可以參考下
    2017-05-05
  • mybatis動態(tài)sql之Map參數(shù)的講解

    mybatis動態(tài)sql之Map參數(shù)的講解

    今天小編就為大家分享一篇關于mybatis動態(tài)sql之Map參數(shù)的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 詳解Java如何實現(xiàn)多線程步調(diào)一致

    詳解Java如何實現(xiàn)多線程步調(diào)一致

    本章節(jié)主要講解另外兩個線程同步器:CountDownLatch和CyclicBarrier的用法,使用場景以及實現(xiàn)原理,感興趣的小伙伴可以了解一下
    2023-07-07
  • jdk環(huán)境配置Maven環(huán)境配置實踐

    jdk環(huán)境配置Maven環(huán)境配置實踐

    文章介紹了如何配置JDK和Maven環(huán)境變量,并通過命令驗證配置是否成功,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-02-02
  • SpringBoot的Admin服務監(jiān)控詳解

    SpringBoot的Admin服務監(jiān)控詳解

    這篇文章主要介紹了SpringBoot的Admin服務監(jiān)控詳解,Spring Boot Admin(SBA)是一個開源的社區(qū)項目,用于管理和監(jiān)控 Spring Boot 應用程序,需要的朋友可以參考下
    2024-01-01
  • MyBatis SQL耗時監(jiān)控的最佳實踐

    MyBatis SQL耗時監(jiān)控的最佳實踐

    在性能優(yōu)化的道路上,SQL執(zhí)行時間往往是關鍵突破口,本文將從一個八年經(jīng)驗Java開發(fā)者的視角,帶你深入探索MyBatis SQL耗時監(jiān)控的最佳實踐,需要的朋友可以參考下
    2025-08-08
  • JAVA如何調(diào)用wsdl過程詳解

    JAVA如何調(diào)用wsdl過程詳解

    這篇文章主要介紹了JAVA如何調(diào)用wsdl過程詳解,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • SpringBoot自動裝配原理及過程解讀

    SpringBoot自動裝配原理及過程解讀

    文章解析SpringBoot自動裝配機制,結合SPI源碼分析與手寫Starter實踐,闡述如何通過ServiceLoader和SpringFactoriesLoader實現(xiàn)服務發(fā)現(xiàn)及動態(tài)配置加載,并利用條件注解@Conditional進行智能過濾,最終指導開發(fā)者自定義Starter并配置屬性提示
    2025-09-09
  • java Volatile與Synchronized的區(qū)別

    java Volatile與Synchronized的區(qū)別

    這篇文章主要介紹了java Volatile與Synchronized的區(qū)別,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • IDEA 的基本介紹使用及斷點調(diào)試技巧

    IDEA 的基本介紹使用及斷點調(diào)試技巧

    IDEA 是 JetBrains 公司的產(chǎn)品,總部位于捷克的首都布拉格,IDEA在業(yè)界被公認為最好的 Java 開發(fā)工具,今天通過本文給大家介紹IDEA 的基本介紹使用及斷點調(diào)試技巧,感興趣的朋友跟隨小編一起看看吧
    2021-11-11

最新評論

谢通门县| 垫江县| 鹤岗市| 商河县| 泰安市| 冕宁县| 佛冈县| 高陵县| 营山县| 尉氏县| 宝山区| 广宗县| 马龙县| 莱州市| 馆陶县| 越西县| 遂昌县| 景洪市| 枣庄市| 荃湾区| 恩施市| 乐安县| 讷河市| 镇远县| 平山县| 苍梧县| 上犹县| 铜川市| 衢州市| 鹤山市| 离岛区| 孙吴县| 宜丰县| 德保县| 桃园市| 什邡市| 洛浦县| 迁西县| 辽阳县| 东阳市| 华安县|