什么是Hystrix
Hystrix是一个用于处理分布式系统的延迟和容错系统的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,从而提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
1、服务降级
服务降级:当某个微服务的响应时间过长,或者不可用的情形下,不能直接的将错误的信息返回出来,或者一直阻塞,需要准备一个对应的策略来直接处理这种请求,不能一直阻塞。
2、服务熔断
服务熔断:所谓服务熔断就是当某个微服务调用多次出现问题的时候,Hystrix就会采取熔断机制,不在继续调用方法(默认是5秒钟内和电路断路一样,5秒钟后会试探性的先关闭熔断机制,但是如果继续失败,又会进行熔断机制)
3、服务限流
服务限流:服务限流就是限制某个微服务的使用量,Hystrix通过线程池的方式来管理微服务调用,默认是一个线程池管理所有的微服务。
实际案例
1、maven配置
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
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