Catalog
  1. 1. 背景
  2. 2. 问题列表
    1. 2.1. cloud 与 boot 对应关系
    2. 2.2. 路由数据自定义
    3. 2.3. 输入输出日志
    4. 2.4. 转发性能
    5. 2.5. 超时时间设置
    6. 2.6. gateway提供项目本身接口
    7. 2.7. gateway全局异常处理
  3. 3. 参考文档
spring-cloud-gateway记录

背景

目前使用spring-cloud-gateway为基构建了公司内部服务网关,遇到了一些问题,记录于此

问题列表

cloud 与 boot 对应关系

cloud版本与boot版本需要有相应对应关系,官方有提供关系数据

路由数据自定义

数据来源自由定义,主要是将数据转换为RouteDefinition(路由定义类)

  1. 继承RouteDefinitionRepository
  2. 重写getAllRouteDefinitions方法
    由框架将RouteDefinition转换为真实的Route对象

RouteDefinition中
predicates可以使用

1
2
3
4
5
6
7
8
[
{
"name" : "Path",
"args" : {
"Path" : "/**"
}
}
]

filters可以使用

1
2
3
4
5
6
7
8
[
{
"name" : "StripPrefix",
"args" : {
"_genkey_0" : 0
}
}
]
输入输出日志

实现 GlobalFilter、Ordered接口
参考该项目gateway-request-recorder-starter

转发性能

经由个人测试,当添加完输入输出拦截器,并读取输入输出流后,性能下降严重
在该github issue中可见
当前尚未解决方案

超时时间设置

gateway项目默认可设置全局超时时间

1
2
3
4
5
6
spring:
cloud:
gateway:
httpclient:
connect-timeout: 10000
response-timeout: 10000

当我们需要针对Route级别进行超时时间限制时,可参考该github issue
当版本大于Hoxton.SR4,合并了上述request merge后,在RouteDefinition中添加了metaData字段,作为额外信息

gateway提供项目本身接口

可使用WebFilter、Ordered进行拦截,注意此时所有的请求都会走该拦截器

gateway全局异常处理

可参考该教程

参考文档

Author: tuean
Link: http://tuean.cn/2020/06/17/spring-cloud-gateway记录/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶

Comment