1、作用:网关的主要作用是路由、转发、安全校验。
2、过程:前端发送请求,统一经过网关服务,网关通过配置文件路由,找到对应的服务,然后向Nacos拉取服务列表,做负载均衡选出具体实例,最后发送请求调用服务。有网关的情况下,前端访问后端的固定端口,就是网关服务的端口,那么服务器对外只开放网关服务的端口,保证了服务器的安全性;另外,网关服务本身也会注册到Nacos,因为需要和Nacos保持联系,获取Nacos的服务资源。
1、创建一个新的module,然后添加springboot启动类
2、添加依赖,不能添加spring-boot-start-web的依赖,会冲突,因为Spring Cloud Gateway本身是基于WebFlux构建的,而spring-boot-starter-web是基于Servlet容器的,两者不能同时存在,我的做法是把后者注释掉,具体依赖如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>3.1.0</version>
</dependency>
<!--注册中心,服务发现和注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.4</version>
</dependency>
<!--负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.1.0</version>
</dependency>
3、配置bootstrap.yml文件,主要是nacos的服务器地址
4、配置application.yml,配置端口、服务名、最重要的就是网关
spring:
cloud:
gateway:
routes:
- id: cart-service #一般就是服务名字
uri: lb://cart-service #lb表示负载均衡,//后面也可以是服务名字
predicates:
- Path=/cart/** #当前这个配置表通过路径来路由,cart就是controller上的路径
?实现之后就可以调用了,就只是把原来的请求地址的端口换成了网关的端口而已,到服务器上之后,在只开启网关服务端口的情况下,那么请求只能走网关了。