【问题标题】:Backend services isolation in ZuulZuul 中的后端服务隔离
【发布时间】:2018-01-23 10:25:49
【问题描述】:

我们计划在生产环境中使用 Zuul 作为 API 网关。我不确定 Zuul 在这种特定情况下的行为。

假设在 Zuul 后面有两个后端服务 A 和 B。服务 A 很慢,但流量很大。通过 Zuul 访问 Service B 的客户会发生什么?

在客户端,服务 B 将不可用,因为服务 A 减慢了 Zuul,因此没有资源来处理对服务 B 的请求。 我不确定这一点,任何建议或经验将不胜感激。

【问题讨论】:

    标签: spring-cloud netflix-zuul spring-cloud-netflix


    【解决方案1】:

    您可以将各个端点配置为使用自己的线程池并拥有自己的超时时间。

    zuul:
        ribbonIsolationStrategy: THREAD
        threadPool:
            useSeparateThreadPools: true
    host:
        connect-timeout-millis: 60000
        socket-timeout-millis: 60000
    routes:
        examples2:
          path: /something/**
          serviceId: examples
          stripPrefix: true
        services:
          path: /services/**
          serviceId: services
          stripPrefix: false
          sensitiveHeaders: true
        auth:
          path: /oauth/**
          serviceId: saapi-auth-server
          stripPrefix: false
          sensitiveHeaders: true
    
    hystrix:
      command:
        default:
          execution:
            timeout:
              enabled: false
            isolation:
              thread:
                timeoutInMilliseconds: 60000
    
    auth:
      ribbon:
        ReadTimeout: 60000
        ConnectTimeout: 60000
    
    services:
      ribbon:
        ReadTimeout: 60000
        ConnectTimeout: 60000
    

    这是我们的一个网关的示例配置,应该可以帮助您入门。

    【讨论】:

    • 我们使用的是 URL 而不是 serviceid,但我想我可以在功能区中使用静态 URL。
    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多