feign(hystrix)-基础使用及配置(2)

1. Hystrix 的禁用

问题:项目中有需求是不使用熔断机制的,例如退款请求;熔断的禁用可以有以下几种方式:

关闭熔断配置,这个配置就导致整个模块全部不可用

feign:
  hystrix:
    enabled: false

fallback/fallbackFactory 注释掉:这个方法会抛出 No fallback for HystrixCommand 异常 ,不是好的选择

官方的局部禁用

@Configuration
public class FeignDisableHystrixConfiguration {
    @Bean
    @Scope("prototype")
    public Feign.Builder feignBuilder() {
        return Feign.builder();
    }
}

项目里面这个禁用导致了所有的模块的熔断禁用,原因是这个类放在了基础模块里,并且放在了启动类可以扫描的包下面了

解决方法

  • 要是用这个注解的话千万注意不要放到启动类可以扫描的包下面。(spring父子上下文扫描包重叠)
  • 不要加@Configuration 注解,直接使用也是可以的

像下面这样用就可以了

@FeignClient(name = "promotion-resource", url = "",fallbackFactory = OrderPromotionFallback.class,
      configuration= DisableHystrixConfiguration.class)
public interface OrderPromotionService {
      
}

2.feign的优化

hystrix官方的配置说明

Configuration · Netflix/Hystrix Wiki · GitHub

在网上找了很多对熔断的线程池的配置,刚开始复制着配置,测试的时候发现并没有头绪,不知道怎么去对比,线程池这一块的东西也搞混了。这才去看的官方文档,仔细的阅读了一遍配置信息,基本了解了一些。

FeignAutoConfiguration

优化1

feign:
  httpclient:
    enabled: true

feign中支持三种http请求:JDK原生的http, OkHttpClient,Apache 的HttpClient,feign中默认使用的是JDK原生的http请求不支持连接池的配置  ,其他两个可以。这里我们用httpClient

优化2

hystrix的连接池配置

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000
  threadpool:
      default:
        coreSize: 20
        maxQueueSize: 500
        queueSizeRejectionThreshold: 500
 coreSize: 20  #并发执行的核心线程数,默认10
 maxQueueSize: 500  #BlockingQueue的最大队列数 默认-1 
 queueSizeRejectionThreshold: 500  #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝 

线程数=每秒最大请求量*99%延迟时间(秒) + 缓存值(some breathing room

延迟时间:我这边请教了前辈,是系统之间或微服务之间的响应时间(amy在10:20给我发消息,我在10:30才看到,这个时间段)

maxQueueSize: 默认-1,不设置这个属性 并发量大的时候会出现错误

queueSizeRejectionThreshold: 队列大小的拒绝阈值,默认值5 ,当maxQueueSize是-1时没有作用,所以要配合使用;但是排队数量达到属性最大值,会直接拒绝,即使maxQueueSize的值没有达到

注:需要结合系统的实际情况来配置,也做了大量的性能测试,目前我们的系统这些配置是足够的;还有很多配置在官方文档可以找到

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值