🥝FANMR.CN热爱,追求
Geteway

服务网关可以理解为医院的分诊台,控制请求可不可以进来,进到哪里,之前是使用Zuul网关,但是Zuul2一直跳票所以Spring官方基于webFlux框架开发了Geteway,稳定性更好,支持异步非阻塞 ,可以实现反向代理,熔断,监控等功能

项目创建

依赖

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

单Gateway配置实例

server.port=9010
spring.application.name=geteway
# 路由ID,命名要转发到的服务
spring.cloud.gateway.routes[0].id=order_route
# 路由地址,需要转发到什么地方
spring.cloud.gateway.routes[0].uri=http://localhost:9001
# 断言规则,将带有order-service的请求转发
spring.cloud.gateway.routes[0].predicates[0]=Path=/order-service/**
# 过滤转发后中的地址带order-service关键字
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1

这里只做测试用,转发地址写死,不利于维护,需要集成Nacos

集成Nacos

依赖

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

配置

server.port=9010
spring.application.name=geteway
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 路由ID,命名要转发到的服务
spring.cloud.gateway.routes[0].id=order_route
# 路由地址,需要转发到什么地方 lb:使用本地负载均衡策略
spring.cloud.gateway.routes[0].uri=lb://order-service
# 断言规则,将带有order-service的请求转发
spring.cloud.gateway.routes[0].predicates[0]=Path=/order-service/**
# 过滤转发后中的地址带order-service关键字
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1

也可以只用服务名方式,减少配置,但是不推荐,功能不全

# 简写方式,使用服务名作为转发
spring.cloud.gateway.discovery.locator.enabled=true

断言工厂

Spring Cloud Gateway 内置的路由断言工厂类