文档章节

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

o
 osc_7z601p6x
发布于 07/13 07:12
字数 1431
阅读 29
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

1:概述

image.png

Hystrix使用Archaius作为配置属性的默认实现。官方配置文档: https://github.com/Netflix/Hystrix/wiki/Configuration
每个属性有四个优先级,依次增大:

  • 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

image.png

o
粉丝 0
博文 60
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
记一次失败的Perl + Nginx + FastCGI 配置过程

这两天心血来潮,不知道为什么和 Perl + Nginx + FastCGI 配置 耗上了。但是失败了,记录如下: 1)安装Nginx 1.4.3 ,我的是WINDOWS 7 系统,修改配置文件如下: location ~ .(pl|cgi|perl)?...

通吃岛-低手哥
2013/10/27
1.5K
7
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
Base 参数解析库--bash argsparse

bash argsparse 是一个 Bash 的高级参数解析库。 Its purpose is to replace the option parsing and usage describing functions commonly rewritten in all scripts. Its features includ......

匿名
2013/03/27
371
0

没有更多内容

加载失败,请刷新页面

加载更多

SPSSAU 付费数据研究报告服务

SPSSAU-付费数据分析报告服务(周老师提供) 本文分享自微信公众号 - SPSSAU(spssau)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起...

SPSSAU
2017/11/08
0
0
芋艿-springcloud gateway

http://www.iocoder.cn/Spring-Cloud/Spring-Cloud-Gateway/?github springcloud gateway 官方文档 https://cloud.spring.io/spring-cloud-gateway/reference/html/#gatewayfilter-factories......

Java搬砖工程师
35分钟前
5
0
新零售小程序制作流程

最近有很多小伙伴们都在观望新零售小程序,其实新零售小程序制作还是比较简单的,只要你能熟知以下的新零售小程序制作流程,你也可以制作出属于自己的小程序。下面木鱼小铺(www.muyu007.cn)...

木鱼小铺小程序1
35分钟前
5
0
bat增加自定义参数

#xxx.bat --tag=dev1010 --context=3 --cpu=3 --memory=3 --build=1 --update=1 --api-version=1 @echo off setlocal enabledelayedexpansion set COMMANSLINE="%" :STR_VISTOR for /f "toke......

_snake_
38分钟前
3
0
谷歌SEO推广团队,这样管理更高效!

如今不论是外贸企业还是专业的海外推广公司都会组建自己的Google SEO推广团队,可以更有效的做好网站SEO,但是要发挥谷歌SEO推广团队的最大效能,我们并不能随意的让团队成员听之任之,随波逐...

一尘SEO
39分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部