上面分别详细介绍了 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客户端
点击下载/查看本教程相关资料或者源代码。