在SpringCloud中网关的实现包括两种:
1、gateway
2、zuul
Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。
网关的作用:
对用户请求做身份认证、权限校验
将用户请求路由到微服务,并实现负载均衡
对用户请求做限流
搭建网关服务
1、创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖
<!-- nacos服务注册发现依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--网关gateway依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2、编写路由配置及nacos地址
server:
port: 10010 #网关端口
spring:
application:
name: gateway #服务名称
cloud:
nacos:
server-addr: localhost:8849 #nacos地址
gateway:
routes:
- id: user-service #路由标识,必须唯一
uri: lb://userservice #路径的目标地址
predicates: #路由断言,判断请求是否符合规则
- Path=/user/** #路由断言,判断路径是否以/user开头
- id: order-service
uri: lb://orderservice
predicates:
- Path=/order/**
路由断言工厂Route Predicate Factory
若有多个断言需求可配置在