Spring cloud gateway 源码分析03 网关路由功能02

CompositeRouteLocator ,组合多种 RouteLocator 的实现类,为 RoutePredicateHandlerMapping 提供统一入口访问路由

CachingRouteLocator ,缓存路由的 RouteLocator 实现类。RoutePredicateHandlerMapping 调用 CachingRouteLocator 的 RouteLocator#getRoutes() 方法,获取路由。

刷新缓存

 

RouteDefinitionRouteLocator 获取路由route

1.先获取RouteDefinition,然后调用convertToRoute转换成route,添加对应的predicate和filter

2.先看下获取predicate

   

  2.1 先从本地缓存获取factory,获取不到就抛出异常

  2.2 然后根据factory 加载出config配置

  

2.3 先从缓存中获取,如果缓存中没有,就构建一个http请求来获取predicate

 

3.获取过滤器filters  

   3.1 先添加默认的过滤器 defaultFilters

   3.2  再添加配置的过滤器

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

路由相关的工厂,继承图如下

RoutePredicateFactory  作为核心接口,创建routePredicate, apply方法如下

AfterRoutePredicateFactory         请求时间满足在配置时间之后 

BeforeRoutePredicateFactory      请求时间满足在配置时间之前

BetweenRoutePredicateFactory   请求时间满足在配置时间之间

CloudFoundryRouteServiceRoutePredicateFactory Paas 云平台

CookieRoutePredicateFactory     请求指定 Cookie 正则匹配指定值

HeaderRoutePredicateFactory   请求指定 Cookie 正则匹配指定值

HostRoutePredicateFactory 请求 Host 匹配指定值

MethodRoutePredicateFactory  请求 Method 匹配指定值

PathRoutePredicateFactory 请求 Path 匹配指定值

QueryRoutePredicateFactory  请求 QueryParam 匹配指定值

RemoteAddrRoutePredicateFactory: 请求来源 IP 在指定范围内

WeightRoutePredicateFactory :请求权重在指定范围内

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值