1.Gateway网关
*springCloud官方gateway文档:*https://docs.spring.io/spring-cloud-gateway/docs/3.0.8/reference/html/#the-setstatus-gatewayfilter-factory
SpringCloud Gateway是Spring Cloud的一个全新项目,基于Spring 5.0+Spring Boot 2.0和Project Reactor等技术开发的网关,它旨在为微服务架构提供—种简单有效的统一的API路由管理方式。SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。
Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。
Route(路由) - 路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如断言为true则匹配该路由;
Predicate(断言) - 参考的是Java8的java.util.function.Predicate,开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由;
Filter(过滤) - 指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
新建GatewayServer模块
访问网关(默认网关地址/服务名/接口)
Route Predicate Factories & GatewayFilter Factories
The Path Route Predicate Factory
server:
port: 10010
spring:
application:
name: gateway-service
# 服务发现
cloud:
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Path=/consumer/**
filters:
- StripPrefix=1
#每个规则配置一个过滤器
- id: producer
# 需要注意的是uri的协议为lb,表示启用Gateway的负载均衡功能。lb://serviceName是spring cloud gateway在微服务中自动为我们创建的负载均衡uri。
uri: lb://producer-service
predicates:
- Path=/producer/**
filters:
- StripPrefix=1
The After/Before/Between Route Predicate Factory
spring:
application:
name: gateway-service
# 服务发现
cloud:
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- After=2023-07-14T21:24:47.789+08:00[Asia/Shanghai] #此时间之后可以访问
spring:
application:
name: gateway-service
# 服务发现
cloud:
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Between=2023-07-12T21:24:47.789+08:00[Asia/Shanghai], 2023-07-14T21:24:47.789+08:00[Asia/Shanghai] #此时间之间可以访问
The Cookie Route Predicate Factory
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Cookie=kong, goku #设置有此cookie才能访问
The Header Route Predicate Factory
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Header=token, 888 #设置有此token才能访问
The Host Route Predicate Factory
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Host=**.lgl.com
The Method Route Predicate Factory
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Method=POST
The Query Route Predicate Factory
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- Query=green #设置请求里必须携带的参数
The RemoteAddr Route Predicate Factory
gateway:
routes:
- id: consumer
uri: lb://producer-consumer
predicates:
- RemoteAddr=192.168.200.1/24 #设置同一局域网才能访问
The Weight Route Predicate Factory
gateway:
routes:
- id: weight_high
uri: https://weighthigh.org
predicates:
- Weight=group1, 8
- id: weight_low
uri: https://weightlow.org
predicates:
- Weight=group1, 2 #设置权重,分配访问的频率