【Spring全家桶】Spring Cloud 2023.0.x:网关:Spring Cloud Gateway 核心原理、断言、过滤器、路由、限流(附《思维导图》+《面试高频考点清单》)

简介: Spring Cloud Gateway 2023.0.x(Leyton)是基于WebFlux+Netty的高性能响应式网关,替代Zuul;核心围绕Route、Predicate、Filter三大组件,支持动态路由、限流熔断、OAuth2令牌中继及AOT编译,深度集成Nacos、Sentinel与Resilience4j,要求Java 17+、Spring Boot 3.2.x。

思维导图

Spring Cloud Gateway 2023.0.x 系统性知识体系总结

一、整体概述与版本特性

1.1 网关在微服务架构中的核心作用

  • 统一入口:所有客户端请求都经过网关,对外隐藏微服务内部架构
  • 路由转发:根据请求特征将请求分发到对应的微服务实例
  • 横切关注点处理:统一处理认证授权、跨域、日志、监控、限流熔断等通用功能
  • 服务治理:结合注册中心实现服务动态发现与上下线无感切换

1.2 Spring Cloud Gateway 技术优势(对比Zuul)

  • 非阻塞IO模型:基于Spring WebFlux和Netty实现,性能比Zuul提升50%以上,支持高并发场景
  • 灵活的设计模式:基于路由、断言、过滤器的核心设计,扩展性极强
  • 原生Spring生态集成:与Spring Boot、Spring Cloud Config、Nacos等无缝对接
  • 丰富的内置功能:提供大量内置断言和过滤器,满足绝大多数业务需求

1.3 Spring Cloud 2023.0.x(Leyton)版本新特性

  • Gateway Server MVC:新增Servlet/Spring MVC兼容的同步网关实现,适用于需要保证请求顺序性的场景(如订单处理、金融交易)
  • AOT支持:Gateway Server MVC支持AOT编译,提升启动速度和内存占用
  • TokenRelay过滤器增强:支持在TokenRelay过滤器中指定clientRegistrationId,可同时使用多个授权服务器
  • Actuator增强:网关Actuator端点的发现功能得到增强
  • 基于Spring Boot 3.2.x:要求Java 17及以上版本,使用Jakarta EE 9+规范

二、核心原理与架构

2.1 核心架构图

2.2 核心组件关系

Spring Cloud Gateway的核心抽象围绕三个概念展开:路由(Route)断言(Predicate)过滤器(Filter)

组件 作用 输入 输出
Route 网关的基本构建块,定义请求转发规则 无(配置对象) 匹配成功则转发到目标URI
Predicate 路由匹配条件,判断请求是否符合该路由 ServerWebExchange(包含完整HTTP请求信息) boolean(true表示匹配成功)
Filter 请求和响应的处理逻辑,可在转发前后执行 ServerWebExchange 处理后的ServerWebExchange

2.3 完整工作流程

  1. 客户端发送请求到Spring Cloud Gateway服务器
  2. HttpWebHandlerAdapter提取HTTP请求信息,组装成ServerWebExchange对象
  3. DispatcherHandler将请求分发到RoutePredicateHandlerMapping
  4. RoutePredicateHandlerMapping遍历所有路由,使用断言集合匹配请求
  5. 找到第一个匹配成功的路由后,构建对应的过滤器链
  6. Gateway Web Handler执行过滤器链的Pre阶段逻辑(按优先级从高到低)
  7. 发送代理请求到下游微服务
  8. 下游服务处理请求并返回响应
  9. 执行过滤器链的Post阶段逻辑(按优先级从低到高,与Pre阶段顺序相反)
  10. 将处理后的响应返回给客户端

2.4 关键技术基础

  • 响应式编程模型:基于Reactor框架,所有操作都是非阻塞的
  • Netty服务器:默认使用高性能的Netty作为网络服务器
  • ServerWebExchange:封装了HTTP请求和响应,以及网关上下文信息
  • WebFlux:Spring 5引入的响应式Web框架,替代传统的Spring MVC

三、路由(Route)详解

3.1 路由的组成要素

一个完整的路由由以下几个部分组成:

  • id:路由的唯一标识符,用于配置和管理
  • uri:请求转发的目标地址,支持两种格式:
    • 固定URL:http://example.com:8080
    • 服务发现模式:lb://service-name(lb表示使用负载均衡)
  • predicates:断言集合,用于匹配HTTP请求
  • filters:过滤器集合,用于处理请求和响应
  • order:路由优先级,数值越小优先级越高
  • metadata:可选的自定义键值对数据

3.2 路由配置方式

3.2.1 配置文件方式(application.yml)

spring:
  cloud:
    gateway:
      routes:
        - id: user-service-route
          uri: lb://user-service
          predicates:
            - Path=/api/users/**
            - Method=GET,POST
          filters:
            - StripPrefix=1
            - AddRequestHeader=X-Gateway-Source, spring-cloud-gateway

3.2.2 Java代码方式(RouteLocatorBuilder)

@Configuration
public class GatewayConfig {
   
    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
   
        return builder.routes()
            .route("user-service-route", r -> r
                .path("/api/users/**")
                .and()
                .method(HttpMethod.GET, HttpMethod.POST)
                .filters(f -> f
                    .stripPrefix(1)
                    .addRequestHeader("X-Gateway-Source", "spring-cloud-gateway"))
                .uri("lb://user-service"))
            .build();
    }
}

3.3 动态路由

Spring Cloud Gateway支持动态路由配置,无需重启网关即可更新路由规则。实现方式:

  • 实现RouteDefinitionLocator接口,从配置中心(如Nacos、Apollo)获取路由定义
  • 使用Spring Cloud Gateway提供的Actuator端点(/actuator/gateway/routes)进行动态管理
  • 结合Spring Cloud Config实现配置的集中管理和动态刷新

四、断言(Predicate)详解

4.1 断言的本质

断言是Java 8中Predicate<ServerWebExchange>接口的实现,用于判断请求是否符合某个条件。多个断言可以通过逻辑运算符(and、or、negate)组合使用。

4.2 内置断言工厂

Spring Cloud Gateway提供了丰富的内置断言工厂,覆盖了HTTP请求的各个方面:

断言工厂 作用 示例
Path 匹配请求路径 - Path=/api/**,/admin/**
Method 匹配HTTP方法 - Method=GET,POST
Header 匹配请求头 - Header=X-Request-Id, \d+
Query 匹配请求参数 - Query=name, john.*
Cookie 匹配Cookie - Cookie=sessionId, abc123
RemoteAddr 匹配客户端IP地址 - RemoteAddr=192.168.1.1/24
Host 匹配请求Host头 - Host=**.example.com
Between 匹配时间范围 - Between=2024-01-01T00:00:00+08:00,2024-12-31T23:59:59+08:00
Before 匹配指定时间之前 - Before=2024-06-01T00:00:00+08:00
After 匹配指定时间之后 - After=2024-01-01T00:00:00+08:00
Weight 按权重路由 - Weight=group1, 80

4.3 自定义断言

如果内置断言无法满足需求,可以通过实现RoutePredicateFactory接口来自定义断言:

@Component
public class CustomRoutePredicateFactory extends AbstractRoutePredicateFactory<CustomRoutePredicateFactory.Config> {
   

    public CustomRoutePredicateFactory() {
   
        super(Config.class);
    }

    @Override
    public Predicate<ServerWebExchange> apply(Config config) {
   
        return exchange -> {
   
            // 自定义匹配逻辑
            String headerValue = exchange.getRequest().getHeaders().getFirst(config.getHeaderName());
            return headerValue != null && headerValue.contains(config.getContainsValue());
        };
    }

    public static class Config {
   
        private String headerName;
        private String containsValue;
        // getter和setter
    }
}

五、过滤器(Filter)详解

5.1 过滤器的分类

Spring Cloud Gateway的过滤器分为两大类:

过滤器类型 作用范围 实现方式 示例
GatewayFilter 单个路由 实现GatewayFilter接口或使用GatewayFilterFactory AddRequestHeader、StripPrefix
GlobalFilter 所有路由 实现GlobalFilter接口 LoadBalancerClientFilter、NettyRoutingFilter

5.2 过滤器的执行顺序

  • 所有过滤器都实现了Ordered接口,通过getOrder()方法返回优先级
  • Pre阶段:按order值从小到大执行(值越小优先级越高)
  • Post阶段:按order值从大到小执行(与Pre阶段顺序相反)
  • 全局过滤器和路由过滤器会合并成一个过滤器链执行

5.3 常用内置过滤器

5.3.1 请求处理过滤器

  • AddRequestHeader:添加请求头
  • RemoveRequestHeader:移除请求头
  • AddRequestParameter:添加请求参数
  • RemoveRequestParameter:移除请求参数
  • SetPath:设置请求路径
  • RewritePath:重写请求路径
  • StripPrefix:去除路径前缀
  • PrefixPath:添加路径前缀

5.3.2 响应处理过滤器

  • AddResponseHeader:添加响应头
  • RemoveResponseHeader:移除响应头
  • SetStatus:设置响应状态码
  • RedirectTo:重定向请求

5.3.3 高级功能过滤器

  • Retry:请求重试
  • CircuitBreaker:熔断保护
  • RequestRateLimiter:请求限流
  • CacheRequestBody:缓存请求体(Spring Cloud Gateway 4.0+)
  • LocalCacheResponseBody:缓存响应体(Spring Cloud Gateway 4.0+)
  • TokenRelay:令牌中继,用于OAuth2认证

5.4 自定义过滤器

5.4.1 自定义GatewayFilter

@Component
public class CustomGatewayFilterFactory extends AbstractGatewayFilterFactory<CustomGatewayFilterFactory.Config> {
   

    public CustomGatewayFilterFactory() {
   
        super(Config.class);
    }

    @Override
    public GatewayFilter apply(Config config) {
   
        return (exchange, chain) -> {
   
            // Pre阶段逻辑
            ServerHttpRequest request = exchange.getRequest().mutate()
                .header("X-Custom-Header", config.getHeaderValue())
                .build();

            return chain.filter(exchange.mutate().request(request).build())
                .then(Mono.fromRunnable(() -> {
   
                    // Post阶段逻辑
                    ServerHttpResponse response = exchange.getResponse();
                    response.getHeaders().add("X-Custom-Response-Header", "Processed");
                }));
        };
    }

    public static class Config {
   
        private String headerValue;
        // getter和setter
    }
}

5.4.2 自定义GlobalFilter

@Component
@Order(-1) // 设置优先级
public class CustomGlobalFilter implements GlobalFilter {
   

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
   
        // Pre阶段逻辑:记录请求开始时间
        exchange.getAttributes().put("startTime", System.currentTimeMillis());

        return chain.filter(exchange)
            .then(Mono.fromRunnable(() -> {
   
                // Post阶段逻辑:计算请求处理时间
                Long startTime = exchange.getAttribute("startTime");
                if (startTime != null) {
   
                    long duration = System.currentTimeMillis() - startTime;
                    System.out.println("请求处理时间:" + duration + "ms");
                }
            }));
    }
}

六、限流(Rate Limiting)详解

6.1 限流的核心概念

限流是网关的核心功能之一,用于保护下游微服务免受突发流量的冲击。Spring Cloud Gateway提供了基于Redis的令牌桶算法实现。

6.2 官方RequestRateLimiter过滤器

6.2.1 核心参数

  • replenishRate:令牌桶填充速率(每秒生成多少个令牌)
  • burstCapacity:令牌桶最大容量(允许的最大突发流量)
  • keyResolver:限流键解析器,用于确定限流的维度(如用户ID、IP地址、请求路径等)

6.2.2 配置示例

spring:
  redis:
    host: localhost
    port: 6379
    database: 0
  cloud:
    gateway:
      routes:
        - id: user-service-route
          uri: lb://user-service
          predicates:
            - Path=/api/users/**
          filters:
            - StripPrefix=1
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 10  # 每秒生成10个令牌
                redis-rate-limiter.burstCapacity: 20   # 令牌桶最大容量20
                keyResolver: '#{@ipKeyResolver}'      # 使用IP地址作为限流键

6.2.3 自定义KeyResolver

@Configuration
public class RateLimiterConfig {
   

    @Bean
    public KeyResolver ipKeyResolver() {
   
        return exchange -> Mono.just(
            exchange.getRequest().getRemoteAddress().getAddress().getHostAddress()
        );
    }

    @Bean
    public KeyResolver userKeyResolver() {
   
        return exchange -> Mono.just(
            exchange.getRequest().getHeaders().getFirst("X-User-Id")
        );
    }
}

6.3 集成Sentinel实现更强大的限流

Spring Cloud Gateway可以与Alibaba Sentinel集成,提供更丰富的限流功能:

  • 支持QPS限流、线程数限流
  • 支持基于调用关系的限流
  • 支持热点参数限流
  • 支持系统自适应限流
  • 支持熔断降级功能
  • 提供可视化的控制台进行规则管理

6.3.1 Sentinel集成配置

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
      datasource:
        flow-rules:
          nacos:
            server-addr: localhost:8848
            data-id: gateway-sentinel-flow-rules
            group-id: SENTINEL_GROUP
            rule-type: flow
    gateway:
      enabled: true
      fallback:
        mode: response
        response-body: '{"code":429,"msg":"请求过于频繁,请稍后再试"}'
        response-status: 429

七、高级特性与最佳实践

7.1 跨域配置

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
            allowedOrigins: "https://example.com"
            allowedMethods:
              - GET
              - POST
              - PUT
              - DELETE
            allowedHeaders: "*"
            allowCredentials: true
            maxAge: 3600

7.2 负载均衡

Spring Cloud Gateway默认集成了Spring Cloud LoadBalancer,当使用lb://service-name格式的URI时,会自动启用负载均衡功能。支持多种负载均衡策略:

  • 轮询策略(默认)
  • 随机策略
  • 权重策略
  • 一致性哈希策略

7.3 熔断降级

Spring Cloud Gateway集成了CircuitBreaker组件,支持多种熔断实现:

  • Resilience4j(推荐)
  • Spring Retry
  • Hystrix(已过时)

7.4 监控与可观测性

  • Actuator端点:提供/actuator/gateway/routes/actuator/gateway/globalfilters等端点用于监控网关状态
  • Micrometer集成:自动收集网关的性能指标
  • 分布式追踪:支持Zipkin、Jaeger等分布式追踪系统
  • 日志:配置详细的请求和响应日志,便于问题排查

7.5 生产环境最佳实践

  1. 集群部署:网关作为系统入口,必须部署多个实例保证高可用
  2. 合理设置超时时间:避免因下游服务响应慢导致网关阻塞
  3. 配置合理的限流策略:根据下游服务的处理能力设置限流阈值
  4. 启用熔断降级:防止单个服务故障影响整个系统
  5. 完善的监控告警:实时监控网关的性能指标和异常情况
  6. 定期更新依赖:及时修复安全漏洞和性能问题

Spring Cloud Gateway 2023.0.x 面试高频问答卡片

(按知识模块分类,标注高频考点2023.0.x专属考点

一、整体概述与版本特性

卡片1:微服务网关的核心作用是什么?

答案

  1. 统一入口:所有客户端请求都经过网关,对外隐藏微服务内部架构
  2. 路由转发:根据请求特征将请求分发到对应的微服务实例
  3. 横切关注点处理:统一处理认证授权、跨域、日志、监控、限流熔断等通用功能
  4. 服务治理:结合注册中心实现服务动态发现与上下线无感切换

卡片2:Spring Cloud Gateway相比Zuul有哪些技术优势?

答案

  1. 非阻塞IO模型:基于Spring WebFlux和Netty实现,性能比Zuul提升50%以上,支持高并发场景
  2. 灵活的设计模式:基于路由、断言、过滤器的核心设计,扩展性极强
  3. 原生Spring生态集成:与Spring Boot、Spring Cloud Config、Nacos等无缝对接
  4. 丰富的内置功能:提供大量内置断言和过滤器,满足绝大多数业务需求

卡片3:2023.0.x专属 Spring Cloud 2023.0.x(Leyton)版本有哪些重要新特性?

答案

  1. Gateway Server MVC:新增Servlet/Spring MVC兼容的同步网关实现,适用于需要保证请求顺序性的场景(如订单处理、金融交易)
  2. AOT支持:Gateway Server MVC支持AOT编译,显著提升启动速度和降低内存占用
  3. TokenRelay过滤器增强:支持在TokenRelay过滤器中指定clientRegistrationId,可同时使用多个授权服务器
  4. Actuator增强:网关Actuator端点的发现功能得到全面增强
  5. 基础依赖升级:基于Spring Boot 3.2.x,要求Java 17及以上版本,使用Jakarta EE 9+规范

二、核心原理与架构

卡片4:高频考点 Spring Cloud Gateway的三大核心组件是什么?各自的作用是什么?

答案

组件 核心作用
Route(路由) 网关的基本构建块,定义请求转发规则,包含id、uri、断言集合、过滤器集合等
Predicate(断言) 路由匹配条件,判断请求是否符合该路由,输入为ServerWebExchange,输出为boolean
Filter(过滤器) 请求和响应的处理逻辑,可在转发前后执行,用于实现横切关注点功能

卡片5:高频考点 简述Spring Cloud Gateway的完整工作流程

答案

  1. 客户端发送请求到Spring Cloud Gateway服务器
  2. HttpWebHandlerAdapter提取HTTP请求信息,组装成ServerWebExchange对象
  3. DispatcherHandler将请求分发到RoutePredicateHandlerMapping
  4. RoutePredicateHandlerMapping遍历所有路由,使用断言集合匹配请求
  5. 找到第一个匹配成功的路由后,构建对应的过滤器链
  6. Gateway Web Handler执行过滤器链的Pre阶段逻辑(按优先级从高到低)
  7. 发送代理请求到下游微服务
  8. 下游服务处理请求并返回响应
  9. 执行过滤器链的Post阶段逻辑(按优先级从低到高,与Pre阶段顺序相反)
  10. 将处理后的响应返回给客户端

卡片6:Spring Cloud Gateway的关键技术基础有哪些?

答案

  1. 响应式编程模型:基于Reactor框架,全链路非阻塞
  2. Netty服务器:默认使用高性能的Netty作为网络通信层
  3. ServerWebExchange:封装了HTTP请求、响应和网关上下文信息
  4. Spring WebFlux:Spring 5引入的响应式Web框架,替代传统的Spring MVC

三、路由(Route)详解

卡片7:一个完整的路由由哪些组成要素?

答案

  1. id:路由的唯一标识符,用于配置和管理
  2. uri:请求转发的目标地址,支持两种格式:
    • 固定URL:http://example.com:8080
    • 服务发现模式:lb://service-name(lb表示使用负载均衡)
  3. predicates:断言集合,用于匹配HTTP请求
  4. filters:过滤器集合,用于处理请求和响应
  5. order:路由优先级,数值越小优先级越高
  6. metadata:可选的自定义键值对数据

卡片8:Spring Cloud Gateway有哪两种主要的路由配置方式?

答案

  1. 配置文件方式(application.yml):通过YAML配置文件定义路由规则,简单直观,适合静态路由
  2. Java代码方式(RouteLocatorBuilder):通过编写Java代码创建RouteLocator Bean,灵活性更高,适合复杂路由逻辑

卡片9:高频考点 如何实现Spring Cloud Gateway的动态路由?

答案

  1. 实现RouteDefinitionLocator接口,从配置中心(如Nacos、Apollo)获取路由定义
  2. 使用Spring Cloud Gateway提供的Actuator端点(/actuator/gateway/routes)进行动态管理
  3. 结合Spring Cloud Config实现配置的集中管理和动态刷新

四、断言(Predicate)详解

卡片10:断言的本质是什么?

答案
断言是Java 8中Predicate<ServerWebExchange>接口的实现,用于判断请求是否符合某个条件。多个断言可以通过逻辑运算符(and、or、negate)组合使用。

卡片11:列举至少5种Spring Cloud Gateway的内置断言工厂及其作用

答案

  1. Path:匹配请求路径
  2. Method:匹配HTTP方法
  3. Header:匹配请求头
  4. Query:匹配请求参数
  5. Cookie:匹配Cookie
  6. RemoteAddr:匹配客户端IP地址
  7. Host:匹配请求Host头
  8. Between/Before/After:匹配时间范围
  9. Weight:按权重路由

卡片12:如何自定义Spring Cloud Gateway的断言?

答案
通过实现RoutePredicateFactory接口来自定义断言,步骤如下:

  1. 创建一个类继承AbstractRoutePredicateFactory<Config>
  2. 定义配置类Config,用于接收断言参数
  3. 重写apply方法,实现自定义的匹配逻辑
  4. 将自定义断言工厂注册为Spring Bean

五、过滤器(Filter)详解

卡片13:高频考点 Spring Cloud Gateway的过滤器分为哪两类?有什么区别?

答案

过滤器类型 作用范围 实现方式 示例
GatewayFilter 单个路由生效 实现GatewayFilter接口或使用GatewayFilterFactory AddRequestHeader、StripPrefix
GlobalFilter 所有路由生效 实现GlobalFilter接口 LoadBalancerClientFilter、NettyRoutingFilter

卡片14:高频考点 Spring Cloud Gateway过滤器的执行顺序是怎样的?

答案

  1. 所有过滤器都实现了Ordered接口,通过getOrder()方法返回优先级
  2. Pre阶段:按order值从小到大执行(值越小优先级越高)
  3. Post阶段:按order值从大到小执行(与Pre阶段顺序相反)
  4. 全局过滤器和路由过滤器会合并成一个过滤器链执行

卡片15:列举至少5种常用的内置过滤器及其作用

答案

  1. StripPrefix:去除路径前缀
  2. AddRequestHeader:添加请求头
  3. RewritePath:重写请求路径
  4. AddResponseHeader:添加响应头
  5. SetStatus:设置响应状态码
  6. Retry:请求重试
  7. CircuitBreaker:熔断保护
  8. RequestRateLimiter:请求限流
  9. TokenRelay:令牌中继,用于OAuth2认证

卡片16:如何自定义Spring Cloud Gateway的过滤器?

答案
有两种自定义过滤器的方式:

  1. 自定义GatewayFilter
    • 继承AbstractGatewayFilterFactory<Config>
    • 定义配置类Config
    • 重写apply方法,实现Pre和Post阶段逻辑
    • 注册为Spring Bean
  2. 自定义GlobalFilter
    • 实现GlobalFilterOrdered接口
    • 重写filter方法,实现全局处理逻辑
    • 注册为Spring Bean

六、限流(Rate Limiting)详解

卡片17:高频考点 Spring Cloud Gateway官方提供的限流过滤器是什么?基于什么算法实现?

答案
官方提供的限流过滤器是RequestRateLimiter,基于Redis的令牌桶算法实现。

卡片18:RequestRateLimiter过滤器的核心参数有哪些?各自的含义是什么?

答案

  1. replenishRate:令牌桶填充速率(每秒生成多少个令牌)
  2. burstCapacity:令牌桶最大容量(允许的最大突发流量)
  3. keyResolver:限流键解析器,用于确定限流的维度(如用户ID、IP地址、请求路径等)

卡片19:如何自定义限流的维度?

答案
通过实现KeyResolver接口来自定义限流维度,示例:

@Bean
public KeyResolver ipKeyResolver() {
   
    return exchange -> Mono.just(
        exchange.getRequest().getRemoteAddress().getAddress().getHostAddress()
    );
}

常见的限流维度:IP地址、用户ID、请求路径、接口名称等。

卡片20:Spring Cloud Gateway集成Sentinel相比官方限流有哪些优势?

答案

  1. 支持QPS限流、线程数限流
  2. 支持基于调用关系的限流
  3. 支持热点参数限流
  4. 支持系统自适应限流
  5. 支持熔断降级功能
  6. 提供可视化的控制台进行规则管理
  7. 支持规则持久化到Nacos、Apollo等配置中心

七、高级特性与最佳实践

卡片21:如何在Spring Cloud Gateway中配置全局跨域?

答案
通过spring.cloud.gateway.globalcors配置项实现全局跨域:

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
            allowedOrigins: "https://example.com"
            allowedMethods: [GET, POST, PUT, DELETE]
            allowedHeaders: "*"
            allowCredentials: true
            maxAge: 3600

卡片22:Spring Cloud Gateway的负载均衡是如何实现的?支持哪些策略?

答案
Spring Cloud Gateway默认集成了Spring Cloud LoadBalancer,当使用lb://service-name格式的URI时,会自动启用负载均衡功能。

支持的负载均衡策略:

  • 轮询策略(默认)
  • 随机策略
  • 权重策略
  • 一致性哈希策略

卡片23:高频考点 Spring Cloud Gateway支持哪些熔断实现?推荐使用哪一个?

答案
支持的熔断实现:

  1. Resilience4j(推荐):轻量级、功能强大,是Spring Cloud官方推荐的熔断组件
  2. Spring Retry:简单的重试机制
  3. Hystrix:已过时,不推荐使用

卡片24:Spring Cloud Gateway的监控与可观测性如何实现?

答案

  1. Actuator端点:提供/actuator/gateway/routes/actuator/gateway/globalfilters等端点用于监控网关状态
  2. Micrometer集成:自动收集网关的性能指标
  3. 分布式追踪:支持Zipkin、Jaeger等分布式追踪系统
  4. 日志:配置详细的请求和响应日志,便于问题排查

卡片25:高频考点 Spring Cloud Gateway生产环境有哪些最佳实践?

答案

  1. 集群部署:网关作为系统入口,必须部署多个实例保证高可用
  2. 合理设置超时时间:避免因下游服务响应慢导致网关阻塞
  3. 配置分级限流策略:根据下游服务的处理能力设置不同的限流阈值
  4. 启用熔断降级:防止单个服务故障影响整个系统
  5. 完善的监控告警:实时监控网关的性能指标和异常情况
  6. 定期更新依赖:及时修复安全漏洞和性能问题
  7. 启用HTTPS:保证数据传输安全
  8. 配置合理的缓存策略:减少下游服务的压力
相关文章
|
15天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
5768 29
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
10天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1168 2
|
7天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
940 1
|
17天前
|
人工智能 自然语言处理 供应链
|
8天前
|
人工智能 弹性计算 安全
阿里云618活动时间、活动入口、优惠活动详细解读
2026年阿里云618创新加速季已全面开启,作为年度力度最大的云产品促销活动,本次大促覆盖轻量应用服务器、ECS云服务器、GPU云服务器、数据库、AI算力、安全服务、CDN等全品类产品,推出5亿元算力补贴、新用户限时秒杀、普惠满减、企业专享、免费试用、云大使返佣等多重福利,个人开发者、中小企业、AI团队均可享受专属低价。本文将系统梳理2026年阿里云618活动的完整时间节点、官方参与入口、各类优惠细则、使用规则、热门产品推荐及实操代码,帮助用户精准参与、高效省钱,以最低成本完成上云部署。
719 4
|
23天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3831 15
|
8天前
|
运维
欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
1425 0