【序列晋升】21 Spring Cloud Gateway 云原生网关演进之路

Spring Cloud Gateway作为Spring生态系统中的核心组件,已成为微服务架构中的首选API网关解决方案。它基于响应式编程模型,提供高性能、可扩展的路由管理和跨领域功能,解决了传统微服务架构中的接口聚合、安全管控和流量控制等核心问题。与此同时我们见证了网关组件从 “可选工具” 到 “核心基础设施” 的转变。在微服务架构中,网关承担着路由转发、流量控制、安全防护等关键职责,而Spring Cloud Gateway作为 Spring 生态官方推荐的网关解决方案,凭借其响应式架构、强大的扩展性和无缝的 Spring 集成,已成为绝大多数微服务项目的首选。本文将深入剖析Spring Cloud Gateway的技术细节,从定义、架构设计、核心组件到使用方法,帮助开发者全面了解这一工具,并在实际项目中发挥其价值。

1. 什么是Spring Cloud Gateway?

Spring Cloud Gateway是由Spring官方推出的新一代API网关框架,旨在为微服务架构提供一种简单而有效的路由管理和跨领域功能实现方式 。它基于Spring 6、Spring Boot 3和Project Reactor等技术构建,采用非阻塞I/O模型,能够高效处理大量并发请求。作为微服务架构的统一入口,Spring Cloud Gateway负责接收客户端请求,根据预设规则进行路由转发,并在请求和响应过程中执行各种过滤器逻辑,如安全认证、限流熔断、日志记录等。

Spring Cloud Gateway提供了两种主要模式:Server模式和Proxy Exchange模式。Server模式是一个完整的API网关,可以独立运行或嵌入到Spring Boot应用中;Proxy Exchange模式则专用于基于注解的WebFlux或MVC应用,允许使用特殊的ProxyExchange对象来处理请求。无论采用哪种模式,Spring Cloud Gateway都通过路由、谓词和过滤器等核心组件,实现了对微服务请求的统一管理。

2. 诞生背景与技术演进

Spring Cloud Gateway的诞生源于Spring Cloud生态对高性能API网关的需求,以及对Netflix Zuul 1.x的替代需求 。在Spring Cloud早期版本中,Netflix Zuul是主要的网关解决方案,但其基于Servlet的阻塞IO模型在高并发场景下性能受限。随着微服务架构的普及和业务规模的扩大,系统面临越来越大的并发压力,需要一种更高效的网关方案。

Spring Cloud Gateway的发展历程可以概括为以下几个阶段:

  • 2018年:Spring Cloud Gateway首次出现在Spring Cloud Finchley版本中,作为微服务网关的新选择 。
  • 2019年:Spring Cloud Gateway脱离孵化器,进入稳定版本,功能逐步完善 。
  • 2020年:在Spring Cloud 2020.0.0版本中,Spring官方正式推荐Spring Cloud Gateway作为替代Zuul 1.x的首选网关 。
  • 2023-2025年:随着Spring Boot 3.x和Spring Cloud 2024.x版本的发布,Spring Cloud Gateway持续优化性能和功能,成为微服务架构中的核心组件 。

这一技术演进反映了Spring社区对高性能、非阻塞架构的追求,以及对微服务治理能力的持续增强。Spring Cloud Gateway的出现标志着Spring Cloud"去Netflix化"进程的重要一步,为开发者提供了更符合Spring生态的网关解决方案。

3. 架构设计与核心组件

Spring Cloud Gateway的架构设计采用了分层结构,主要分为数据平面和控制平面 。数据平面负责处理实际的HTTP请求和响应,包括路由匹配、过滤器链处理和请求转发;控制平面则负责管理路由规则、配置参数和服务状态等,确保网关能够根据系统变化动态调整行为。

3.1 核心组件

Spring Cloud Gateway的核心组件包括:

Route(路由):路由是网关的基本构建模块,由ID、目标URI、断言集合和过滤器集合组成 。当请求满足所有断言条件时,该路由会被匹配并执行对应的过滤器链。路由可以是静态配置的,也可以通过服务发现动态创建。

Predicate(谓词):谓词用于匹配进入网关的HTTP请求 。它是一个Java 8函数式谓词,输入类型为ServerWebExchange(包含请求和响应信息的对象)。Spring Cloud Gateway内置了多种谓词工厂,如PathPredicateFactory、HeaderPredicateFactory等,可以基于路径、请求头、Cookie、Host等属性进行匹配。

Filter(过滤器):过滤器用于在请求或响应处理前后执行额外逻辑 。Spring Cloud Gateway提供了两种类型的过滤器:路由级过滤器和全局过滤器。路由级过滤器仅作用于特定路由,而全局过滤器对所有请求生效。过滤器链分为pre(路由前)和post(路由后)两个阶段,按特定顺序执行 。

3.2 架构流程

Spring Cloud Gateway的请求处理流程如下 :

  1. 客户端发送请求到网关。
  2. Gateway Handler Mapping查找匹配的路由,通过RoutePredicateHandlerMapping确定请求与哪个路由匹配。
  3. 匹配到路由后,将请求发送到FilteringWebHandler。
  4. FilteringWebHandler组装过滤器链,首先执行所有pre过滤器逻辑。
  5. 执行完pre过滤器后,进行实际的请求转发。
  6. 接收到响应后,执行所有post过滤器逻辑。
  7. 最后将响应返回给客户端。

这一流程确保了网关能够灵活处理各种请求,同时将非业务逻辑(如安全认证、限流等)集中到网关层,减轻了微服务的负担 。

3.3 动态路由管理

Spring Cloud Gateway的动态路由管理是其重要特性之一。通过与配置中心(如Nacos)的集成,网关可以实时获取和更新路由规则,无需重启服务 。这一机制基于RouteDefinitionLocator和RouteRefreshListener,前者负责从配置中心获取路由定义,后者负责监听路由变化并触发刷新 。

动态路由管理的工作流程如下 :

  1. 网关启动时,从配置中心加载初始路由规则。
  2. 配置中心中的路由规则发生变化。
  3. 网关通过事件发布与监听机制接收配置变更通知 。
  4. 网关重新加载路由规则,构建新的路由表。
  5. 新的路由规则立即生效,处理后续请求。

这种动态路由能力使得系统能够快速适应业务变化,无需中断服务,大大提高了系统的灵活性和可维护性 。

4. 解决的问题与关键特性

在微服务架构中,Spring Cloud Gateway 主要解决以下 6 个核心痛点:​

4.1 解决 “服务地址暴露” 问题​

微服务部署时,每个服务可能有多个实例(如order-service有 3 个实例,IP 分别为 192.168.1.101:8080、192.168.1.102:8080、192.168.1.103:8080)。如果直接暴露这些地址,客户端需要维护所有实例的 IP 列表,且无法应对实例动态扩容 / 缩容。​

Spring Cloud Gateway 通过 “服务名路由”(如lb://order-service),将服务地址与客户端解耦 —— 客户端只需访问网关地址(如http://gateway:8080/order/**),网关自动通过服务注册中心(如 Nacos、Eureka)获取实例列表并转发。​

4.2 解决 “流量控制” 问题​

高并发场景下,微服务可能因 “流量突增” 而崩溃,Spring Cloud Gateway 提供了完善的流量控制能力:​

  • 限流:集成 Resilience4j、Sentinel 等组件,支持按 IP、接口、服务名限流(如/order/create接口每秒最多允许 100 个请求);​
  • 熔断降级:当目标服务故障率超过阈值时,自动触发熔断(如order-service错误率 > 50% 时,直接返回默认响应{"code":503,"msg":"服务暂时不可用"});​
  • 负载均衡:默认集成 Spring Cloud LoadBalancer,支持轮询、随机、权重等负载均衡策略,避免单一实例过载。​

4.3 解决 “安全认证” 问题​

微服务架构中,每个服务都做认证授权会导致 “重复开发” 和 “规则不统一”。Spring Cloud Gateway 可作为 “统一认证入口”:​

  • 集成 Spring Security OAuth2/JWT,在网关层统一验证 Token 有效性;​
  • 拦截未认证请求,直接返回 401/403 响应,无需转发到具体服务;​
  • 提取 Token 中的用户信息(如用户 ID、角色),通过请求头(如X-User-ID)传递给下游服务,下游服务无需再处理认证逻辑。​

4.4 解决 “请求改造” 问题​

实际业务中,常需要对请求 / 响应进行改造(如版本兼容、路径重写):​

  • 路径重写:将客户端请求/v1/order/**重写为/order/**,适配老版本客户端;​
  • 请求头 / 响应头修改:为所有请求添加X-Gateway-Version=2.0头,为响应添加Access-Control-Allow-Origin=*(解决跨域);​
  • 参数过滤:过滤请求中的敏感参数(如密码),避免泄露到下游服务。​

4.5 解决 “可观测性” 问题​

微服务的 “分布式追踪” 和 “日志聚合” 是难点,Spring Cloud Gateway 可作为 “链路追踪的起点”:​

  • 集成 Sleuth+Zipkin,为每个请求生成唯一 Trace ID,并传递给下游服务,实现全链路追踪;​
  • 记录请求的详细日志(如请求路径、响应时间、状态码),并输出到 ELK 等日志系统,方便问题排查;​
  • 暴露 Prometheus 指标(如gateway_requests_seconds_count),结合 Grafana 实现流量监控看板。​

4.6 解决 “跨域” 问题​

前后端分离架构中,前端(如 Vue、React)常因 “跨域” 无法直接访问微服务。Spring Cloud Gateway 可在网关层统一配置跨域规则:​

spring:cloud:gateway:globalcors:cors-configurations:'[/**]':  # 所有路径allowed-origins: "*"  # 允许所有源allowed-methods: [GET, POST, PUT, DELETE]  # 允许的方法allowed-headers: "*"  # 允许的请求头allow-credentials: true  # 是否允许携带Cookie

4.7 关键特性

Spring Cloud Gateway的核心特性包括:

高性能非阻塞架构:基于Spring WebFlux和Netty的响应式编程模型,支持高并发场景。官方性能测试显示,在相同配置下,Spring Cloud Gateway的RPS(每秒请求数)是Zuul 1.x的1.55倍,平均延迟仅为Zuul 1.x的一半。

灵活的路由配置:通过YAML或Java代码定义路由规则,支持多种匹配条件(如路径、请求头、Cookie、Host等),并可以动态更新 。

丰富的过滤器功能:内置多种过滤器,如鉴权、限流、重试、缓存、日志记录等,同时支持自定义过滤器,满足各种业务需求 。

服务发现集成:自动与注册中心集成,支持服务实例的动态发现和负载均衡,无需手动维护服务地址 。

协议转换与支持:支持HTTP/2、WebSocket等协议,适应各种通信场景 。

灰度发布与路由测试:通过路由权重配置,实现服务的灰度发布和流量测试,降低新版本上线风险。

与Spring生态深度集成:无缝集成Spring Boot Actuator、Spring Cloud Config、Spring Cloud Alibaba等组件,提供统一的监控、配置和治理能力 。

5. 与同类产品对比

在API网关领域,Spring Cloud Gateway与多个同类产品有竞争关系,以下是主要对比:

5.1 与Netflix Zuul对比

特性Spring Cloud GatewayNetflix Zuul 1.x
架构模型响应式(Netty)同步阻塞(Servlet)
性能高并发场景表现优异高并发场景性能受限
配置方式YAML/Java配置Java配置为主
内置功能鉴权、限流、熔断、路径重写等基本路由、过滤器链
与Spring生态集成天然无缝集成需额外适配
GitHub活跃度低(维护停滞)

Spring Cloud Gateway在性能和灵活性上明显优于Zuul 1.x。由于Zuul 1.x基于Servlet的同步阻塞模型,在高并发场景下容易出现线程阻塞和资源耗尽问题。而Spring Cloud Gateway的响应式架构能够更高效地处理大量并发请求,延迟更低,吞吐量更高。此外,Spring Cloud Gateway的配置方式更加灵活,支持YAML文件定义路由规则,便于管理和维护。

5.2 与Kong网关对比

特性Spring Cloud GatewayKong
开发语言JavaLua(基于OpenResty)
部署方式嵌入Spring Boot应用或独立部署独立部署
配置方式YAML/JavaLua脚本/REST API
与Spring生态集成天然无缝需额外适配
扩展性通过自定义过滤器实现通过插件机制实现
资源占用较低较高(基于Nginx)
社区支持Spring官方维护,社区活跃独立社区,支持广泛

Kong在轻量化部署和后期运维复杂度方面有优势,适合非Java生态的项目 。而Spring Cloud Gateway则更适合Spring Cloud生态内的项目,与Nacos、Sentinel等组件的集成更加便捷 。两者在扩展性上各有特点,Kong通过丰富的插件生态实现功能扩展,Spring Cloud Gateway则通过自定义过滤器实现扩展,开发者可以根据项目需求选择合适的方案。

5.3 与Envoy对比

Envoy是由Lyft开源的高性能代理服务器,也常用于API网关场景。与Envoy相比,Spring Cloud Gateway的主要优势在于:

开发语言与生态:Spring Cloud Gateway基于Java开发,与Spring生态深度集成,适合Java微服务项目 。而Envoy基于C++,配置复杂,学习曲线陡峭。

配置管理:Spring Cloud Gateway可以通过Spring Boot配置文件或配置中心(如Nacos)管理路由规则,配置方式更加直观和易于维护 。Envoy则主要通过YAML或JSON文件配置,且配置项繁多,理解难度较大。

与微服务组件集成:Spring Cloud Gateway无缝集成Spring Cloud Alibaba、Spring Boot Actuator等组件,提供统一的服务治理和监控能力 。Envoy则需要与各种组件单独集成,增加了开发和维护成本。

开发体验:Spring Cloud Gateway基于Spring框架,开发体验良好,适合Java开发者 。Envoy的配置和开发方式对Java开发者不够友好。

6. 使用方法与实践指南

6.1 环境准备

版本兼容性:Spring Cloud Gateway与Spring Boot和Spring Cloud版本有特定兼容性要求。根据最新版本兼容性表,推荐使用Spring Boot 3.1.x和Spring Cloud 2024.0.0的组合。

依赖项添加:在项目中添加Spring Cloud Gateway依赖,并排除Spring Boot Starter Web以避免冲突:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</exclusion>

配置中心集成:如果需要动态路由,还需添加配置中心(如Nacos)依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

6.2 路由配置

基础路由配置:在application.yml中定义路由规则 :

spring:application:name: service-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: trueroutes:- id: evaluation-authorization-serviceuri: lb://evaluation-authorization-servicepredicates:- Path=/auth/**, /author/**filters:- StripPrefix=1- AddRequestHeader=X-Gateway-Source, Gateway

路由断言类型:Spring Cloud Gateway支持多种路由断言类型,可以根据需要选择:

  • Path:基于请求路径匹配,支持Ant风格通配符 。
  • Header:基于请求头属性匹配,支持正则表达式 。
  • Cookie:基于Cookie属性匹配,支持正则表达式 。
  • Host:基于请求的Host头匹配,支持正则表达式 。
  • After/Before:基于时间匹配,可以限制路由在特定时间段内生效 。

路径重写:通过StripPrefix过滤器实现路径重写 :

filters:- StripPrefix=1

这表示当请求匹配到该路由时,会去除路径中的第一个路径段。例如,请求路径/user/login会被重写为login。

6.3 过滤器编写

全局过滤器:实现GlobalFilter接口并注册为Bean,可以对所有请求生效 :

@Component
public class UuidFilter implements GlobalFilter, Ordered {private static final Logger log = LoggerFactory.getLogger(UuidFilter.class);@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String uuid = UUID.randomUUID().toString();exchange.getRequest().mutate().header("X-Request-Uuid", uuid).build();log.info("UUID: {} added to request", uuid);return chain.filter(exchange);}@Overridepublic int getPriority() {return Ordered.HIGHEST_PRECEDENCE + 100;}
}

路由级过滤器:在路由配置中指定特定过滤器:

filters:- name: Hystrixargs:name: fallbackfallbackUri: forward:/fallback

自定义过滤器:实现GatewayFilter接口并注册为Bean,可以针对特定路由生效:

@Component
public class CustomFilter implements GatewayFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 在此处实现过滤逻辑return chain.filter(exchange);}
}

在路由配置中引用自定义过滤器:

filters:- name: customFilter

6.4 高级功能实现

动态路由:通过Nacos配置中心实现路由规则的动态更新 :

  1. 在Nacos控制台创建配置数据,格式为YAML:

    routes:- id: dynamic-route-1uri: http://example.orgpredicates:- Path=/dynamic/**filters:- AddRequestHeader=X-Dynamic-Route, True
  2. 在网关配置中启用Nacos配置监听:

    spring:application:name: service-gatewaycloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yamlgroup: DEFAULT_GROUPnamespace: publicgateway:discovery:locator:enabled: true

限流功能:通过RequestRateLimiter过滤器实现基于Redis的限流 :

spring:cloud:gateway:routes:- id: rate-limited-routeuri: lb://service-namepredicates:- Path=/api/limited/**filters:- name: RequestRateLimiterargs:key-resolver: '#{- @redisKeyResolver}'rate-limiter: '#{- @redisRateLimiter}'limiter-name: limited-api# 100请求/秒,最多500个突发请求rate: 100burst: 500

自定义Redis限流器

@Configuration
public class RateLimiterConfig {@Beanpublic KeyResolver redisKeyResolver() {return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostString());}@Beanpublic RateLimiter redisRateLimiter() {RedisRateLimiter redisRateLimiter = new RedisRateLimiter();redisRateLimiter.setRedisTemplate redisTemplate());redisRateLimiter.setKeyPrefix("rate-limiter");return redisRateLimiter;}@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));return template;}
}

熔断功能:通过Hystrix或Sentinel实现服务熔断 :

Hystrix配置

spring:cloud:gateway:routes:- id: hystrix-routeuri: lb://service-namepredicates:- Path=/api/hystrix/**filters:- name: Hystrixargs:name: fallbackfallbackUri: forward:/fallback

Sentinel配置

spring:cloud:sentinel:transport:port: 8719Dashboard: localhost:8080group: DEFAULTgateway:routes:- id: sentinel-routeuri: lb://service-namepredicates:- Path=/api/sentinel/**filters:- name: Sentinelargs:resource: sentinel-routeblockURI: forward:/fallback

鉴权功能:实现全局JWT鉴权过滤器 :

@Component
public class UuidFilter implements GlobalFilter, Ordered {private static final Logger log = LoggerFactory.getLogger(UuidFilter.class);@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 获取JWT令牌String token = exchange.getRequest().getHeaders().getFirst("Authorization");// 解析和验证令牌if (token != null && validateToken(token)) {// 令牌有效,继续处理请求return chain.filter(exchange);} else {// 令牌无效,返回401未授权exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}}private boolean validateToken(String token) {// 实现JWT令牌验证逻辑return true;}@Overridepublic int getPriority() {return Ordered.HIGHEST_PRECEDENCE + 100;}
}

日志监控:集成Spring Boot Actuator实现请求监控 :

management:endpoints:web:exposure:include: routes,healthendpoint:routes:enabled: true

灰度发布:通过路由权重配置实现服务灰度 :

spring:cloud:gateway:routes:- id: service-v1uri: lb://service-name-v1predicates:- Path=/api/service/**metadata:weight: 80- id: service-v2uri: lb://service-name-v2predicates:- Path=/api/service/**metadata:weight: 20

路径重写:通过StripPrefix和RewritePath过滤器实现路径重写 :

filters:- StripPrefix=1- RewritePath=/user/(.*), /$1

这表示当请求匹配到该路由时,会去除路径中的第一个路径段,然后将剩余部分重写为新的路径。

7. 实际应用场景与最佳实践

7.1 适用场景

Spring Cloud Gateway最适合以下场景:

Spring Cloud生态项目:与Spring Cloud Alibaba、Spring Boot Actuator等组件深度集成,适合Java微服务项目 。

高并发业务系统:基于响应式架构,能够高效处理大量并发请求,适合电商、金融等高并发场景。

安全敏感系统:作为第一道安全防线,集中处理身份验证、权限校验等安全功能,适合需要严格安全管控的系统 。

服务动态扩展场景:通过配置中心实现路由规则的动态更新,适合业务频繁变化的系统 。

跨服务通信场景:支持服务间通信的协议转换和路由管理,适合复杂的微服务交互场景 。

7.2 最佳实践

统一入口设计:将网关作为系统的唯一入口,所有外部请求都必须经过网关才能访问内部微服务。

安全策略集中化:在网关层实现统一的身份验证、权限校验和安全策略,避免每个微服务都重复实现这些功能 。

路由规则分层管理:将路由规则分为基础路由、业务路由和安全路由等层次,便于管理和维护。

过滤器链优化:根据业务需求合理设计过滤器链,将性能消耗大的过滤器(如鉴权)放在前面,避免不必要的处理 。

动态路由配置:通过配置中心实现路由规则的动态更新,提高系统的灵活性和可维护性 。

限流策略合理设置:根据业务特点设置合适的限流参数,避免过度限流影响用户体验,同时防止系统过载 。

日志监控全面化:在网关层记录详细的请求日志,并与监控系统(如ELK、Prometheus)集成,实现全面的系统监控 。

熔断降级策略:为关键服务配置熔断和降级策略,提高系统的容错能力和可用性 。

灰度发布机制:通过路由权重配置实现服务的灰度发布,降低新版本上线风险 。

7.3 典型应用案例

数字交通数据云平台:通过Spring Cloud Gateway实现海量GPS数据与非GPS数据的隔离路由,结合Nacos配置中心实现动态更新,支持每秒数万次请求的处理 。

智能制造仓储系统:利用网关的路由管理和鉴权功能,实现库存管理、出入库、盘点等业务功能的统一接入和安全管控,提高仓库效率和准确性 。

学分银行信息管理平台:通过网关层统一处理JWT认证、限流熔断等功能,解决分布式集群架构下session共享问题,提高系统的安全性和稳定性 。

气象数据中台:基于网关的路由转发和协议转换功能,实现气象观测数据等6大类数据全集的在线管理,支持PB级数据存储和秒级查询分析能力 。

8. 总结与展望

Spring Cloud Gateway作为Spring生态系统中的核心API网关解决方案,通过其高性能、灵活配置和丰富的功能特性,有效解决了微服务架构中的接口聚合、安全管控和流量控制等核心问题 。它基于响应式编程模型,能够高效处理高并发场景,同时与Spring生态深度集成,提供了统一的服务治理和监控能力。

在实际应用中,Spring Cloud Gateway可以根据业务需求灵活配置路由规则和过滤器,实现动态路由、限流熔断、鉴权等功能。对于Spring Cloud生态内的项目,Spring Cloud Gateway是首选的网关解决方案 ;而对于非Java生态的项目,Kong或Envoy可能更加适合 。

随着微服务架构的持续发展和云原生技术的普及,Spring Cloud Gateway也将不断演进和优化。未来,我们可以期待以下发展方向:

功能增强:提供更多开箱即用的过滤器和路由规则,简化开发和配置过程。

性能优化:进一步提升处理能力和资源利用率,支持更大规模的业务场景。

生态扩展:与更多云原生组件和工具集成,提供更全面的服务治理能力。

容器化支持:更好地支持Docker、Kubernetes等容器化部署方式,提高系统的灵活性和可扩展性。

安全功能强化:增强安全功能,如更严格的鉴权机制、更灵活的权限控制等,提高系统的安全性。

总之,Spring Cloud Gateway凭借其高性能、灵活配置和丰富的功能特性,已成为微服务架构中的重要组件 。通过合理使用和配置,它可以为系统提供统一的入口、安全的访问和高效的流量控制,帮助开发者构建更加健壮、灵活和安全的微服务系统。


参考资料​​:​​​​

Spring Cloud Gateway


专注于分享开源技术、微服务架构、职场晋升以及个人生活随笔,这里有:

📌 技术决策深度文(从选型到落地的全链路分析)

💭 开发者成长思考(职业规划/团队管理/认知升级)

🎯 行业趋势观察(AI对开发的影响/云原生下一站)

关注我,每周日与你聊“技术内外的那些事”,让你的代码之外,更有“技术眼光”。

日更专刊:

🥇 《Thinking in Java》 🌀 java、spring、微服务的序列晋升之路!
🏆 《Technology and Architecture》 🌀 大数据相关技术原理与架构,帮你构建完整知识体系!

关于博主:

🌟博主GitHub

🌞博主知识星球

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95024.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“HEU-AUTO”无线上网使用指南

本文针对笔记本电脑 笔者电脑型号为&#xff1a;2025联想拯救者Y9000p 5060步骤1&#xff1a;点击开始菜单&#xff0c;点击设置&#xff0c;如图步骤2&#xff1a;在Windows设置菜单中&#xff0c;点击“网络和Internet”选项&#xff0c;如下图&#xff1a;步骤3&#xff1a;…

微信小程序中蓝牙打印机中文编码处理:使用iconv-lite库

在微信小程序开发中,集成蓝牙打印机实现中文打印是常见需求,但中文文本常因编码不匹配(如UTF-8与GBK冲突)导致乱码问题。本文详细解释如何利用iconv-lite库高效处理中文编码转换,确保打印内容正确显示。文章结构清晰,逐步引导您解决问题,代码示例基于实际项目验证。 1. …

GraphRAG——v0.3.6版本使用详细教程、GraphRAG数据写入Neo4j图数据库、GraphRAG与Dify集成

GraphRAG——v0.3.6版本使用详细教程、GraphRAG数据写入Neo4j图数据库、GraphRAG与Dify集成理论部分安装知识图谱生成测试将数据导入到Neo4j图数据库可视化将GraphRAG与Dify集成理论部分 https://guoqingru.blog.csdn.net/article/details/150771388?spm1011.2415.3001.5331安…

MongoDB 聚合管道(Aggregation)高级用法:数据统计与分析

MongoDB 聚合管道&#xff08;Aggregation&#xff09;高级用法&#xff1a;数据统计与分析第一章&#xff1a;聚合管道核心概念与架构设计1.1 聚合管道的本质与价值1.2 管道阶段深度解析1.3 执行引擎与优化机制第二章&#xff1a;高级分组与多维统计分析2.1 复合分组与层次化分…

Twitter舆情裂变链:指纹云手机跨账号协同机制提升互动率200%

——基于动态设备指纹与智能行为仿真的裂变增长体系​​一、Twitter舆情运营的三大核心挑战​账号关联风险​同一设备/IP操作多账号触发平台风控&#xff0c;封号率高达65%&#xff0c;舆情响应链路断裂固定设备参数&#xff08;如GPU型号/屏幕分辨率&#xff09;导致账号权重暴…

【密集目标检测】停车场车辆(车位)识别数据集:12k+图像,yolo标注

停车场车辆(车位)识别数据集概述 数据集包含12415张从监控摄像头画面中截取的停车场图像,涵盖晴天、阴天和雨天场景,标注类别包含车位占用、空车位2类。 标注格式:yolo txt 标注工具:labelme/labelimg 分辨率:416*416 一、学术研究的奠基与迭代 停车场车辆(车位)…

苍穹外卖项目笔记day02

接下来的笔记都会以难点与一些不常见的方法为主,一些重复的crud并不会出现哦 ThreadLocal类 ThreadLocal 并不是一个Thread&#xff0c;而是Thread的局部变量&#xff0c;它用于创建线程局部变量。 核心思想&#xff1a;每个线程都有自己独立的变量副本。这意味着&#xff0c;即…

设计模式12-适配器模式

定义 Adapter Partern: 将一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 场景 系统需要使用现有的类&#xff0c;而这些类的接口不符合系统的需要。 典型场景&#xff1a;集成第三方库、遗留系统代…

VGG改进(6):基于PyTorch的VGG16-SE网络实战

1. 引言&#xff1a;注意力机制在计算机视觉中的重要性近年来&#xff0c;深度学习在计算机视觉领域取得了巨大成功&#xff0c;从图像分类到目标检测&#xff0c;各种复杂任务都获得了前所未有的性能提升。然而&#xff0c;传统的卷积神经网络&#xff08;CNN&#xff09;在处…

[电商网站-动态渲染商品-尺寸、尺码、颜色图片等];库存缺货状态动态对应。

目录 描述&#xff1a; 数据结构 组件代码文件 描述&#xff1a; 自动处理SKU数据生成规格属性列表 支持用户选择不同规格组合 智能禁用无库存选项 自动匹配当前选择对应的SKU信息 通过视觉样式区分可选/不可选状态 该组件采用Vue实现&#xff0c;通过计算属性和响应式数据…

论《运动战》

运动战的本质是以机动换主动&#xff0c;以时间换空间&#xff0c;通过高度的流动性、主动的位移和灵活的战术选择&#xff0c;在动态中创造并捕捉战机&#xff0c;最终以较小的代价换取最大的胜利。它是一种非对称的、主动的作战哲学&#xff0c;其核心不在于一城一地的得失&a…

DVWA靶场通关笔记-CSRF(Impossible级别)

目录 一、查看源码 二、功能分析 三、CSRF防范分析 1、CSRF令牌验证机制 &#xff08;1&#xff09;核心原理 &#xff08;2&#xff09;防范机制 2、旧密码确认防御实现 &#xff08;1&#xff09;核心原理 &#xff08;2&#xff09;为什么旧密码确认能有效防范CSRF…

深层语义在自然语言处理中的理论框架与技术融合研究

摘要本文章系统阐述了深层语义在自然语言处理&#xff08;NLP&#xff09;领域的定义、特征及其与知识图谱和大型预训练语言模型的融合方法。基于截至2025年8月的最新研究成果&#xff0c;报告深入分析了深层语义的多维度特性、技术实现路径以及面临的挑战&#xff0c;为研究人…

深入解析HarmonyOS:UIAbility与Page的生命周期协同

深入解析HarmonyOS&#xff1a;UIAbility与Page的生命周期协同 在HarmonyOS应用开发中&#xff0c;理解UIAbility和Page的生命周期是构建高质量应用的关键。本文将深入探讨这两大核心概念的生命周期及其协同工作机制&#xff0c;帮助开发者更好地管理应用资源、优化用户体验。…

规律作息 + 养成好的习惯 + 考研倒计时 111 天 + 线面积分入门 1 下半部分

文章目录前言杂进度10.4空间直线一般式方程对称式方程 点向式方程参数式方程转换位置关系10.510.610.7平面束方程10.810.9总结前言 规律作息&#xff01; 杂 欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游。 进度 向量代数和空间解析几何。 10.4 这题就是算一个…

序列容器(vector,deque,list)

STL 序列式容器&#xff08;vector、deque、list、array、forward_list&#xff09;的核心特征是按插入顺序存储元素&#xff08;元素的逻辑顺序与物理存储顺序一致&#xff09; vector 下图是底层原理 具体点击链接vector介绍 deque(双端队列) 在 C STL 中&#xff0c;deque…

Time-MOE添加MLP分类头进行分类任务

文章目录一、背景&#xff1a;Time-MoE 的 4096 长度限制二、数据准备&#xff08;以帕金森二分类为例&#xff09;三、标签对齐&#xff08;弱监督&#xff09;四、类别不平衡 & 数据划分五、模型微调&#xff08;冻结 backbone&#xff0c;只训 MLP 头&#xff09;六、评…

朴素贝叶斯:用 “概率思维” 解决分类问题的经典算法

一、贝叶斯&#xff1a;从 “逆概” 问题走来的数学家要理解朴素贝叶斯&#xff0c;得先回到它的 “源头”—— 贝叶斯公式&#xff0c;以及它要解决的核心问题&#xff1a;逆概问题。1. 贝叶斯的 “生不逢时”托马斯・贝叶斯&#xff08;Thomas Bayes&#xff0c;约 1701-1761…

Qt/C++开发监控GB28181系统/视频点播主码流子码流/动态切换码流/支持海康大华/全网唯一

一、前言说明 目前市面上的国标监控系统&#xff0c;没有看到可以切换码流的&#xff0c;都是默认主码流&#xff0c;包括easynvr、livegbs、wvp等&#xff0c;很是奇怪为什么他们不做呢&#xff1f;难道没有用户反馈需要这个&#xff1f;我这就遇到过一些用户需要能够切换主码…

【 MYSQL | 基础篇 四大SQL语句 】资料位于文章末尾

摘要&#xff1a;本文先介绍数据库 SQL 的核心概念&#xff0c;接着阐述 SQL 通用语法与 DDL、DML、DQL、DCL 四大分类&#xff0c;随后详细讲解各类语句操作&#xff0c;包括 DDL 的数据库与表操作及数据类型&#xff0c;DML 的数据增删改&#xff0c;DQL 的查询语法与功能&am…