Spring Cloud Gateway

1、首先了解个东西ServerWebExchange(服务网络交换器)

ServerWebExchange存储了当前请求得上下文,包括Request和Response 对象,并公开额外的 服务器 端处理相关属性和特性,如请求属性以下为实现类

DefaultServerWebExchange

DefaultServerRequestBuilder 内部类DelegatingServerWebExchange 实现该接口

MockServerWebExchange

DefaultServerWebExchangeBuilder 内部类MutativeDecorator 实现该接口

ServerWebExchangeDecorator

 

2、RouteDefinitionLocator 路由定位器

org.springframework.cloud.gateway.route.RouteDefinitionLocator ,路由定义定位器接口,只有一个方法,用来获取路由定义列表的方法。


public interface RouteDefinitionLocator {
 
	Flux<RouteDefinition> getRouteDefinitions();
}

实现类

  • PropertiesRouteDefinitionLocator:基于属性配置:从配置文件读取路由配置信息
  • DiscoveryClientRouteDefinitionLocator:基于服务发现:该类通过服务发现组件从注册中心获取服务信息,此时路由定义的源就是配置中心
  • CompositeRouteDefinitionLocator:组合方式:组合方式路由定义定位器使用组合模式进行实现,组合多个 RouteDefinitionLocator 的实现,为获取路由定义信息 getRouteDefinitions 提供统一入口,组合的逻辑很简单,通过传入的路由定义定位器作为代理,具体的路由定义实际上是由传入的路由定义定位器产生。
  • CachingRouteDefinitionLocator:缓存方式:缓存方式的路由定义定位器,通过传入路由定义定位器获取路由定义并缓存到本地。通过监听路由刷新时间RefreshRoutesEvent 来刷新本地缓存的路由定义信息

扩展接口

RouteDefinitionRepositor 保存或删除路由 实现类 InMemoryRouteDefinitionRepository

3、路由谓词工厂 RoutePredicateFactory(这个理解为路由过滤工厂更合适)

  • AbstractRoutePredicateFactory<C> 抽象实现类
  • AfterRoutePredicateFactory 请求时间在指定时间点之后
  • BeforeRoutePredicateFactory 请求时间在指定时间点之前
  • BetweenRoutePredicateFactory 请求时间在指定时间段之间
  • CloudFoundryRouteServiceRoutePredicateFactory 请求头包含指定属性
  • CookieRoutePredicateFactory 请求cookie正则匹配
  • HeaderRoutePredicateFactory 请求头属性正则匹配
  • HostRoutePredicateFactory 请求host匹配指定值
  • MethodRoutePredicateFactory 请求方法匹配指定值
  • PathRoutePredicateFactory 请求路径正则匹配
  • QueryRoutePredicateFactory 请求参数正则匹配
  • ReadBodyPredicateFactory 异步body缓存匹配(注释说得意思大概是对body进行缓存然后无需进行多次读取)
  • RemoteAddrRoutePredicateFactory 远程地址匹配指定值
  • WeightRoutePredicateFactory 根据路由组和指定权重进行匹配

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章