Spring cloud gateway 动态路由解决方案
1. 数据库方式(MySQL、Redis、Postgress…)
Spring Cloud Gateway Dynamic Routes from Database
2.Yaml方式配置 url-expression+predicates
discovery:
locator:
# 是否与服务注册于发现组件进行结合,通过 serviceId 转发到具体的服务实例。
# 默认为 false,设为 true 便开启通过服务中心的自动根据 serviceId 创建路由的功能
enabled: true
# 表示将请求路径的服务名配置改成小写 因为服务注册的时候,向注册中心注册时将服务名转成大写的了
lower-case-service-id: true
# 配置 url-expression 目的是为了在转发的时候直接转发到相应的 Service 上去
url-expression: "'http://'+serviceId+':'+port"
predicates:
- name: Path
args:
pattern: "'/api/'+serviceId+'/**'"
filters:
- StripPrefix=2
httpclient:
connect-timeout: 6000
response-timeout: 120s
3. 自定义
- 初始化(DiscoveryClient拉取所有已经注册服务进行路由配置)
- 服务更新事件监听(监听服务变化同步更新路由配置)
- 定时同步(防止服务更新事件监听失败,补差)