日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringCloud-容错处理Hystrix熔断器

發布時間:2025/3/21 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud-容错处理Hystrix熔断器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:微服務架構應用的特點就是多服務,而服務層之間通過網絡進行通信,從而支撐起整個應用系統,所以,各個微服務之間不可避免的存在耦合依賴關系。但任何的服務應用實例都不可能永遠的健康或網絡不可能永遠的都相安無事,所以一旦某個服務或局部業務發生了故障,會導致系統的不可用,我們知道當故障累積到一定程度就會造成系統層面的災害,也就是級聯故障,也叫雪崩效應,所以微服務需要在故障累計到上限之前阻止或疏通這些故障以保證系統的穩固安全,在市面上已經有很多這樣的框架來解決這樣的問題,如Twitter的Finagle、Netflix的Hystrix和Google的Stubby等,下面就簡單介紹下Hystrix和Hystrix在SpringCloud中的應用。

一、Hystrix簡介
  Hystrix(https://github.com/Netflix/Hystrix)是由Netflix開源的一個延遲和容錯庫,用于隔離訪問遠程系統、服務或者第三方庫,防止級聯失敗,從而提升系統的可用性、容錯性與局部應用的彈性,是一個實現了超市機制和斷路器模式的工具類庫。

二、Hystrix如何解決依賴隔離

1、包裹請求:使用HystrixCommand包裹對依賴的調用邏輯,每個命令在獨立的線程中執行,使用了設計模式中的“命令模式”;
  2、跳閘機制:當某服務的錯誤率超過一定閾值時,Hystrix可以自動或者手動跳閘,停止請求該服務一段時間;
  3、資源隔離:Hystrix為每個依賴都維護了一個小型的線程池(或者信號量)。如果該線程已滿,則發向該依賴的請求就會被立即拒絕,而不是排隊等候,從而加速失敗判定;
  4、監控:Hystrix可以近乎實時地監控運行指標和配置的變化,例如成功、失敗、超時、以及被拒絕的請求等;
  5、回退機制:當請求失敗、超時、被拒絕,或當斷路器打開時,執行回退邏輯,回退邏輯由開發人員自行提供,如返回一個缺省值;
  6、自我修復:斷路器打開一段時間后,會自動進入“半開”狀態,此時斷路器可允許一個請求訪問依賴的服務,若請求成功,則斷路器關閉,否則斷路器轉為“打開”狀態;
  
三、Hystrix在SpringCloud中的簡單應用
1、簡單整合Hystrix(在這部分會用到Ribbon測試的相關項目)
  ①、創建基于Eureka和Ribbon的服務端 eureka-ribbon-server和兩個客戶端生產者 eureka-ribbon-client2、消費者:復制項目eureka-ribbon-client,將AritfactId修改為eureka-hystrix-client;

②、在消費者中添加依賴:

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

③、在啟動類ClientApplication上添加@EnableHystrix或@EnableCircuitBreaker;

④、修改HystrixController,在其中添加getUser方法,并添加熔斷回調方法注解及回調方法:

@HystrixCommand(fallbackMethod = "getDefaultUser") @RequestMapping("/getUser") public String getUser() { return restTemplate.getForObject("http://client-87/getUser", String.class); } private String getDefaultUser() { System.out.println("熔斷,默認回調函數"); return "{\"username\":\"admin\",\"age\":\"-1\"}"; }

⑤、分別啟動eureka-ribbon-server、eureka-ribbon-client2、eureka-hystrix-client,調用localhost:8765/getUser,如圖:


 關于Hystrix的配置屬性,可以自行測試了解:https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica#configuration

而我們如何知道hystrix是否開啟,可以通過SpringBoot Actuator組件查看,注意:出發回調并不是hystrix打開,他的狀態還處在關閉,若失敗率達到閾值(默認為5秒內20次失敗)后才會打開;

2、基于Feign使用Hystrix
  通常情況下的Hystrix是通過注解@HystrixCommand的fallbackMethod屬性實現回調的,而在Feign中,由于Feign是用借口實現的聲明式Rest,所以Hystrix的通用方法在這里就不適用于Feign了,實際上在Feign與SpringCloud的依賴庫中已經默認的將Hystrix加入其中了,如圖:

那么,該怎么實現呢?

將上面通用Hystrix的項目中的消費者模塊修改為,由于feign中已經集成了hystrix類庫,所以就不需要重復導入了:
  pom.xml:

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

application.properties屬性配置文件:

server.port=8762 spring.application.name=client-8762 #默認feign的hystrix為關閉狀態 feign.hystrix.enabled=true eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

啟動類添加@EnableFeignClients,控制層通過注入feign的接口去完成聲明式調用:

feign的接口:

package com.cn.feign;import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; //接口類上加入的注解中添加屬性fallback,指定回調類 @FeignClient(name = "CLIENT-87",fallback = FeignClientFallback.class) public interface UserFeign {@RequestMapping("/getUser")public String getUser();}

創建回調類:

package com.cn.feign;import org.springframework.stereotype.Component;/*** @Description: 回調實現類* @Param:* @return: * @Author: * @Date: 2018/6/19 */ @Component class FeignClientFallback implements UserFeign {@Overridepublic String getUser() {System.out.println("熔斷,默認回調函數");return "{\"username\":\"admin\",\"age\":\"-1\"}";} }

2.測試結果如下:

在未關閉生產者服務實例時:

總結

以上是生活随笔為你收集整理的SpringCloud-容错处理Hystrix熔断器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 秋霞视频一区二区 | 欧美另类色| 成人午夜又粗又硬又大 | 国产精品国产精品国产专区蜜臀ah | 色悠悠视频 | 91搞| 国产成人精品视频一区二区 | 毛片9| 欧美黄色一区 | 韩国日本在线观看 | 白浆一区 | 国产亚洲精久久久久久无码苍井空 | 99精品免费 | 国产视频欧美视频 | 97精品久久 | 久久精品韩国 | 污污在线免费观看 | 国产十八熟妇av成人一区 | 韩国成人在线视频 | 情侣作爱视频网站 | 五月天综合激情 | 亚洲激情自拍偷拍 | 97视频在线看 | 一区二区三区av夏目彩春 | 黄色网址www | 亚洲男人av| 欧美三p | 精品视频一区二区三区 | 4虎tv| 男女猛烈无遮挡 | 蜜桃视频在线入口www | 激情五月五月婷婷 | 国产综合一区二区 | 91九色丨porny丨肉丝 | 人人澡澡人人 | 久久亚洲影院 | 国产刺激对白 | www.狠狠插 | 精品一区中文字幕 | 亚洲天堂手机在线 | 大桥未久中文字幕 | 亚洲tv在线观看 | 欧美乱大交 | 久久合合 | 国产精品麻豆一区二区三区 | 一级片www | 国产成人在线电影 | 黄色大片网站 | 黄色一级片在线 | 亚洲精品在线网站 | 性色av蜜臀av浪潮av老女人 | 欧美天天视频 | 久久久亚洲av波多野结衣 | 爱情岛亚洲品质自拍极速福利网站 | 美女被到爽高潮视频 | 阿的白色内裤hd中文 | 久久精品久久精品久久 | 三年大全国语中文版免费播放 | 姐姐你真棒插曲快来救救我电影 | 天堂网国产 | 一级毛片黄片 | 深夜的私人秘书 | 日本激情视频在线观看 | 国产精品久久久久久人 | 日本视频网 | 日韩欧美四区 | 日本韩国欧美在线 | 免费啪视频| 国产高清在线精品 | 成人欧美一区 | 欧美日韩激情在线观看 | 国产二区视频在线观看 | 久久狠狠高潮亚洲精品 | 日韩免费高清 | 中出 在线| 一区福利 | 五十路在线 | 久久新网址 | 亚洲精品小视频在线观看 | 丝袜美腿亚洲综合 | 精品国产99一区二区乱码综合 | 国产r级在线 | 国内自拍视频网站 | 50度灰在线 | 国产精品麻豆一区二区三区 | 一区二区三区激情视频 | 中文字幕Av日韩精品 | 老妇女玩小男生毛片 | 国产一区二区自拍 | 亚洲一区二区小说 | 国产三区av | 国产乱子伦视频一区二区三区 | 亚洲丁香色| 日本精品免费一区二区三区 | 男人操女人下面 | av秋霞 | 成人夜色| 国产中文在线 | 久久久久久久亚洲 |