微服务之hystrix

1.使用第一步
feign:
  hystrix:
    enabled: true

在yml里需要配置上面的标识,开启才能使用hystrix

目的是使你的服务支持hystrix

2.主启动类加上对应的的标识,代表启用该功能

@EnableHystrix

3.在对应业务类上加上hystrix的超时时间或者在配置文件配置对应的超时时间

配置在yml:

hystrix:
  threadpool:
    default:
      # 执行命令线程池的核心线程数,也是命令执行的最大并发量
      # 默认10
      coreSize: 500
      # 最大执行线程数
      maximumSize: 500
  command:
    default:
      execution:
        isolation:
          thread:
            # HystrixCommand 执行的超时时间,超时后进入降级处理逻辑。一个接口,理论的最佳响应速度应该在200ms以内,或者慢点的接口就几百毫秒。
            # 默认 1000 毫秒,最高设置 2000足矣。如果超时,首先看能不能优化接口相关业务、SQL查询等,不要盲目加大超时时间,否则会导致线程堆积过多,hystrix 线程池卡死,最终服务不可用。
            timeoutInMilliseconds: 120000

业务类加标识,效果和配置文件相同,但是可以指定具体的兜底方法,精确打击

 

@PostMapping("/{organizationId}/cf-contracts/enterprise/{historyId}/import")
@HystrixCommand(fallbackMethod = "syastemTimeOutFallbackMethod" , commandProperties = {
        @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds" , value = "3000")
})
ResponseEntity<?> importToBusiness(@PathVariable("historyId") Long historyId,
    @PathVariable("organizationId") Long organizationId){
    int i = 10/0;
    try {
        TimeUnit.MICROSECONDS.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "代码运行正常";
}


public String syastemTimeOutFallbackMethod() {
    return "代码运行报错,请检查后重试";
}

当业务类代码程序报错,或者超过设置的超时时间,则执行降级方法syastemTimeOutFallbackMethod

第三种,在类上配置

 

第四种

当A服务调用B服务的时候,遇到b服务宕机或者报错,可以在A进行降级

@FeignClient(value = "hrecc-process", configuration = FeignConfiguration.class, fallback = HreccRemoteServiceFallback.class, path = "/v1")

在B服务的feign接口方法加上以上标签,并且指定兜底方法,当B服务报错,执行A服务的兜底方法。

具体操作如下图

 

使用hystrix的目的,主要是避免系统直接报错,或者系统持续的等待,造成资源浪费和系统卡顿,

执行兜底方法,降级,使服务能继续进行下去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值