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 根据路由组和指定权重进行匹配