本文基于Spring Cloud Gateway SR2,理论适配Spring Cloud Gateway SR1以及更高版本。
本文详细探讨Spring Cloud Gateway内置的全局过滤器。包括:
1 Combined Global Filter and GatewayFilter Ordering
2 Forward Routing Filter
3 LoadBalancerClient Filter
4 Netty Routing Filter
5 Netty Write Response Filter
6 RouteToRequestUrl Filter
7 Websocket Routing Filter
8 Gateway Metrics Filter
9 Marking An Exchange As Routed
GlobalFilter
接口和
GatewayFilter
有一样的接口定义,只不过,
GlobalFilter
会作用于所有路由。
官方声明
:GlobalFilter的接口定义以及用法在未来的版本可能会发生变化。
个人判断
:GlobalFilter可用于生产;如果有自定义GlobalFilter的需求,理论上也可放心使用——未来即使接口定义以及使用方式发生变化,应该也是平滑过渡的(比如Zuul的Fallback,原先叫ZuulFallbackProvider,后来改叫FallbackProvider,中间就有段时间新旧使用方式都支持,后面才逐步废弃老的使用方式)。
SockJS
所谓普通http的后备,则应配置正常的HTTP路由以及Websocket路由。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
spring: cloud: gateway: routes: - id: websocket_sockjs_route uri: http://localhost:3001 predicates: - Path=/websocket/info/** - id: websocket_route uri: ws://localhost:3001 predicates: - Path=/websocket/**
|
HttpStatus.Series
分类
status
:返回给客户端的Http Status
httpStatusCode
:返回给客户端的请求的Http Status
httpMethod
:请求所使用的Http方法
这些指标暴露在
/actuator/metrics/gateway.requests
端点中,并且可以轻松与Prometheus整合,从而创建一个
Grafana
dashboard
。
Prometheus是一款监控工具,Grafana是一款监控可视化工具;Spring Boot Actuator可与这两款工具进行整合。关于整合,笔者写过手把手的博客,有兴趣可以看一下:
Spring Boot 2.x监控数据可视化(Actuator + Prometheus + Grafana手把手)
114. Global Filters
相关文章