SpringCloud- Ribbon与Feign的重试机制

1 背景: 在进行Feign调用时对于耗时较长的业务会发生超时而返回异常,以此需要根据业务需求配置超时时间,其中涉及到Hystrix超时时间和Ribbon超时时间,对于Hystrix的隔离机制分为信号量隔离和线程池隔离,对于请求业务和处理业务在一个线程的推荐采用信号量隔离,对于rpc调用等耗时业务采用线程池隔离,默认超时时长为1s,当超时后会熔断处理。

#hystrix的超时时间
hystrix:
    command:
        default:
            execution:
              timeout:
                enabled: true
              isolation:
                    thread:
                        timeoutInMilliseconds: 9000
#ribbon的超时时间
ribbon:
  ReadTimeout: 3000
  ConnectTimeout: 3000

2 重试机制:feign的超时时间为hystrix和rabbin的总时间,然而超时的请求并不是直接返回异常,当第一次请求超时请求失败时往往会重试当前请求,对于feign调用默认关闭掉了feign的重试,采用ribbon负载均衡重试:

ribbon:
  ReadTimeout: 3000
  ConnectTimeout: 3000
  MaxAutoRetries: 1 #同一台实例最大重试次数,不包括首次调用
  MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数,不包括首次调用
  OkToRetryOnAllOperations: false  #是否所有操作都重试 

注意:hystrix超时时间要大于ribbon的超时时间,否则ribbon的重试是没有任何意义的,以为当hystrix超时了会熔断降级(当然需要自己手动指定降级逻辑处理),就不会进行ribbon的重试。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值