一、引入:
网关功能:
- 身份认证和权限校验
- 网关作为微服务入口,需要校验用户是否有请求资格,如果没有则进行拦截。
- 服务路由、负载均衡
- 一切请求都必须先经过gateway网关,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务同时部署多个时,还需要做负载均衡,也就是根据规则具体转发到某个服务。
- 请求限流
- 当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。
- 处理跨域
- 我们可以在网关中统一处理跨域问题,而不必单独在每个项目中处理。
网关的具体实现:SpringCloudGateway
在SpringCloud中网关的实现包括两种:
- gateway
- 基于Spring5中提供的WebFlux,属于响应式编程的实现,吞吐能力更强,具备更好的性能。
- zuul
- 基于Servlet的实现,属于阻塞式编程。
二、使用:
gateway网关是一个独立的服务,需要创建一个新的模块gateway
- 创建gateway服务(项目版本jdk是8,要选择8的),引入依赖
<!--gateway网关--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--nacos服务发现依赖--> <!--用于获取服务列表,如不需要可以剔除--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
- 编写启动类
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication