网关作用
对用户请求做身份认证、权限校验
对用户请求路由到微服务,并实现负载均衡
对用户请求做限流
在SpringCloud中网关的实现有两种:
zuul 和 gateway
zuul基于Servlet的实现,属于阻塞式编程
gateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具有更好的性能
本文主要介绍gateway的实现方式
1、创建新的模块gateway,并引入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>
<version>3.1.3</version>
</dependency>
2、配置网关
server:
port: 10010
spring:
application:
name: gateway
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
gateway:
routes:
- id: user-service
uri: lb://userservice
predicates:
- Path=/user/**
- id: order-service
uri: lb://orderservice
predicates:
- Path=/order/**
用户群 -> Gateway -> 匹配路由 -> 拉取服务列表 -> 负载均衡 -> 发送请求至各服务