Hystrix服务降级
1、熔断与降级比较
-
服务熔断:服务端某个服务超时或者异常,引起熔断,保险丝~
-
服务降级:客户端、从整体网站请求负载考虑,当某个服务熔断或者关闭之后,服务将不再被调用
此时在客户端,我们可以准备一个FallbackFactory,返回一个默认的值(缺省值),整体的服务水平下降了但是,好歹能用比直接挂掉强
2、在API模块导入依赖
<!--feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
3、在API模块中编写service层
@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)
public interface DeptClientService {
@RequestMapping("/dept/get/{id}")
public Dept queryById(@PathVariable("id") Long id);
@RequestMapping("/dept/list")
public List<Dept> queryAll();
@RequestMapping("/dept/add")
public boolean addDept(Dept dept);
}
@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory {
@Override
public Object create(Throwable throwable) {
return new DeptClientService() {
@Override
public Dept queryById(Long id) {
return new Dept()
.setDept_no(id)
.setDept_name("id=>"+id+"没有对应的信息,客户端提供了降级的信息,这个服务现在已经被关闭")
.setDb_source("没有数据");
}
@Override
public List<Dept> queryAll() {
return null;
}
@Override
public boolean addDept(Dept dept) {
return false;
}
};
}
}
4、在Consumer模块开启降级
#开启feign.hystrix降级
feign:
hystrix:
enabled: true