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

Spring Cloud  Hystrix實(shí)現(xiàn)服務(wù)容錯(cuò)的方法

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

Hystrix概述:

作為Spring Cloud體系內(nèi)實(shí)現(xiàn)熔斷機(jī)制的關(guān)鍵組件,Hystrix承擔(dān)著服務(wù)容錯(cuò)保護(hù)的重要職責(zé)。

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

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

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

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

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

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

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

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

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

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

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

第一個(gè)Hystrix程序

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

將搭建的Eureka基本應(yīng)用中的3個(gè)子項(xiàng)目都復(fù)制到hystrix-1父工程中,并依次添加為Maven項(xiàng)目。

在這里插入圖片描述

步驟2:改造服務(wù)提供者

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

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

在這里插入圖片描述

步驟3:改造服務(wù)消費(fèi)者為Hystrix客戶端

流程:

(1)添加Hystrix依賴

(2)添加@EnableHystrix注解

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

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

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

(1)添加Hystrix依賴

在項(xiàng)目eureka-consumer的pom文件中添加Hystrix的依賴如下:

在這里插入圖片描述

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

添加后重新加載pom文件。

(2)添加@EnableHystrix注解

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

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

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

(4)新建service包

在service包下新建LocalItemService類

在這里插入圖片描述

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

注:@Autowired注解不能運(yùn)行時(shí)可換成@Resource注解,按Bean的名稱裝配。

(5)新建controller包

在controller包下新建LocalItemController類

在這里插入圖片描述

步驟4:項(xiàng)目測試

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

在這里插入圖片描述

在這里插入圖片描述

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

在這里插入圖片描述

在Feign中使用Hystrix

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

步驟1:開啟Hystrix熔斷

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

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

在這里插入圖片描述

注:因?yàn)樵贔eign的起步依賴中引入了Hystrix依賴,所以在Feign中使用Hystrix不需要引入任何的依賴,只需要在配置文件中開啟即可。

步驟2:開啟Feign Client功能

因?yàn)槭褂肍eign組件調(diào)用,需要在eureka-consumer項(xiàng)目的pom文件中加入feign依賴。

在項(xiàng)目eureka-consumer的pom文件中添加Feign的依賴如下:

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

添加后重新加載pom文件。

在eureka-consumer的啟動(dòng)類中添加@EnableFeignClients開啟Feign Client功能。

在這里插入圖片描述

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

步驟3:修改項(xiàng)目中接口

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

在這里插入圖片描述

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

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

在這里插入圖片描述

步驟4:項(xiàng)目測試

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

在這里插入圖片描述

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

在這里插入圖片描述

在這里插入圖片描述

問題

1.Hystrix 是怎么實(shí)現(xiàn)服務(wù)容錯(cuò)的?

Hystrix 主要通過以下幾點(diǎn)實(shí)現(xiàn)服務(wù)容錯(cuò):

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

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

超時(shí)與重試:設(shè)置請求超時(shí)時(shí)間,超出時(shí)間直接返回錯(cuò)誤;對于臨時(shí)故障,可以配置重試機(jī)制。

2.什么是Hystrix ?

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

主要功能包括:

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

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

Fallback 回退機(jī)制:配置備用響應(yīng)(Fallback),當(dāng)依賴服務(wù)故障時(shí)返回備用結(jié)果,確保請求不會完全失敗。

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

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

總結(jié)

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

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

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

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

相關(guān)文章

  • Java中泛型使用實(shí)例詳解

    Java中泛型使用實(shí)例詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

    SpringBoot自動(dòng)裝配原理及過程解讀

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

    java Volatile與Synchronized的區(qū)別

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

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

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

最新評論

柳林县| 通渭县| 德昌县| 黎平县| 阿拉善盟| 广安市| 广南县| 恩施市| 天气| 锦屏县| 都兰县| 宁河县| 沅陵县| 乌拉特中旗| 泸溪县| 柏乡县| 稷山县| 怀化市| 元氏县| 轮台县| 读书| 斗六市| 神农架林区| 揭东县| 东海县| 枝江市| 西城区| 长丰县| 江阴市| 南陵县| 城固县| 虹口区| 北安市| 滕州市| 北流市| 饶平县| 东明县| 城口县| 渑池县| 榕江县| 营山县|