1. Hystrix介绍
Hystrix是处理依赖隔离的框架,将出现故障的服务通过熔断、降级等手段隔离开来
,这样不影响整个系统的主业务
Hystrix其设计原则如下:
-
防止单个服务异常导致整个微服务故障。
-
快速失败,如果服务出现故障,服务的请求快速失败,线程不会等待。
-
服务降级,请求故障可以返回设定好的二手方案数据(兜底数据)。
-
熔断机制,防止故障的扩散,导致整个服务瘫痪。
-
服务监控,提供了Hystrix Bashboard仪表盘,实时监控熔断器
2. Hystrix的功能
1.资源隔离(流控,限流)
2.服务熔断
3.降级机制
4.缓存
3.OpenFeign整合Hystrix
1. 依赖:OpenFeign整合了Hystrix 不用再导。
2.yml配置hystrix开启熔断支持
feign:
hystrix:
enabled: true #开启熔断支持
3.为@FiegnClient(fallbalcFactory="降级类")接口,指定降级类
// 配置服务名 - 通过服务名调用用户服务下面的几个实例 托底类-出现异常走托底
@FeignClient(value = "user-server",fallbackFactory =UserFeignClientFallbackFactory.class)
public interface UserFeignClient {
// 需要和用户服务controller方法一致
@GetMapping("/user/{id}")
User getUserById(@PathVariable("id") Long id);
}
4.编写降级类
4.1 创建类,实现FallbackFactory<Feign接口>
4.2 复写create方法
4.3 交给Spring管理:@Component
// 交给spring容器管理
@Component
public class UserFeignClientFallbackFactory implements FallbackFactory<UserFeignClient> {
// 托底方法
@Override
public UserFeignClient create(Throwable throwable) {
return new UserFeignClient() {
@Override
public User getUserById(Long id) {
//把异常信息打印到控制台
throwable.printStackTrace();
//真正拖地方法 , 这里的数据是托底数据
return new User(-1l,"","服务器繁忙,请稍后重试");
}
};
}
}
4.测试 关闭所有user服务,再次访问user服务就会走托底并且会在控制台打印错误信息。