Spring Cloud Gateway
Spring Cloud Gateway功能:
-
基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建
-
能够匹配任何请求属性上的路由。
-
谓词和过滤器特定于路由。
-
Hystrix断路器集成。
-
Spring Cloud DiscoveryClient集成
-
易于编写的谓词和过滤器
-
请求速率限制
-
路径改写
maven 依赖
- pom新增依赖 ``` xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- yaml相关配置
``` yaml
spring:
application:
# 应用名称
name: gateway
main:
allow-bean-definition-overriding: true
cloud:
# 路由网关配置
gateway:
# 设置与服务注册发现组件结合,这样可以采用服务名的路由策略
discovery:
locator:
enabled: true
# 配置路由规则
routes:
# 采用自定义路由 ID(有固定用法,不同的 id 有不同的功能,详见:https://cloud.spring.io/spring-cloud-gateway/2.0.x/single/spring-cloud-gateway.html#gateway-route-filters)
- id: CONSUMER-OAUTH2
# 采用 LoadBalanceClient 方式请求,以 lb:// 开头,后面的是注册在 Nacos 上的服务名
uri: lb://consumer-oauth2
# Predicate 翻译过来是“谓词”的意思,必须,主要作用是匹配用户的请求,有很多种用法
predicates:
# Method 方法谓词,这里是匹配 GET 和 POST 请求
#- Method=GET,POST
# 路径匹配,以 api 开头,直接配置是不生效的,看 filters 配置
- Path=/api/user/**
filters:
# 前缀过滤,默认配置下,我们的请求路径是 http://localhost:9000/consumer-oauth2/** 这时会路由到指定的服务
# 此处配置去掉 1 个路径前缀,再配置上面的 Path=/api/**,就能按照 http://localhost:9000/api/** 的方式访问了
- StripPrefix=1
Zuul
maven 依赖
1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
启动类标注注解
1
@EnableZuulProxy
yaml相关配置
1
2
3
4
5
6
7
8
9
# 构建路由地址
zuul:
routes:
# 这里可以自定义
demo2:
# 匹配的路由规则
path: /demo/**
# 路由的目标服务名
serviceId: demo