一、基础简介
gateway特性:
- 基于SpringFramework5,ProjectReactor和SpringBoot2.0进行构建
- 能够匹配任何任何请求属性
- 可以对路由指定Predicates和Filters
- 集成断路器
- 集成Spring Cloud服务发现
- 易于编写的Predicates和Filters
- 支持请求限流
- 支持路径重写
三个概念:
路由:路由是构建网关的基本模块,它由ID,目标URI,一系列的断言Predicates和过滤器Filters组成,
如果断言为true,则匹配该路由。
断言:参考Java8的java.util.function.Predicate,开发人员可以匹配HTTP请求中的所有内容,例如请求
头或请求参数,如果请求与断言相匹配则进行路由。
过滤:Spring框架中GatewayFilter的实例,使用过滤器,可以载请求被路由前或者后对请求进行修改。
Gateway工作原理
客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到
网关Web处理程序。该处理程序通过特定于请求的过滤器链来运行请求。筛选器由虚线分隔的原因是,
筛选器可以在发送代理请求之前和之后都运行逻辑。所有“前置”过滤器逻辑均被执行。然后发出代理请
求。发出代理请求后,将运行“后”过滤器逻辑
二、快速入门
我们搞两个服务,分别是product产品服务项目,以及order订单服务项目,我们搞个小案例,搞一个网
关,统一对path请求地址进行管理;
gateway依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
application.yml配置
spring:
application:
name: gataway-server
cloud:
gateway:
routes: # 路由规则定义
- id: product #路由ID
uri: https://example.org # 路由地址
predicates: # 断言规则
- Path=/product/**
- id: order #路由ID
uri: https://example.org # 路由地址
predicates: # 断言规则
- Path=/order/**
三、Gateway路由规则
路由断言工厂
Spring Cloud Gateway 将路由匹配为 Spring WebFluxHandlerMapping基础架构的一部分。Spring Cloud Gateway 包含许多内置的路由断言工厂。所有这些断言都匹配 HTTP 请求的不同属性。您可以将多个路由断言工厂与逻辑and语句结合起来。
路由断言工厂RoutePredicateFactory包含的主要实现类如图所示,包含Datetime、Cookie、
Header、Host、Method、Path、Query、RemoteAddr、Weight等类型的路由断言。
1.日期时间路由匹配规则
匹配指定日期时间之前的请求 Before
spring:
cloud:
gateway:
routes: