springcloud踩坑系列主要记录我在使用springcloud组建过程中的一些问题,方便自己以后回顾和遇到同样问题的盆友借鉴~
一、gateway简介
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。
特征:
-
基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
-
动态路由
-
Predicates 和 Filters 作用于特定路由
-
集成 Hystrix 断路器
-
集成 Spring Cloud DiscoveryClient
-
易于编写的 Predicates 和 Filters
-
限流
-
路径重写
术语:
-
Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。
-
Predicate(断言):这是一个 Java 8 的 Predicate。输入类型是一个 ServerWebExchange。我们可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。
-
Filter(过滤器):这是org.springframework.cloud.gateway.filter.GatewayFilter的实例,我们可以使用它修改请求和响应。
二、 gateway 拦截器
由于需要签名、验签,以及对密码等特殊字段进行加密解密,所以需要一个或多个filter来对请求进行处理。
注意重载方法getOrder() 中的返回的顺序越小,优先级越高。
@Slf4j
@Component
public class RequestFilter implements GlobalFilter, Ordered {
@Autowired