# 数据接口路由配置

# 概述

通过对网关路由维护与管理,实现路由、过滤器、熔断、鉴权、限流、日志、监控等功,在服务管理上进行路由配置

# 本内容你将获得

  • 路由的添加与修改
  • 服务配置
  • 熔断器配置
  • 监控器配置
  • 过滤器配置
  • 限流器配置
  • 鉴权器配置

# 路由的添加与修改

路由添加与修改步骤:

  • 点击服务管理,进入服务管理页
  • 点击创建网关服务按钮或点击已有服务 管理 > 编辑,进入路由配置页
  • 进行路由配置
  • 配置完成点击发布即可完成新增或修改

注意:

  • RoutId、系统代号、名称、服务URL、断言Path是必填项

# 服务配置

  • 网关服务URL: 用于配置后端服务URL,示例 http://server:port
  • 断言Path: 用于匹配路由路径
  • 断言Header:请求的头部需匹配该配置
  • 过滤StripPrefix: 截取断言Path多节斜杠后内容,截取数量等于该配置的值
  • 断言Host: 请求的Host需匹配该配置
  • 断言RemoteAddr: 远程ip要匹配该值,示例: RemoteAddr=192.168.1.1/100
  • 参数RequestParameter: 往请求添加参数,示例: RequestParameter=version,v1.0
  • 重定向RewritePath: 将原始请求Path指向新的Path路径,但网关路由地址不变,如:/foo/abc指向/abc

# 熔断器配置

起用熔断器,当响应超时的时候,会触发降级,转到回调路径

  • 全局方法:超时时长设置5000ms,默认回调路径fallbackUri: forward:/fallback
  • 启用自定义:自定义超时时长及降级返回内容,回调路径fallbackUri: forward:/fallback/custom

# 过滤器配置

通过过滤器配置,与注册客户端相结合,起到过滤请求的作用

  • IP过滤:注册的客户端配置的IP才可访问后端服务
  • TOKEN过滤:请求头或参数带有注册客户端的token才可访问后端服务
  • ID过滤:请求头或参数带有注册客户端的id才可访问后端服务

注意:

  • IP过滤需要配置本网关路由的注册客户端,非注册客户端IP不可访问
  • IP名单管理中的禁止通行的IP不可访问本网关路由
  • TOKEN为注册客户端中的JWT通行令牌

# 限流器配置

基于令牌桶算法的限流器,根据IP、URI、REQUESTID来进行限流

  • IP限流:当访问网关路由URL的IP数量,超出限流规则的约束,则直接拒决请求
  • URI限流: 当访问网关路由URL的URI数量,超出限流规则的约束,则直接拒决请求
  • REQUESTID限流:当访问网关路由URL的requestId参数数量,超出限流规则的约束,则直接拒决请求

代码中相对应KeyResolver:

// IP限流:
Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());

// URI限流:
Mono.just(exchange.getRequest().getURI().getPath());

// REQUESTID限流:
Mono.justOrEmpty(exchange.getRequest().getQueryParams().getFirst("requestId")).defaultIfEmpty("");  // defaultIfEmpt("")用来防止返回为null

# 鉴权器配置

获取请求中信息,通过鉴权器下的配置验证获取的信息,不符合验证规则,则直接拒决请求

  • HEADER验证: 请求中的所带的HEADER头部信息需与该配置匹配,示例:Accept-Language: zh-CN,zh;q=0.9
  • IP验证: 如果启用IP过滤,则会先执行IP过滤后,再执行本IP验证,不符合验证规则,则直接拒决请求
  • 参数验证: 获取URL请求串中的所带的参数,验证指定参数值,不符合验证规则,则直接拒决请求
  • 时间验证: 只允许指定时间段内进行访问,不符合验证规则,则直接拒决请求,示例:08:00:00,20:00:00
  • Cookie验证: 获取客户端请求所带的cookie信息,验证指定cookie参数值,不符合验证规则,则直接拒决请求

# 其他