亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

springcloud hystrix(監控、熔斷、降級)

發布時間:2020-08-03 21:28:26 來源:網絡 閱讀:3175 作者:獨孤環宇 欄目:開發技術

spring cloud hystrix

簡介

hystrix通過服務隔離、熔斷(也可以稱為斷路)、降級等手段控制依賴服務的延遲與失敗。

netflix hystrix

本篇中主要講解對spring cloud 對hystrix的集成,至于如何單獨使用hystrix可以參考我分享的pdf.

spring cloud hystrix

引入依賴

-----------------------------------------------------------------

<!--hystrix-->

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-hystrix</artifactId>

    </dependency>

    <!--hystrix-dashboard 監控-->

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>

    </dependency>

---------------------------------------------

spring-cloud-starter-hystrix 核心jar

spring-cloud-starter-hystrix-dashboard 監控jar

EnableCircuitBreaker

使用EnableCircuitBreaker或者 EnableHystrix 表明Spring boot工程啟用hystrix,兩個注解是等價的.

Application.Java

--------------------------------------------------------------------

package com.lkl.springcloud.hystrix;


import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;

import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;


@SpringBootApplication

@EnableCircuitBreaker

@EnableHystrixDashboard

public class Application {


    public static void main(String[] args) {

        new SpringApplicationBuilder(Application.class).web(true).run(args);

    }

}

----------------------------------------------------------------------

其中EnableHystrixDashboard注解表示啟動對hystrix的監控,后面會用到

隨后模擬一個調用三方依賴服務

controller-> service -> dependency service

---------------------------------------------------------------------

package com.lkl.springcloud.hystrix.controller;


import com.lkl.springcloud.hystrix.service.HystrixService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;


/**

 * 模擬一個對外的接口

 */

@RestController

public class HystrixController {


    @Autowired

    private HystrixService service;

    /**

     * 調用依賴的服務

     */

    @RequestMapping("/call")

    public String callDependencyService(){

        return service.callDependencyService();

    }

}

-------------------------------------------------------------------

package com.lkl.springcloud.hystrix.service;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;


/**

 * 依賴服務

 */

@Service

public class HystrixService {


    @Autowired

    private CallDependencyService dependencyService;

    public String callDependencyService() {

        return dependencyService.mockGetUserInfo();

    }

}

-----------------------------------------------------------------------

package com.lkl.springcloud.hystrix.service;


import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

import org.springframework.stereotype.Component;


import java.util.Random;


/**

 * 調用依賴服務,通過hystrix包裝調用服務

 */

@Component

public class CallDependencyService {


    private Random random = new Random();

    /**

     * 模擬獲取用戶信息(通過網絡調用)

     * @return

     */

    @HystrixCommand(fallbackMethod = "fallback")

    public String mockGetUserInfo(){

        int randomInt= random.nextInt(10) ;

        if(randomInt<8){  //模擬調用失敗情況

            throw new RuntimeException("call dependency service fail.");

        }else{

            return "UserName:liaokailin;number:"+randomInt;

        }

    }


    public String fallback(){

        return "some exception occur call fallback method.";

    }

}

------------------------------------------------------------------------------

HystrixCommand 表明該方法為hystrix包裹,可以對依賴服務進行隔離、降級、快速失敗、快速重試等等hystrix相關功能 
該注解屬性較多,下面講解其中幾個

  • fallbackMethod 降級方法

  • commandProperties 普通配置屬性,可以配置HystrixCommand對應屬性,例如采用線程池還是信號量隔離、熔斷器熔斷規則等等

  • ignoreExceptions 忽略的異常,默認HystrixBadRequestException不計入失敗

  • groupKey() 組名稱,默認使用類名稱

  • commandKey 命令名稱,默認使用方法名

Dashboard

運行工程,可以訪問 http://localhost:9090/hystrix.stream 獲取dashboard信息,默認最大打開5個終端獲取監控信息,可以增加delay參數指定獲取監控數據間隔時間

直接訪問hystrix.stream肯定是不明智的,官方提供監控hystrix-dashboard-#.#.#.war包,下載后放入tomcat中,得到如下界面 
springcloud hystrix(監控、熔斷、降級)springcloud hystrix(監控、熔斷、降級)

輸入http://localhost:9090/hystrix.stream 點擊 Monitor stream 進入Dashboard界面

訪問 http://localhost:/9090/call 觀察進入Dashboard變化 
springcloud hystrix(監控、熔斷、降級)springcloud hystrix(監控、熔斷、降級)

ok ~ it’s work ! more about is here


Hystrix如何解決依賴隔離

1:Hystrix使用命令模式HystrixCommand(Command)包裝依賴調用邏輯,每個命令在單獨線程中/信號授權下執行。

2:可配置依賴調用超時時間,超時時間一般設為比99.5%平均時間略高即可.當調用超時時,直接返回或執行fallback邏輯。

3:為每個依賴提供一個小的線程池(或信號),如果線程池已滿調用將被立即拒絕,默認不采用排隊.加速失敗判定時間。

4:依賴調用結果分:成功,失敗(拋出異常),超時,線程拒絕,短路。 請求失敗(異常,拒絕,超時,短路)時執行fallback(降級)邏輯。

5:提供熔斷器組件,可以自動運行或手動調用,停止當前依賴一段時間(10秒),熔斷器默認錯誤率閾值為50%,超過將自動運行。

6:提供近實時依賴的統計和監控


向AI問一下細節

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

AI

那曲县| 枣强县| 皋兰县| 庆安县| 乌鲁木齐市| 黔西| 辽阳市| 牡丹江市| 灵璧县| 延长县| 烟台市| 读书| 衡阳县| 湟源县| 马鞍山市| 洛浦县| 寿阳县| 宝丰县| 浦城县| 漯河市| 谷城县| 通许县| 莱阳市| 仪征市| 政和县| 辽阳县| 娱乐| 桐梓县| 革吉县| 怀化市| 泰和县| 石家庄市| 环江| 梁平县| 蕲春县| 凌源市| 车险| 长沙县| 石嘴山市| 龙山县| 青河县|