跳至主要內容

Spring Cloud 之熔断器 Hystrix

logycoconut关于技术SpringCloud大约 1 分钟

在微服务架构中,通常会使用 Feign 来进行服务间的相互调用,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路

我们假设以下场景,如果服务提供方突然宕机或者出现网络问题,那消费方就会迟迟收不到回应,处理的线程得不到释放,随着请求的增加,服务器的资源也会逐渐耗尽,导致服务瘫痪

因为服务间的依赖性,整个微服务体系就会发生雪崩

Hystix 应运而生,它可以在服务提供方故障的时候,隔离远程服务,快速响应结果,防止出现级联失败

在 Feign 上使用熔断器

在不使用 Feign 的前提下也是可以使用 Hystrix 的,需要的可以自行了解,本文介绍的是 Feign 和 Hystrix 结合使用的情况

  1. 开启 Hystrix 配置
feign:
  hystrix:
    enabled: true
  1. 为 client 指定一个失败回调的类
@FeignClient(value = "feign-provider", path = "user", fallback = ProviderClientFallback.class)
public interface ProviderClient extends ProviderApi { }
  1. 当发生服务熔断或者降级的情况时,会返回回调类中相同签名的方法的值
@Component
public class ProviderClientFallback implements ProviderClient {
    @Override
    public String info() {
        return "调用失败";
    }
}

相关源码地址

仅供参考

https://github.com/logycoconut/Spring-Cloud-Notes/tree/master/feignopen in new window