Netflix Zuul 配置大全说明

上面分别详细介绍了 Zuul 的配置,以下是一份 Spring Cloud 集成 Zuul 1.x 的较为完整的 application.yml 配置示例。其中,包含了路由、超时、负载均衡等多方面常见配置,并附有相应的说明信息:

server:
  # Zuul服务启动的端口号,可根据实际需求修改
  port: 8080

spring:
  application:
    # Zuul应用的名称
    name: zuul-gateway

zuul:
  # 路由配置相关
  routes:
    # 路由名称,自定义,方便识别
    # 如果路由名称和服务名称相同,则可以省略 serviceId 配置
    user-service-route:  
      # 外部请求访问的路径前缀,以 /user-api 开头的请求会被路由
      # 默认情况下,path 为 “/服务名/**”
      path: /user-api/**
      # 对应要转发到的服务名称(在 Eureka 等注册中心注册的服务名)
      serviceId: user-service
    order-service-route:
      path: /order-api/**
      # 也可以直接指定具体的URL(不推荐用于微服务架构中多实例场景,这里只是示例)
      url: http://localhost:8081

  # 忽略的服务列表(不会被 Zuul 路由管理的服务)
  # '*' 表示忽略所有在注册中心的服务,也可以指定具体的服务名称列表。
  # 例如 ignored-services: service1,service2
  ignored-services: '*'
  
  # 只路由指定的服务(和 ignored-services 相反逻辑)。
  # 如果配置了此选项,那么只有配置中的服务会被路由,例如
  # 仅仅路由 user-service 和 order-service 服务
  only-route-services: user-service,order-service

  # 路由前缀,给所有路由添加统一的前缀,例如
  # 那么所有路由的实际访问路径都要加上 /api 开头,
  # 像 /user-api/xxx 实际访问就变成了/api/user-api/xxx
  prefix: /api

  # 敏感请求头设置(默认会过滤一些敏感头信息,比如 Cookie、Authorization 等,
  # 在转发时不传递,以下配置可自定义)
  # 清空默认的敏感头列表,可根据实际需求配置具体要过滤的头信息
  sensitive-headers:
  # 示例,仅转发 Cookie 和 Authorization 这两个头信息
  # sensitive-headers: Cookie,Authorization

  # 控制默认连接池属性的主机属性
  host:
    # Zuul在尝试连接后端服务时的超时时间,单位是毫秒
    connect-timeout-millis: 10000
    # 从连接请求发出到获取到连接的最长等待时间,单位是毫秒
    connection-request-timeout-millis: 20000
    # 限制Zuul到每个后端服务路径(路由)所能建立的最大连接数
    max-per-route-connections: 50
    # 限制Zuul与所有后端服务总共能够建立的最大连接数
    max-total-connections: 200
    # 定义了Zuul在与后端服务建立连接后,等待读取数据的超时时间,单位是毫秒
    socket-timeout-millis: 60000
    # 指定连接池中的连接的生存时间
    time-to-live: 1
    # 指定连接池中的连接的生存时间的单位
    time-unit: DAYS

  # 自定义过滤器相关配置示例(假设自定义了一个名为MyFilter的过滤器,
  # 在代码中实现了 ZuulFilter 接口)
  filter:
    pre:
      MyFilter:  # 过滤器名称,要和代码中定义的一致
        order: 1  # 过滤器执行顺序,数字越小越先执行
        disable: false  # 是否禁用该过滤器,false表示启用
        
  # 配置负载均衡相关(结合Ribbon使用,以下以user-service服务为例)
  user-service:  # 对应服务名称
    ribbon:
      # 服务实例列表,多个实例用逗号隔开,这里是示例的本地地址,
      # 实际应是对应服务的真实实例地址
      listOfServers: http://localhost:8081,http://localhost:8082  
      # 负载均衡规则,这里采用轮询规则,还有其他规则可按需选择,如RandomRule(随机)等
      NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule  

  ribbon:
    eager-load:
      enabled: true  # 开启ribbon的饥饿加载,加快首次请求的响应速度
      clients: user-service,order-service  # 指定哪些服务开启饥饿加载

  # Hystrix相关配置(用于容错降级等)
  hystrix:
    command:
      default:
        execution:
          isolation:
            thread:
              # 全局的Hystrix线程超时时间,超过这个时间会触发熔断降级,
              # 可根据服务实际情况调整
              timeoutInMilliseconds: 6000  

  # 配置HTTP客户端相关(可选不同的HTTP客户端实现,
  # 默认是Apache HttpClient,也可以用OkHttp等)
  # 使用OkHttp示例(需添加相应依赖)
  okhttp:
    enabled: true  # 启用OkHttp客户端

点击下载/查看本教程相关资料或者源代码。
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号