- 新建一个module添加依赖:
xml
<!--Spring Cloud 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>
- application,yml中配置路由:
yaml
server:
port: 10010 #网关端口
spring:
application:
name: server #服务名称
cloud:
nacos:
discovery:
server-addr: localhost:8848 #将网关注册到naocs中心
cloud:
gateway:
routes:
- id: service-route # 路由ID
uri: http://backend-service # 后端服务地址
predicates:
- Path=/api/** # 请求路径匹配规则
3.编写启动类启用网关:
java
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
Spring Cloud Gateway是Spring Cloud中的一个组件,它作为微服务的统一入口,主要作用包括:
- 请求路由:所有进入Spring Cloud Gateway的请求都会被路由到对应的微服务。路由规则可以通过配置文件灵活地进行定制。
- 权限控制:网关作为微服务入口,需要校验用户是否有请求资格,如果没有则进行拦截。权限控制可以基于各种条件,例如IP地址、用户名、请求头信息等。
- 限流:当请求流量过高时,Spring Cloud Gateway会在内部进行限流,即按照下游微服务能够接受的速度来放行请求,避免服务压力过大。
- 负载均衡:当目标服务有多个时,Spring Cloud Gateway会进行负载均衡,以确保各个微服务负载均匀,提高整体性能。
Spring Cloud Gateway还支持多种编程范式,例如阻塞式编程和响应式编程。在Spring Cloud生态中,Zuul网关和Spring Cloud Gateway可以共存,前者更适用于阻塞式编程,而后者则是基于Spring5中提供的WebFlux,更适合于响应式编程。