spring cloud gateway特点

  1. gateway与proxied service 采用 http 通讯

  2. 匹配规则支持,确定将指定的uri转发给对应的应用

    1. 基于时间点匹配,请求发生在特定的时间点之前、之后、之间
    2. 基于cookie name 和 value(正则)匹配
    3. 基于header name 和 value(正则)匹配
    4. 基于host (正则)匹配
    5. 基于请求方法(GET、POST等)匹配
    6. 基于URI匹配
    7. 基于请求参数匹配,参数名[和参数值(正则)]
    8. 基于remote addr 匹配(可定制取远程IP的方法)
    9. 基于流量权重匹配,例如可以将约80%流量分配给应用1,将约20%流量分配给应用2
  3. 内建GatewayFilter支持

    1. AddRequestHeader 添加自定义header(支持uri variable)
    2. AddRequestParameter 添加请求参数(支持uri variable)
    3. AddResponseHeader 添加自定义响应头(支持uri variable)
    4. DedupeResponseHeader 剔除指定响应头中的重复值
    5. Hystrix 熔断(未来可能被废弃)
    6. CircuitBreaker 新熔断
    7. FallbackHeaders 用于执行异常后,向响应头添加异常信息
    8. MapRequestHeader 用于创建一个request header,header的值取自另一个已存在的header
    9. PrefixPath 给所有请求的URI添加前缀
    10. PreserveHostHeader 在gateway转发请求的时候把原始请求的host头部带上,转发给目标服务
    11. RequestRateLimiter 请求频次限制
    12. RedirectTo 重定向
    13. RemoveRequestHeader 删除请求头
    14. RemoveResponseHeader 删除响应头
    15. RemoveRequestParameter 删除请求参数
    16. RewritePath uri重写,将原始uri根据正则替换为新的uri
    17. RewriteLocationResponseHeader 修改Location响应头,将用请求头的host值,替换location响应头中的host
    18. RewriteResponseHeader 根据正则替换指定响应头的值
    19. SaveSession 在请求转发之前执行 WebSession::save,保存session状态
    20. SecureHeaders 添加一系列安全相关的响应头
    21. SetPath 类似 RewritePath,不支持正则
    22. SetRequestHeader 设置请求头(支持uri variable)
    23. SetResponseHeader 设置响应头(支持uri variable)
    24. SetStatus 设置响应码
    25. StripPrefix 从uri中抽取指定部分传递,例如将/name/blue/red 转为 /red
    26. Retry 重试
    27. RequestSize 限制请求大小
    28. ModifyRequestBody 修改请求体
    29. ModifyRequestBody 修改响应体
  4. 全局Filter(GlobalFilter) 与GatewayFilter类似,不过GatewayFilter是对指定的route起作用,而GlobalFilter则是对所有的route起作用,这些Filter根据 Ordered 接口排序

    1. ForwardRoutingFilter 转发
    2. LoadBalancerClientFilter 负载均衡(LoadBalancerClient )
    3. ReactiveLoadBalancerClientFilter 负载均衡支持(ReactorLoadBalancer )
    4. NettyRoutingFilter 使用netty HttpClient 请求后端服务
    5. NettyWriteResponseFilter 与 NettyRoutingFilter配合使用
    6. RouteToRequestUrlFilter
    7. WebSocketRoutingFilter websocket支持
    8. GatewayMetricsFilter 打印gateway的metrics信息 (routeid/routeuri/status等)
  5. HttpHeadersFilters 在请求转发前,对Header一些操作信息

  6. TLS 和 SSL支持

  7. 超时配置(connect timeout / response timeout)

  8. 服务发现支持

  9. 跨域支持

  10. 管理/监控API

详细信息及用法可查看Spring Cloud Gateway官网文档

Q.E.D.