Spring Cloud GateWay是Spring Cloud的⼀个全新项⽬,⽬标是取代Netflix Zuul,基于Spring5.0+SpringBoot2.0+WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul,官⽅测试,GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式

使用

pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置

spring.application.name=service-gateway
spring.profiles.active=dev

spring.cloud.nacos.server-addr=192.168.2.252:8848
#spring.cloud.nacos.config.namespace=68de352b-c271-4be8-906e-36a9402fd071
spring.cloud.nacos.discovery.namespace=68de352b-c271-4be8-906e-36a9402fd071

server.port=80
# 让gateway自动注册到nacos
spring.cloud.gateway.discovery.locator.enabled=true
# 路由配置
spring.cloud.gateway.routes[0].id=service-goods
spring.cloud.gateway.routes[0].uri=lb://service-goods
spring.cloud.gateway.routes[0].predicates[0]=Path=/goods/**
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1
spring.cloud.gateway.routes[1].id=service-reception
spring.cloud.gateway.routes[1].uri=lb://service-reception
spring.cloud.gateway.routes[1].predicates[0]=Path=/reception/**
spring.cloud.gateway.routes[1].filters[0]=StripPrefix=1

路由(Route): 路由是网关的基本构成单元。它由一个ID、一个目标URL、一组谓词以及一组过滤器组成。当谓词判定为true时,表示请求与对应路由匹配

谓词(Predicate): Java8函数式谓词。输入参数是Spring框架封装的ServerWebExchange对象。开发人员可以基于此对象来匹配HTTP请求的任意内容,比如请求头或请求参数

过滤器(Filter): 由特定工厂类构造的一组Spring框架提供的GatewayFilter对象。过滤器可以在请求或响应被处理前/后对其进行修改。