springcloud

1 注册中心续约相关

ribbon.ServerListRefreshInterval
#由于采用客户端负载均衡,客户端需要从eureka拉取实例列表来做负载均衡。此参数表示获取的实例列表在客户端的缓存时间。由于springcloud优先保证AP,所以有可能实际服务已经下线了,客户端还保存该服务的实例地址,导致请求过去是404

eureka.client.registryFetchIntervalSeconds
#客户端从euraka拉取最新注册实例信息列表的时间间隔(注意与实例列表的缓存时间区分)

2 ribbon重试机制

ribbon.MaxAutoRetries=1
#对于同一个服务实例的请求失败重试次数,不含第一次请求。1表示对同一个实例失败后,重试1次

ribbon.MaxAutoRetriesNextServer=1
#对于客户端负载均很另外一个服务实例请求失败的重试次数,不含第一次请求的实例。1表示负载后到新的实例后最多进行1次尝试

ribbon.OkToRetryOnAllOperations=true
#表示无论是请求超时,还是readtimeout都要进行重试

ribbon.retryableStatusCodes=404
#根据http状态决定重试机制

3 zuul超时相关

如果路由zuul.routes走的url,则 zuul.host.connect-timeout-millis,zuul.host.socket-timeout-millis配置起效
如果路由zuul.routes走的serviceId,则ribbon.connectTimeout,ribbon.readTimeout配置起效(一般是serviceId)

#熔断超时时间,且大于 (1+MaxAutoRetries+MaxAutoRetriesNextServer)*readTimeout,否则熔断会先于ribbon超时
#default表示对多有的service都起效,可以指定serviceId

#是否启用熔断超时检测,默认是true,当熔断超时的次数在一定的时间范围内超过一定次数,则启动熔断保护
hystrix.command.default.execution.timeout.enabled=true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000

# hystrix超时和ribbon超时的关系配置关系

(ribbon.ConnectTimeout + ribbon.ReadTimeout) * (ribbon.MaxAutoRetries + 1) * (ribbon.MaxAutoRetriesNextServer + 1)

ribbon:
  ReadTimeout:100
  ConnectTimeout:500
  MaxAutoRetries:1
  MaxAutoRetriesNextServer:1

Then the Hystrix timeout (for all routes in this case) will be set to 2400ms.

4 Hystrix熔断器

1、circuitBreaker.enabled
是否启用熔断器,默认是TURE。
2、circuitBreaker.forceOpen
熔断器强制打开,始终保持打开状态。默认值FLASE。
3、circuitBreaker.forceClosed
熔断器强制关闭,始终保持关闭状态。默认值FLASE。
4、circuitBreaker.errorThresholdPercentage
设定错误百分比,默认值50%,例如一段时间(10s)内有100个请求,其中有55个超时或者异常返回了,那么这段时间内的错误百分比是55%,大于了默认值50%,这种情况下触发熔断器-打开。
5、circuitBreaker.requestVolumeThreshold
默认值20.意思是至少有20个请求才进行errorThresholdPercentage错误百分比计算。比如一段时间(10s)总共有19个请求,且这19个请求全部失败了。错误百分比是100%,但熔断器不会打开,因为requestVolumeThreshold的值是20. 这个参数非常重要,熔断器是否打开首先要满足这个条件,源代码如下
6、circuitBreaker.sleepWindowInMilliseconds
半开试探休眠时间,默认值5000ms。当熔断器开启一段时间之后比如5000ms,会尝试放过去一部分流量进行试探,确定依赖服务是否恢复。

采样时间间隔在hystrix.command.[commandkey].metrics参数中配置

总结:熔断器circuitBreaker默认是打开的,一般不用专门配置,使用默认的即可; 而熔断超时需要hystrix和ribbon共同配置匹配的超时时间,当熔断超时次数到达一定比例时,会触发熔断器

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值