SpringCloud Hystrix 图形界面搭建服务降级,服务熔断,服务限流,介绍,代码

git地址:https://github.com/Netflix/Hystrix

目前hystrix已经进入维护模式了,官方建议用resilience4j    

重要概念(理论):

服务降级(fallback):

例如:服务器忙,请稍后再试,不让客户端等待,并立刻返回一个友好提示,fallback

哪些情况会发出降级:   (返回一个好看的界面,友好的提示,并不是乱码之类的)

1、程序运行异常

2、超时

3、服务熔断触发服务降级

4、线程池/信号量打满也会导致服务降级

服务熔断(break):

类比保险丝达到最高访问之后,直接拒绝访问,拉闸,等待叫用服务降级方法并返回友好提示

服务限流(flowlimit):

秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,一秒钟N个,有序进行



案例代码

服务降级代码,首先开启Hystrix,然后去配置兜底方法,出现异常也会进入兜底方法,fallbackMethod

熔断案例

相当于在10秒内*(请求窗口期设置)访问次数10次,有百分之60的请求失败了,就开启熔断,拉闸。也就是10秒内10次请求6次失败就打开熔断器。

熔断器有三种状态   

OPEN打开,HREF OPEN半开,CLOSE关闭

@HystrixProperty(name = "circuitBreaker.enabled", value = "true"),/* 是否开启断路器*/
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),// 请求次数
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"), // 时间窗口期
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60"),// 失败率达到多少后跳闸

注解参数可以去这个地方找到去相关配置 

 

限流案例

图形化界面:

pom.xml 依赖  (注意:一定要有spring-boot-starter-actuator依赖做图形化界面

<dependencies>
        <!--新增hystrix dashboard   仪表盘监控-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <!--图形化设置 要是要有Dashboard界面就一要-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</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>

application.yml

server:
  port: 9001

主启动类加上注解  

@EnableHystrixDashboard

/**
     * 注意:新版本Hystrix需要在主启动类中指定监控路径
     * 此配置是为了服务监控而配置,与服务容错本身无关,spring cloud升级后的坑
     * ServletRegistrationBean因为springboot的默认路径不是"/hystrix.stream",
     * 只要在自己的项目里配置上下面的servlet就可以了
     *
     * @return ServletRegistrationBean
     */
    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);

        // 一启动就加载
        registrationBean.setLoadOnStartup(1);
        // 添加url
        registrationBean.addUrlMappings("/hystrix.stream");
        // 设置名称
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }

猜你喜欢

转载自blog.csdn.net/weixin_46310452/article/details/126256652