SpringBoot2.x系列教程19-SpringCloud组件-Hystrix

什么是Hystrix


Hystrix是一个用于处理分布式系统的延迟和容错系统的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,从而提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

1、服务降级

服务降级:当某个微服务的响应时间过长,或者不可用的情形下,不能直接的将错误的信息返回出来,或者一直阻塞,需要准备一个对应的策略来直接处理这种请求,不能一直阻塞。

2、服务熔断

服务熔断:所谓服务熔断就是当某个微服务调用多次出现问题的时候,Hystrix就会采取熔断机制,不在继续调用方法(默认是5秒钟内和电路断路一样,5秒钟后会试探性的先关闭熔断机制,但是如果继续失败,又会进行熔断机制)

3、服务限流

服务限流:服务限流就是限制某个微服务的使用量,Hystrix通过线程池的方式来管理微服务调用,默认是一个线程池管理所有的微服务。

实际案例

1、maven配置


    org.springframework.cloud
    spring-cloud-starter-netflix-hystrix

2、熔断、降级处理

   @GetMapping("/test/hystrix")
    @HystrixCommand(fallbackMethod = "isHystrix")
    public String getHystrix() {
        int i = 10/0;
        return "Hystrix success";
    }


    public String isHystrix() {
        return "Hystrix fail";
    }

3、主启动类添加注解@EnableHystrix

测试

http://localhost:9002//test/hystrix

你可能感兴趣的:(springcloud,java,spring)