1.熔断
当HystrixCommand请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务,断路器保持在开路状态一段时间后(默认5秒),自动切换到半开路状态(HALF-OPEN),这时会判断下一次请求的返回情况, 如果请求成功, 断路器切回闭路状态(CLOSED),否则重新切换到开路状态(OPEN)
2.Fallback(降级)
Fallback相当于是降级操作. 服务降级是指当请求后端服务出现异常的时候, 可以使用fallback方法返回的值.
3.资源隔离
将请求封装在HystrixCommand中,然后这些请求在一个独立的线程中执行,每个依赖服务维护一个小的线程池(或信号量),在调用失败或超时的情况下可以断开依赖调用或者返回指定逻辑.
4.限流
限流就是信号量隔离(一般不会使用该模式)
配置文件加入配置:
#打开Feign的Hystrix熔断功能 feign: hystrix: enabled: true 复制代码
FeignClient调用服务:
@Component @FeignClient(value = "spring-cloud-eureka-pro",fallback = FeignServiceHystrix.class) public interface FeignService { @RequestMapping(value = "/hi") public String hiService(@RequestParam(value = "name") String name); } 复制代码
Fallback 回调类:
@Component public class FeignServiceHystrix implements FeignService{ @Override public String hiService(@RequestParam(value = "name")String name) { return "hi" +name+", this is failed messge"; } } 复制代码
测试,首先启动注册中心,provider,consumer
访问consumer 的hi2方法
此时正常调用服务
将provider停掉,然后再次访问
由于此时启用了熔断功能,所以调用服务失败之后进入fallback
如果将熔断功能关闭的话,此时应该是返回调用异常的信息
#打开Feign的Hystrix熔断功能 feign: hystrix: enabled: false 复制代码
在通过第三方客户端访问(通常是通过网络)依赖服务出现高延迟或者失败时,为系统提供保护和控制
在分布式系统中防止级联失败
快速失败(Fail fast)同时能快速恢复
提供失败回退(Fallback)和优雅的服务降级机制
提供近实时的监控、报警和运维控制手段