Gatewayspring cloud

网关Spring Cloud Gateway

2021-08-17  本文已影响0人  勤_

概述

spring cloud gateway提供了一个构建在 Spring 生态系统之上的 API 网关,包括:Spring 5、Spring Boot 2 和 Project Reactor。 Spring Cloud Gateway 旨在提供一种简单而有效的方式来路由到 API 并为它们提供交叉关注点,例如:安全性、监控/指标和弹性。

spring_cloud_gateway_diagram.png

依赖的框架以及版本

工具 版本
spring-boot 2.5.0
spring-cloud 2020.0.1
Spring Cloud Alibaba 2021.1
nacos 2.0.3

实现步骤

1,spring cloud gateway与nacos集成两步~

2,了解下Route、Predicates、Filter

关键源码

Predicate的核心类RoutePredicateHandlerMapping、AbstractRoutePredicateFactory

Filter核心类DefaultGatewayFilterChain、核心接口GlobalFilter、代理请求转发类NettyRoutingFilter

@Override
public Mono<Void> filter(ServerWebExchange exchange) {
   return Mono.defer(() -> {
      if (this.index < filters.size()) {
         GatewayFilter filter = filters.get(this.index);
         DefaultGatewayFilterChain chain = new DefaultGatewayFilterChain(this, this.index + 1);
         return filter.filter(exchange, chain);
      }
      else {
         return Mono.empty(); // complete
      }
   });
}

例如:RouteToRequestUrlFilter通过这个类可以方便查看到路由后的访问路径。

异常报错

1,出现503 Service Unavailable

解决方法:增加spring-cloud-starter-loadbalancer依赖

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

参考

spring cloud 与 spring cloud alibaba 版本对应关系
spring cloud gateway
Reactor 3
Spring 5 WebFlux
例子

上一篇 下一篇

猜你喜欢

热点阅读