中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Springcloud怎么熔斷hystrix服務

發布時間:2020-12-07 14:30:41 來源:億速云 閱讀:167 作者:Leah 欄目:開發技術

這篇文章給大家介紹利用Springcloud怎么熔斷hystrix服務,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1.主啟動類加上新的注解。

@EnableCircuitBreaker

2.service寫入新的熔斷控制方法

@Service
public class PaymentHystrixService {
 @HystrixCommand(fallbackMethod = "paymentCircuitBreaker_fallback",commandProperties = {
      @HystrixProperty(name = "circuitBreaker.enabled", value = "true"),       //是否開啟斷路器
      @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),  //請求數達到后才計算
      @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"), //休眠時間窗
      @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60"), //錯誤率達到多少跳閘
  })
  public String paymentCirtuitBreaker(@PathVariable("id")Integer id){
   if(id<0){
     throw new RuntimeException("****id不能為負數");
   }
   String randomNum= IdUtil.simpleUUID();

   return Thread.currentThread().getName()+"\t"+"調用成功,編號"+randomNum;

  }
  public String paymentCircuitBreaker_fallback(@PathVariable("id")Integer id){
    return "id不能為負數,請稍后重試,o(╥﹏╥)o+"+id;
  }

此處hystrixCommand注解即是對熔斷的一些限制,一般是在10秒內進行10次有60%的訪問錯誤率就會進行熔斷,自動啟動備用的方法,默認5秒后有 正確的執行結果就會慢慢恢復正常狀態,關閉斷路器。

3.dashboard

為了能夠更加直觀的看見服務訪問的一些情況,配置下可視化的網頁觀察熔斷。

新建dashboard工程。

pom文件依賴

<dependencies>
    <dependency>
      <groupId>com.bai</groupId>
      <artifactId>cloud-api-common</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
    </dependency>
    <!--監控-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
    <!--eureka client-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <!--熱部署-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

主啟動類

@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboard9001 {
  public static void main(String[] args) {
    SpringApplication.run(HystrixDashboard9001.class,args);
  }
}

yml配置下端口即可。

訪問地址

http://localhost:9001/hystrix/

利用Springcloud怎么熔斷hystrix服務

對于被監控的服務需要額外的配置。新版本會有報錯需要在啟動類加上如下配置。

/**
     * 此配置是為了服務監控而配置,與服務容錯本身無關,springcloud升級后的坑
     * ServletRegistrationBean因為SpringBoot的默認路徑不是 “/hystrix.stream"
     * 只要在自己的項目里配置上下的servlet就可以了
     */
    @Bean
    public ServletRegistrationBean getServlet() {
      HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet() ;
      ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
      registrationBean.setLoadOnStartup(1);
      registrationBean.addUrlMappings("/hystrix.stream");
      registrationBean.setName("HystrixMetricsStreamServlet");
      return registrationBean;
    }

關于利用Springcloud怎么熔斷hystrix服務就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开鲁县| 霍林郭勒市| 芜湖县| 门源| 连平县| 龙岩市| 深泽县| 庄浪县| 通江县| 济阳县| 新巴尔虎右旗| 罗源县| 阿拉善左旗| 余庆县| 牡丹江市| 日土县| 霍城县| 兰西县| 庄河市| 兰溪市| 木兰县| 广宗县| 扎鲁特旗| 江源县| 曲阜市| 巴南区| 竹溪县| 上饶县| 高平市| 洛浦县| 阳西县| 池州市| 南京市| 麻栗坡县| 华亭县| 通许县| 阳曲县| 正阳县| 宁蒗| 来安县| 盐边县|