美文网首页
Spring Cloud Zuul使用和配置

Spring Cloud Zuul使用和配置

作者: 指间砂的宿命 | 来源:发表于2018-10-22 15:12 被阅读12次

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

    1.Zuul超时配置

    下面是Spring官方文档描述:


    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官方文档描述:

    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使用和配置

          本文链接:https://www.haomeiwen.com/subject/hdqgzftx.html