spring cloud gateway的核心包含这么些功能:
actuate 端点
GatewayControllerEndpoint(网关控制器端点),提供了一系列的restful api,用于
操作Route. Filter. 刷新路由配置等接口,提供的接口有:
- /refresh 刷新路由配置
- /globalfilters 获取全部的全局过滤器
- /routefilters 获取全部的路由过滤器
- /routes 获取路由配置
- /routes/{id} get 根据id获取路由配置信息
- /routes/{id} post 添加路由配置信息
- /routes/{id} delete 添加路由配置信息
- /routes/{id}/combinedfilters 获取路由配置信息和过滤器结合的信息
config 配置
用做网关的各类配置
discovery 发现
服务发现相关的api,可以配合注册中心做各种操作
event 事件
通过事件去做一些操作,比如:
- FilterArgsEvent(过滤参数事件)
- PredicateArgsEvent(谓词参数事件,也就是判断参数是否符合情况的事件)
- RefreshRoutesEvent(刷新路由事件,GatewayControllerEndpoint刷新路由的restful api就是通过调用此事件完成的)
- WeightDefinedEvent(权重定义时间,用于设置权重配置,比如做负载均衡的时候可以设置权重)
filter 过滤器
gateway中默认提供了大量的过滤器实现,可以实现诸如修改请求的路径,请求的
参数,增加请求头,或者响应头等等
handler 处理器
gateway中提供了很多校验条件谓语(predicate)来实现路由功能,根据这些谓语
效验,可以非常灵活的控制不同场景下的路由处理问题。,比如有很多种情况:
- 请求时间效验条件谓语
- 请求Cookies时间效验谓语
- 请求Header效验谓语
- 请求Host效验条件谓语
- 请求Method效验条件谓语
- 请求Path效验条件谓语
- 请求查询参数效验条件谓语
- 请求远程地址效验条件谓语
route 路由
可以根据谓语配置不同的路由,根据配置的先后顺序来跳转,越在前面优先级越
高 主要做路由加载. 路由信息定义. 可以从不同的地方加载路由,同时根据builder
api构建路由配置。
support 支持
主要一些工具类,比如ip地址解析. 权重配置. 字符串与时间的转换器之类的