spring cloud gateway(网关)
概念
Route(路由)
就是我们将一个请求发给网关,让其转发给具体的微服务,路由应具备唯一的id,以及目的地的url,断言集合和过滤器的集合,也就是说只要断言为真那么路由就会将其转发给具体的微服务。
Predicate(断言)
我们将一个请求发给网关,路由要不要把这个请求发给具体的微服务,需要一些套件来判断,这判断就叫做断言。
Filter(过滤器)
在请求到达目的地之前,以及响应完成之前,我们都可以对其进行过滤,处理。
客户端向 Spring Cloud Gateway 发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关的处理程序。此处理程序通过特定于请求的过滤器链运行请求。最后到达具体的微服务,微服务将响应结果继续经过过滤器链,最后到达客户端。
spring cloud gateway的使用
1.创建gateway子模块(使用spring初始化向导)
2.引入spring cloud alibaba
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--服务注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
<!--远程调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<!--全局配置-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--可视化-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
</dependencies>
3.在启动类上注上(让其可以注册到nacos)
@EnableDiscoveryClient
4.注册到nacos
server:
port: 80
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务注册中心地址
5.网关的简单示例
5.1 网关配置
spring:
cloud:
gateway:
routes:
- id: baidu #唯一表示(只要唯一即可)
uri: https://www.baidu.com #路由地址(断言成功后跳转地址)
predicates:
- Query=url,baidu #断言规则,路径中有url这个参数且,为baidu
- id: qq #唯一表示(只要唯一即可
uri: https://www.qq.com #路由地址(断言成功后跳转地址)
predicates:
- Query=url,qq #断言规则,路径中有url这个参数且qq