Spring Cloud Zuul 参数配置文档

Zuul的配置文件详解

目录

Zuul的配置文件详解

1、zuul配置

zuul的超时时间配置:

host最大连接数配置

路由配置

前綴

配置反向代理

过滤headers

最大信号量

2、hystrix配置

hystrix的超时时间配置:

hystrix的隔离策略

设置HystrixCommand的执行是否有超时限制。

执行属性配置

回退属性配置

断路器属性配置

指标属性配置

请求上下文属性配置

合并属性配置

线程池属性配置

3、ribbon配置 


 

 

1、zuul配置

 

配置参数

默认值

说明

zuul的超时时间配置:

  
zuul.host.socket-timeout-millis 

 

zuul.host.connect-timeout-millis  

host最大连接数配置

  
zuul.host.maxTotalConnections200最大连接数。默认值是200,我们项目配置的是2000。
zuul.host.maxPreRouteConnections20每个路由的最大连接数。默认20,我们项目配置的是500。

路由配置

  
zuul.routes.微服务.path 

请求转发路径,也就是说zuul会把带有当前的请求转发到对应的名称为serviceId的微服务上。

EX:zuul.routes.微服务.path = /微服务/**
zuul.routes.微服务.serviceId 微服务的唯一标识。
EX:
zuul.routes.微服务.serviceId = 微服务

前綴

  
zuul.prefix  我们可以指定一个全局的前缀
zuul.strip-prefix 是否将这个代理前缀去掉,转发会过滤掉前缀。
zuul.routes.微服务.stripPrefix 是否去掉前缀。这个配置是配合zuul.prefix来使用的,如果我们设置了前缀,可以通过设置stripPrefix=true来自动去掉前缀。

配置反向代理

  
zuul.routes.xxx.url 配置反向代理。

过滤headers

  
zuul.routes.微服务.sensitive-headers 

过滤掉客户端附带的headers相关属性。Zuul默认会过滤掉下面三个属性:

Cookies,Set-Cookie,Authorization

 例如:
sensitiveHeaders: X-ABC
如果客户端在发请求是带了X-ABC,那么X-ABC不会传递给下游服务

常用配置:

zuul.sensitive-headers = Access-Control-Allow-Origin
zuul.routes.微服务.ignored-headers 

会过滤服务之间通信附带的headers

例如:

ignoredHeaders: X-ABC
如果客户端在发请求是带了X-ABC,那么X-ABC依然会传递给下游服务。但是如果下游服务再转发就会被过滤

还有一种情况就是客户端带了X-ABC,在ZUUL的Filter中又addZuulRequestHeader("X-ABC", "new"),

那么客户端的X-ABC将会被覆盖,此时不需要sensitiveHeaders。如果设置了sensitiveHeaders: X-AB

常用配置:

zuul.ignored-headers = Access-Control-Allow-Credentials, Access-Control-Allow-Origin

最大信号量

  
zuul.semaphore.max-semaphore 

设置当使用ExecutionIsolationStrategy.SEMAPHORE时,信号量的最大值。

  • [优先级1]zuul.eureka.api.semaphore.maxSemaphores
  • [优先级2]zuul.semaphore.max-semaphores
  • [优先级3]hystrix.command.api.execution.isolation.semaphore.maxConcurrentRequests
  • [优先级4]hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests

# 建议使用这种方式来设置,可以给每个不同的后端微服务设置不同的信号量

zuul.eureka.[service id].semaphore.maxSemaphores: 128

 

2、hystrix配置

 

配置参数

默认值

说明

hystrix的超时时间配置:

  
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds1000

设置调用者等待命令执行的超时限制,超过此时间,HystrixCommand被标记为TIMEOUT,并执行回退逻辑。

注意:超时会作用在HystrixCommand.queue(),即使调用者没有调用get()去获得Future对象

hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds  

hystrix的隔离策略

  
hystrix.command.default.execution.isolation.strategyTHREAD

Hystrix的隔离策略有两种:分别是线程隔离和信号量隔离。

THREAD(线程隔离):使用该方式,HystrixCommand将会在单独的线程上执行,并发请求受线程池中线程数量的限制。

SEMAPHORE(信号量隔离):使用该方式,HystrixCommand将会在调用线程上执行,开销相对较小,并发请求受信号量的个数的限制。

Hystrix中默认并且推荐使用线程隔离,因为这种方式有一个除网络超时以外的额外保护层。

一般来说,只有当调用负载非常高时(例如每个实例每秒调用数百次)才需要使用信号量隔离,因为这种场景下使用THREAD开销会比较高。信号量隔离一般仅适用于非网络调用的隔离。

设置HystrixCommand的执行是否有超时限制。

  
hystrix.command.default.execution.timeout.enabledtrue/false 

设置HystrixCommand的执行是否有超时限制。

执行属性配置

  

  

hystrix.command.default.execution.isolation.thread.interruptOnTimeout

true

配置命令的执行发生超时,是否中断命令的 run 方法的执行

hystrix.command.default.execution.isolation.thread.interruptOnCancel

false

配置命令在取消时,是否中断命令的 run 方法的执行

hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests

10

当使用 ExecutionIsolationStrategy.SEMAPHORE 隔离策略时,设置允许执行命令的 run 方法的最大请求数。如果此最大并发限制被命中,则后续请求将被拒绝。在调整信号量大小时使用的逻辑与选择要添加到线程池中的线程的数量基本相同,,但信号量的开销要小得多,通常执行速度要快得多 (子毫秒),否则您将使用线程

回退属性配置

  

  

hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests

10

设置 ExecutionIsolationStrategy.SEMAPHORE 隔离策略时,设置允许执行命令的 getFallback 方法的最大请求数量

设置当使用ExecutionIsolationStrategy.SEMAPHORE时,HystrixCommand执行方法允许的最大请求数。如果达到最大并发数时,后续请求会被拒绝。信号量应该是容器(比如Tomcat)线程池一小部分,不能等于或者略小于容器线程池大小,否则起不到保护作用。

调用线程允许请求HystrixCommand.GetFallback()的最大数量,默认10。超出时将会有异常抛出,注意:该项配置对于THREAD隔离模式也起作用)

 

hystrix.command.default.fallback.enabled

true

此属性确定在命令发生调用失败或拒绝时是否会尝试调用命令的 getFallback 方法

断路器属性配置

  

  

hystrix.command.default.circuitBreaker.enabled

true

此属性确定是否启用断路器跟踪运行状况和短路请求

hystrix.command.default.circuitBreaker.requestVolumeThreshold

20

此属性设置滚动窗口中将短路请求的最小请求数。

hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds

  5S

此属性设置在短路请求后拒绝请求的休眠时间,然后再允许尝试确定命令是否应再次关闭。

hystrix.command.default.circuitBreaker.errorThresholdPercentage

50

此属性设置断路器打开并启动对回退逻辑的短路请求的错误百分比。

hystrix.command.default.circuitBreaker.forceOpen

false

此属性如果为 true,则强制断路器进入打开状态

如果该属性设置为true,强制断路器进入打开状态,将会拒绝所有的请求。该属性优先级比circuitBreaker.forceClosed高。

 

hystrix.command.default.circuitBreaker.forceClosed

false

此属性如果为 true,则强制断路器进入关闭状态,

如果该属性设置为true,强制断路器进入关闭状态,将会允许所有的请求,无视错误率。

 

指标属性配置

  

  

hystrix.command.default.metrics.rollingStats.timeInMilliseconds

10000

此属性设置统计滚动窗口的持续时间

hystrix.command.default.metrics.rollingStats.numBuckets

10

属性设置滚动窗口划分的桶数,例如,滚动窗口持续时间为10秒,默认配置10个桶,那么每秒钟一个桶用于存放统计数据。配置值必须符合以下条件 metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0,否则会抛出异常。

此属性只影响初始度量值的创建,并且在启动后对此属性进行的调整将不会生效。

hystrix.command.default.metrics.rollingPercentile.enabled

true

此属性指示是否应跟踪执行延迟,并将其计算为百分点。如果禁用它们,则所有汇总统计 (平均值、百分点) 都将返回为 -1

hystrix.command.default.metrics.rollingPercentile.timeInMilliseconds

60000

此属性设置滚动百分比窗口的持续时间,其中保留执行时间以允许百分比计算 (以毫秒为单位),此属性只影响初始度量值的创建, 并且在启动后对此属性进行的调整将不会生效

hystrix.command.default.metrics.rollingPercentile.numBuckets

6

属性设置滚动百分比窗口划分的桶数,例如,滚动百分比窗口持续时间为60秒,默认配置6个桶,那么一个桶用于存放10秒的统计数据。配置值必须符合以下条件 metrics.rollingPercentile.timeInMilliseconds % metrics.rollingPercentile.numBuckets == 0,否则会抛出异常。

此属性只影响初始度量值的创建,并且在启动后对此属性进行的调整将不会生效

hystrix.command.default.metrics.rollingPercentile.bucketSize

100

此属性设置每个桶保留的最大执行时间数,如果超出桶的最大执行数量,则会记录到下一个桶

此属性只影响初始度量值的创建,并且在启动后对此属性进行的调整将不会生效

hystrix.command.default.metrics.healthSnapshot.intervalInMilliseconds

500

此属性设置在允许运行健康快照以计算成功和错误百分比并影响断路器状态的等待间隔的时间 (以毫秒为单位)。

误差百分比的连续计算是 CPU 密集型的,因此此属性允许您控制计算的频率

请求上下文属性配置

  

  

hystrix.command.default.requestCache.enabled

true

此属性指示是否启用请求缓存

hystrix.command.default.requestLog.enabled

true

此属性指示是否应将命令执行和事件记录到日志

合并属性配置

  

  

hystrix.collapser.default.maxRequestsInBatch

Integer.MAX_VALUE

此属性设置合并处理允许的最大请求数

hystrix.collapser.default.timerDelayInMilliseconds

10

此属性设置多长时间内的请求进行合并

hystrix.collapser.default.requestCache.enabled

true

此属性设置启动合并请求缓存

线程池属性配置

  

  

hystrix.threadpool.default.coreSize

10

此属性配置线程池大小,

这里的coreSize和ThreadPoolExecutor的corePoolSize是不同的概念。hystrix会对请求进行隔离,这个隔离是通过线程池来实现的。hystrix会根据调用的服务,对线程池进行重新划分,这个coreSize是hystrix划分的线程池的核心线程数。

hystrix.threadpool.default.maxQueueSize-1(最大排队长度。默认-1,使用SynchronousQueue。其他值则使用 LinkedBlockingQueue。如果要从-1换成其他值则需重启,即该值不能动态调整,若要动态调整,需要使用到下边这个配置)
hystrix.threadpool.default.queueSizeRejectionThreshold5(排队线程数量阈值,默认为5,达到时拒绝,如果配置了该选项,队列的大小是该队列)注意:如果maxQueueSize=-1的话,则该选项不起作用

hystrix.threadpool.default.maximumSize

10

此属性设置最大线程池大小。这是可在拒绝命令执行的最大并发量。请注意, 如果您必须同时设置 allowMaximumSizeToDivergeFromCoreSize。

在1.5.9版本 之前, 线程池和最大线程池总是相等的。

hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize

false

此属性允许 maximumSize 的配置生效,如果maximumSize 大于 coreSize 配置,则在 keepAliveTimeMinutes 时间后回收线程

hystrix.threadpool.default.keepAliveTimeMinutes

1

此属性设置线程空闲生存时间 (分钟)

hystrix.threadpool.default.metrics.rollingStats.timeInMilliseconds

10000

此属性设置统计滚动窗口的持续时间 (以毫秒为单位)

hystrix.threadpool.default.metrics.rollingStats.numBuckets

10

属性设置滚动窗口划分的桶数,例如,滚动窗口持续时间为10秒,默认配置10个桶,那么每秒钟一个桶用于存放统计数据。配置值必须符合以下条件 metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0,否则会抛出异常。

此属性只影响初始度量值的创建,并且在启动后对此属性进行的调整将不会生效

3、ribbon配置 

 

对于Ribbon的参数通常有二种方式:

 

全局配置:ribbon.<key>=<value>格式进行配置即可

 

指定客户端配置:<client>.ribbon.<key>=<value>

Camden版本,整合了spring retry来增强RestTemplate的重试能力,对于我们开发者来说,只需要简单配置,即可完成重试策略。

 

spring.cloud.loadbalancer.retry.enabled=true 该参数用来开启重试机制,它默认是关闭的。
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000 断路器的超时时间需要大于Ribbon的超时时间,不然不会触发重试

 

配置参数

默认值

说明

ribbon.ConnectTimeout
 
请求连接超时时间。
ribbon.ReadTimeout
 
请求处理的超时时间
ribbon.OkToRetryOnAllOperations
 
对所有操作请求都进行重试。
ribbon.MaxAutoRetriesNextServer
 
切换实例的重试次数。
ribbon.maxAutoRetries
200
对当前实例的重试次数。
ribbon.MaxTotalHttpConnections
 
最大http连接数
ribbon.MaxConnectionsPerHost
 
每个host最大连接数
 

根据以上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由maxAutoRetries配置)

,如果不行,就换一个实例进行访问,如果还是不行,再换一个实例访问(更换次数由MaxAutoRetriesNextServer配置),如果依然不行,返回失败。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值