SpringCloud学习–基础–6.5–Gateway–配置
1、配置
spring:
cloud:
gateway:
routes:
# 路由id,可以任意,要保证唯一
- id: route-app_ribbon
# uri: http://127.0.0.1:8883
# lb表从注册中心中按照名称获取微服务,并遵循负载均衡策略
uri: lb://app-ribbon
# 路由断言: 可以匹配映射路径
predicates:
- Path=/app_ribbon_route/**
# 去除前缀/app_ribbon_route
# 1表示过滤1个路径,2表示两个路径,以此类推
filters:
- StripPrefix=1
2、配置说明
2.1、动态路由+负载均衡
uri: lb://app-ribbon
- 动态路由:lb //A
- A 是注册中心的服务名
- 解析过程
- gateway 使用 LoadBalancerClient 将 服务名A 通过 注册中心 解析为实际的主机和端口,并进行ribbon负载均衡。
2.2、路由前缀处理
2.2.1、添加前缀
http://127.0.0.1:8887/app_ribbon_route/hello/ ---路由--》http://app-ribbon/user/hello/
2.2.2、去除前缀
通过StripPrefix=n 来指定了路由要去掉的n个前缀
http://127.0.0.1:8887/app_ribbon_route/hello/ ---路由--》 http://app-ribbon/hello/
3、负载均衡和熔断
3.1、介绍
- Gateway中默认集成了Ribbon负载均衡和Hystrix熔断机制。
- 所有的超时策略都是走的默认值,比如熔断超时时间只有1S,很容易就触发了。因此建议手动进行配置:
3.2、配置
hystrix:
command:
default:
execution:
isolation:
thread:
# 服务提供者的超时时间,2秒,如果请求服务提供者超过2秒,就服务降级和线程隔离
timeoutInMilliseconds: 6000
ribbon:
ConnectTimeout: 1000 # 连接超时时长
ReadTimeout: 2000 # 数据通信超时时长
MaxAutoRetries: 0 # 当前服务器的重试次数
MaxAutoRetriesNextServer: 0 # 重试多少次服务
OkToRetryOnAllOperations: false # 是否对所有的请求方式都重试