关于服务熔断的作用,因为微服务中可能会有很多个服务,各个服务之间可能存在互相调用的情况,如果一个服务挂掉,这样会造成很多错误请求,即服务雪崩的状态,这里添加熔断机制的目的主要为了保护服务,如果服务不可用直接进入fallback的处理方法中。
引入feign的依赖,其中包含了hystrix的组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启用feign hystrix
application.properties:
feign.hystrix.enabled=true
添加fallback服务熔断异常处理类
@Component
public class AuthFeignFallBack implements AuthFeignClient{
private Logger logger = LoggerFactory.getLogger(this.getClass().getName());
@Override
public RtData checkToken(@RequestParam("token") String value) {
logger.info("check token ["+value+"] auth服务熔断异常");
return ResponseBuilder.build(RtCode.SERVER_ERROR);
}
}
在feignclient中使用fallback
@FeignClient(name = "iflynote-auth",fallback = AuthFeignFallBack.class)
public interface AuthFeignClient {
/**
* 验证token
* @param value
* @return
*/
@GetMapping(value = "/oauth/check_token")
public RtData checkToken(@RequestParam("token") String value);
}
熔断测试效果
2020-03-27 15:33:03.506 INFO 19256 --- [ctor-http-nio-3] c.i.iflynote.gateway.filter.AuthFilter : 认证信息{"code":500,"message":"server error"}
备注
fallbackFactory原理类似