springcloud-熔断Hystrix

简介

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。

包裹请求:使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用到了设计模式中的“命令模式”。

跳闸机制:当某服务的错误率超过一定阈值时,Hystrix可以自动或者手动跳闸,停止请求该服务一段时间。

资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程池已满,发往该依赖的请求就被立即拒绝,而不是排队等候,从而加速失败判定。

监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功、失败、超时、以及被拒绝的请求等。

回退机制:当请求失败、超时、被拒绝,或当断路器打开时,执行回退逻辑。回退逻辑可由开发人员自行提供,例如返回一个缺省值。

自我修复:断路器打开一段时间后,会自动进入“半开”状态。

fegin已经集成了hystrix,所以我们直接在上一章springcloud-Feign中添加代码

添加断融类:

@Component
public class FeignClientTestFallback implements FeignTestClient {
    @Override
    public String test(String name) {
        return name + "您好,提供者调用失败!可能是服务未启用";
    }
}

FeignTestClient接口中的@FeignClient注解添加属性:

启动注册中心、提供者、feign消费者可以看到能正常访问:

此时,停用提供者provider,再次访问http://localhost:8883/feign/test/wangshilin


之前遇到过一个小问题,就是配置什么的都没有错,报500异常错误,百思不得其解,网上查了好多资料都没有解决,最后clean install了一下好使了。。。以此记录下日常小坑

你可能感兴趣的:(springcloud-熔断Hystrix)