熔断在服务端,某个服务超时或者异常,引起熔断,出现问题提供备份方案(保险丝)
降级在客户端,考虑网站请求负载,暂时关闭某些接口,某个服务熔断或关闭后,服务不会被调用,此时客户端可以准备一个FallbackFactory,返回缺省值
项目结构
API
接口中开启注解
@FeignClient(value = "http://SPRINGCLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)
实现类
//降级
@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory {
@Override
public DeptClientService create(Throwable cause) {
return new DeptClientService() {
@Override
public Dept queryById(Long id) {
return new Dept()
.setDeptno(id)
.setDname("id=>"+id+"无对应信息,降级处理,该服务已关闭")
.setDb_source("无数据");
}
@Override
public List<Dept> queryAll() {
return null;
}
@Override
public boolean addDept(Dept dept) {
return false;
}
};
}
}
项目结构
application.yml中开启降级
#开启降级
feign:
circuitbreaker:
enabled: true
正常访问
有熔断机制且不关闭服务端
开启降级服务后,关闭服务端
接口被关闭,无法调用服务