网关功能
- 身份认证和权限校验
- 服务路由、负载均衡
- 请求限流
SpringCloud中网关
gateway
概念: gateway是基于Spring5中提供的WebFlux,属于响应式编程的实现,具有更好的性能
zuul
概念: zuul是基于servlet实现的,属于阻塞式编程。
搭建网关
- 创建新的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>
- 编写启动类
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class,args);
}
}
- 编写路由地址和nacos地址
server:
port: 10010 #网关端口
spring:
application:
name: gateway
cloud:
nacos:
server-addr: localhost:8840
gateway:
routes:
- id: user-service #路由,自定义,只要唯一即可
# uri: http://127.0.0.1:8081 #路由的目标地址,http就是固定地址
uri: lb://userservice # 路由的目标地址,lb就是负载均衡,后面接服务名称
predicates: #路由断言,就是判断请求是否符合路由规则的条件
- Path=/user/** #这个是按照路径匹配,只要以/user/开头就符合要求