springcloud熔断器

熔断器
作用:
某个服务的单个点的请求故障会导致用户的请求处于阻塞状态,最终的结果就是整个服务的线程资源消耗殆尽。由于服务的依赖性,会导致依赖于该故障服务的其他服务也处于线程阻塞状态,最终导致这些服务的线程资源消耗殆尽 直到不可用,从而导致整个问服务系统都不可用,即雪崩效应。
为了防止雪崩效应,我们采用的熔断器Hystrix。
工作原理(机制):
首先,当服务的某个 API 接口的失败次数在一定时间内小于设定的阀值时,熔断器处于关闭状态,该 API 接口正常提供服务 。当该API 接口处理请求的失败次数大于设定的阀值时, Hystrix 判定该 API 接口出现了故障,打开熔断器,这时请求该 API 接口会执行快速失败的逻辑(即 fall back 回退的逻辑),不执行业务逻辑,请求的线程不会处于阻塞状态。处于打开状态的熔断器一段时间后会处于半打开的状态,并将一定数量的请求执行正常的逻辑。剩余的请求会执行快速失败,若执行正常逻辑的请求失败了,则熔断器继续打开;若成功了,则将熔断器关闭。这样熔断器就具有了自我修复的能力。
在Feign上使用熔断器
Feign的pom文件已经引用了Hystrix的依赖,只需要在需要使用熔断器的服务上的yml配置文件中进行对熔断器的配置即可

feign:
  hystrix:
    enabled: true
    command:
        default:  #default全局有效,service id指定应用有效
          execution:
            timeout:
              #如果enabled设置为false,则请求超时交给ribbon控制,为true,则超时作为熔断根据
              enabled: true
            isolation:
              thread:
                timeoutInMilliseconds: 5000 #断路器超时时间,默认1000ms

Service加入fallback获取回调实现类
@Service
@FeignClient(value = “model-prod”,fallback = FeignClientFallback.class)
public interface HelloService {

@RequestMapping("/hello")
String hello();

}

在需要服务调取方配置回调实现类
@Component
public class FeignClientFallback implements HelloService {

@Override
public String hello() {
    System.out.println("熔断,默认回调函数");
    return "进入熔断器,熔断了";
}

}
当服务不可用时会进入这个方法,里面可以写服务调取失败的逻辑代码

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值