乐趣区

SpringCloud-第六篇-Hystrix参数配置三

1:概述

Hystrix 应用 Archaius 作为配置属性的默认实现。官网配置文档:https://github.com/Netflix/Hy…
每个属性有四个优先级,顺次增大:

  • 1:代码的全局默认值
  • 2:动静全局默认属性
    能够应用全局属性文件来更改全局默认值。
  • 3:代码实例默认
    定义特定于实例的默认值,比方在 HystrixCommand 构造函数中设置的值
  • 4:动静实例属性
    能够动静设置实例特定的值,从而笼罩后面三个默认级别,格局是:
    hystrix.command. 命令 key. 属性名称 = 值

2:申请上下文

1:requestCache.enabled

设置是否开启申请的缓存性能,默认 true

2:requestLog.enabled

设置是否开启申请的日志性能,默认 true

3:命令执行

  • execution.isolation.strategy

批示 HystrixCommand.run()执行哪个隔离策略,选项:
1:THREAD – 它在独自的线程上执行,并发申请受线程池中线程数的限度
2:SEMAPHORE – 它在调用线程上执行,并发申请受信号计数的限度
3:官网举荐应用线程隔离策略,默认也是依照线程隔离进行解决。
4:信号量隔离的形式是限度了总的并发数,每一次申请过去,申请线程和调用依赖服务的线程是同一个线程,那么如果不波及近程 RPC 调用(没有网络开销)则应用信号量来隔离,更为轻量,开销更小。
5:信号量的大小能够动静调整, 线程池大小不能够动静调整。
6:配置示例:

@HystrixCommand(fallbackMethod = "error", commandProperties = { @HystrixProperty(name="execution.isolation.strategy", value = "THREAD") })
  • execution.isolation.thread.timeoutInMilliseconds

示意申请线程总超时工夫,如果超过这个设置的工夫 hystrix 就会调用 fallback 办法。value 的参数为毫秒,默认值为 1000ms。

@HystrixCommand(fallbackMethod = "error", commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "4000") })
  • execution.timeout.enabled

这个超时开关示意,当超时后是否触发 fallback 办法,默认为 true。

  • execution.isolation.thread.interruptOnTimeout

示意 HystrixCommand.run()在产生超时时是否应该中断执行,默认 true

  • execution.isolation.thread.interruptOnCance

示意 HystrixCommand.run()在产生勾销时是否应该中断执行,默认 false

  • execution.isolation.semaphore.maxConcurrentRequests

当隔离策略应用 SEMAPHORE 时,最大的并发申请量,如果申请超过这个最大值将回绝后续的申请,默认值为 10

4:回退

  • fallback.isolation.semaphore.maxConcurrentRequests

设置 HystrixCommand.getFallback()办法容许从调用线程进行申请的最大数量,默认 10

如果达到最大并发限度,则随后的申请将被回绝,并抛出异样。
  • fallback.enabled

开启 fallback 性能,默认 true

5:断路器

  • circuitBreaker.enabled

设置是否将应用断路器来跟踪健康状况,并且如果断路器跳闸则将其短路。默认 true

  • circuitBreaker.requestVolumeThreshold

设置滚动窗口中将使电路跳闸的最小申请数量,默认 20。
熔断器在整个统计工夫内是否开启的阀值,每个熔断器默认保护 10 个 bucket, 每秒一个 bucket, 每个 bucket 记录胜利, 失败, 超时, 回绝的状态,该阈值默认 20 次。也就是一个统计窗口工夫内(10 秒钟)至多申请 20 次,熔断器才启动。

  • circuitBreaker.sleepWindowInMilliseconds

熔断器默认工作工夫, 默认值为 5 秒,熔断器中断请求 5 秒后会进入半关上状态, 放局部流量过来重试,如果重试胜利则会恢复正常申请。

  • circuitBreaker.errorThresholdPercentage

熔断器谬误阈值,默认为 50%。当在一个工夫窗口内出错率超过 50% 后熔断器主动启动。熔断器启动后会主动转发到配置的 fallbackMethod,进行降级解决。

  • circuitBreaker.forceOpen

断路器强制开关,如果设置为 true 则示意强制关上熔断器,所有申请都会回绝,默认 false

  • circuitBreaker.forceClosed

断路器强制开关,如果设置为 true 则示意强制敞开熔断器,所有申请都会容许,默认 false

6: 度量指标

  • metrics.rollingStats.timeInMilliseconds

设置统计滚动窗口的持续时间,以毫秒为单位。默认 10 秒

  • metrics.rollingStats.numBuckets

该属性设置滚动统计窗口分成的桶的数量。默认 10

  • metrics.rollingPercentile.enabled

示意执行提早是否应该跟踪和计算为百分比。如果被禁用,则所有汇总统计返回为 -1。默认 true

  • metrics.rollingPercentile.timeInMilliseconds

设置滚动窗口的持续时间,在该窗口中保留执行工夫以容许百分数计算(单位毫秒),默认 1 分钟。

  • metrics.rollingPercentile.numBuckets

设置 rollingPercentile 窗口将被分成的桶的数量,默认 6

  • metrics.rollingPercentile.bucketSize

设置每个存储桶的最大执行次数,如果在执行屡次,将在桶的结尾重写。默认 100
例如,如果存储区大小设置为 100,并示意 10 秒的存储区窗口,但在此期间产生 500 次执行,则只有最初 100 次执行将保留在该 10 秒存储区中

  • metrics.healthSnapshot.intervalInMilliseconds

设置容许执行衰弱快照之间期待的工夫(以毫秒为单位)。默认 500

7: ThreadPool 配置

  • coreSize

线程池外围线程数,默认值为 10。

  • MAXIMUMSIZE

设置线程池大小,默认 10

  • maxQueueSize

配置线程池工作队列的大小,默认值为 -1。当应用 -1 时,SynchronousQueue 将被应用,即意味着其实这个队列只是一个交换器,工作将被间接交给工作线程解决。如果工作线程有余,那工作将被回绝;如果应用任何正整数,LinkedBlockingQueue 将被应用

  • queueSizeRejectionThreshold

示意期待队列超过阈值后开始回绝线程申请,默认值为 5,如果 maxQueueSize 为 -1,则该属性生效。

  • keepAliveTimeMinutes

设置流动放弃工夫,以分钟为单位,默认 1 分钟

  • allowMaximumSizeToDivergeFromCoreSize

配置 maximumSize 失效。这个值能够等于或高于 coreSize,默认 false

退出移动版