spring cloud gateway特点
-
gateway与proxied service 采用 http 通讯
-
匹配规则支持,确定将指定的uri转发给对应的应用
- 基于时间点匹配,请求发生在特定的时间点之前、之后、之间
- 基于cookie name 和 value(正则)匹配
- 基于header name 和 value(正则)匹配
- 基于host (正则)匹配
- 基于请求方法(GET、POST等)匹配
- 基于URI匹配
- 基于请求参数匹配,参数名[和参数值(正则)]
- 基于remote addr 匹配(可定制取远程IP的方法)
- 基于流量权重匹配,例如可以将约80%流量分配给应用1,将约20%流量分配给应用2
-
内建GatewayFilter支持
- AddRequestHeader 添加自定义header(支持uri variable)
- AddRequestParameter 添加请求参数(支持uri variable)
- AddResponseHeader 添加自定义响应头(支持uri variable)
- DedupeResponseHeader 剔除指定响应头中的重复值
- Hystrix 熔断(未来可能被废弃)
- CircuitBreaker 新熔断
- FallbackHeaders 用于执行异常后,向响应头添加异常信息
- MapRequestHeader 用于创建一个request header,header的值取自另一个已存在的header
- PrefixPath 给所有请求的URI添加前缀
- PreserveHostHeader 在gateway转发请求的时候把原始请求的host头部带上,转发给目标服务
- RequestRateLimiter 请求频次限制
- RedirectTo 重定向
- RemoveRequestHeader 删除请求头
- RemoveResponseHeader 删除响应头
- RemoveRequestParameter 删除请求参数
- RewritePath uri重写,将原始uri根据正则替换为新的uri
- RewriteLocationResponseHeader 修改Location响应头,将用请求头的host值,替换location响应头中的host
- RewriteResponseHeader 根据正则替换指定响应头的值
- SaveSession 在请求转发之前执行 WebSession::save,保存session状态
- SecureHeaders 添加一系列安全相关的响应头
- SetPath 类似 RewritePath,不支持正则
- SetRequestHeader 设置请求头(支持uri variable)
- SetResponseHeader 设置响应头(支持uri variable)
- SetStatus 设置响应码
- StripPrefix 从uri中抽取指定部分传递,例如将/name/blue/red 转为 /red
- Retry 重试
- RequestSize 限制请求大小
- ModifyRequestBody 修改请求体
- ModifyRequestBody 修改响应体
-
全局Filter(GlobalFilter) 与GatewayFilter类似,不过GatewayFilter是对指定的route起作用,而GlobalFilter则是对所有的route起作用,这些Filter根据 Ordered 接口排序
- ForwardRoutingFilter 转发
- LoadBalancerClientFilter 负载均衡(LoadBalancerClient )
- ReactiveLoadBalancerClientFilter 负载均衡支持(ReactorLoadBalancer )
- NettyRoutingFilter 使用netty HttpClient 请求后端服务
- NettyWriteResponseFilter 与 NettyRoutingFilter配合使用
- RouteToRequestUrlFilter
- WebSocketRoutingFilter websocket支持
- GatewayMetricsFilter 打印gateway的metrics信息 (routeid/routeuri/status等)
-
HttpHeadersFilters 在请求转发前,对Header一些操作信息
-
TLS 和 SSL支持
-
超时配置(connect timeout / response timeout)
-
服务发现支持
-
跨域支持
-
管理/监控API
详细信息及用法可查看Spring Cloud Gateway官网文档
Q.E.D.