前言
网关的存在就是让请求动态路由到正确的服务,也可以在网关层做鉴权、限流、日志输出等功能的实现。
本次网关采用 Gateway 进行,不使用Zuul。
一、三大概念
1. Route(路由)
请求通过网关路由到对应的服务中。
- ID:通过不同的ID来区分不同路由
- URI:请求到服务的地址
- 断言集合
- 过滤器集合
注:只要断言为真视为匹配成功
2. Predicate(断言)
在请求经过网关时会根据请求头、参数等判断出是否符合某个路由规则
官方提供了12种断言规则
3. Filter(过滤器)
在路由到指定地址时会经过一系列过滤器,当响应请求时也会经过一系列过滤器。
官方提供了37种过滤器规则
二、整合Gateway
建议不要继承common中的依赖,会有很多依赖问题
- 1.引入依赖
代码如下:微服务的版本为 2021.0.5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 网关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>3.1.5</version>
</dependency>
<!-- bootstrap.properties依赖文件适配高版本springcloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.0</version>
</dependency>
- 2.网关服务注册
在启动类添加注解
@EnableDiscoveryClient
- 3.创建命名空间并创建配置
- 4.配置端口等信息(application.properties)
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=guli-gateway
server.port=88
- 5连接nacos配置(bootstrap.properties)
spring.application.name=guli-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=4b130b5f-4b59-4aed-b1f8-2efdd14ae549
- 6配置网关相关配置(application.yml)
目前测试阶段配置写在本地上,以后通过nacos配置中心配置
spring:
cloud:
gateway:
routes: #是个集合
- id: baidu_route #ID
uri: https://www.baidu.com #路由转发地址
predicates: #断言 是个集合 可配置多个断言
- Query=url,baidu #参数断言 url参数为baidu时 断言通过 逗号之后可以使用正则
filters: #过滤器 是个集合
- AddRequestHeader=X-Request-red, blue #添加请求头过滤器
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
具体配置方法、断言、过滤器配置可以查看官方文档
总结
本文主要讲了网关Gateway的简介以及如何在SpringCloud中整合Gateway、一些配置。