Spring Cloud Zuul使用和配置

参考:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_zuul_timeouts

1.Zuul超时配置

下面是Spring官方文档描述:


Spring Cloud Zuul使用和配置_第1张图片
Snipaste_2018-10-22_13-41-03.png

在配置zuul的超时机制时,可选的两组参数包括:

ribbon.ReadTimeout
ribbon.SocketTimeout

以及

zuul.host.connect-timeout-millis
zuul.host.socket-timeout-millis

两者作用的最大区别是,以服务名(可以是注册中心发现或者自定义serviceId)进行代理的那些服务,它们的超时由ribbon控制; 对于指定url路由的服务,超时则由zuul.host设定

2.Hystrix超时熔断设置:

参考Spring官方文档描述:

Spring Cloud Zuul使用和配置_第2张图片
Snipaste_2018-10-22_15-10-15.png

当设置好 ribbon的timeout时,Hytrix的熔断时间会有默认值的,由上图所述公式计算得出。
一旦单独设置 hystrix.command.xxx.execution.isolation.thread.timeoutInMilliseconds则会覆盖 default的设定.

  • 需要注意的是execution.isolation.thread.timeoutInMilliseconds参数的作用情况: 在THREAD模式下,达到超时时间,可以中断;在SEMAPHORE模式下,会等待执行完成后,再去判断是否超时。

因此如果想要按照达到超时即中断的目的,合理的配置如下:

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 6000
# zuul proxy configuration
zuul:
  ribbon-isolation-strategy: THREAD

更多关于hystrix的配置说明参考:https://blog.csdn.net/tongtong_use/article/details/78611225

3.Zuul大文件上传配置

首先需要配置关闭spring自带的multipart配置(因为Spring默认提供的MultipartResolver会将文件缓存到磁盘以及内存中,对于大文件而言,这种服务器缓存是不可接受):

spring:
  servlet:  
    multipart:  
      enabled: false

然后配置启用Zuul servlet:

zuul:
  servletPath: /zuul

如果你的service之前的访问地址是:

  • http://{{ServerPath}}/api/tcnbasicsystem/file
    那么之后的访问地址就是:
  • http://{{ServerPath}}/zuul/api/tcnbasicsystem/file

需要注意的是,发送请求时,需要带有请求头:

Transfer-Encoding: chunked

详情参考:uploading-files-through-zuul

你可能感兴趣的:(Spring Cloud Zuul使用和配置)