SpringCloud Gateway最全详解(万字图文总结)

内容分享3周前发布
0 1 0

关注mikechen十余年BAT架构经验倾囊相授!

SpringCloud Gateway最全详解(万字图文总结)

大家好,我是mikechen。

SpringCloud Gateway是微服务的核心,下面我全面来详解SpringCloud Gateway@mikechen

文章来源:mikechen.cc

Spring Cloud Gateway

Spring Cloud Gateway是Spring官方基于Spring 5、Spring Boot 2和Project Reactor…等技术,开发的微服务API网关。

在微服务架构中,API 网关(API Gateway), 就像是所有微服务对外暴露的“门面”或“统一入口”。

SpringCloud Gateway最全详解(万字图文总结)

在微服务架构中,系统被拆分为多个服务模块,客户端往往需要分别调用这些服务。

存在如下问题:

客户端调用复杂,维护成本高;

统一认证、限流、日志、监控等功能,无法聚焦处理;

缺乏统一的安全控制入口…等等问题,网关应运而生,作为系统的唯一入口,统一处理认证。

Spring Cloud Gateway核心

Spring Cloud Gateway 作为微服务架构的统一入口,扮演着至关重大的角色。

如下图所示:

SpringCloud Gateway最全详解(万字图文总结)

涵盖:路由、限流、日志、安全…等功能。

服务路由 (Service Routing)

服务路由,这是Gateway最基本也是最重大的功能。

它像一个智能的交通指挥员,根据预设的规则(如请求路径、HTTP方法…等),将客户端发来的请求准确无误地转发到对应的后端微服务实例。

它还能与服务注册中心(如Eureka、Nacos)无缝协作,实现服务的动态发现和负载均衡。

安全认证 (Security Authentication)

Gateway能够统一处理客户端的身份认证、和权限校验,提供了一个聚焦的安全防护层。

这意味着在请求到达后端服务之前,网关就可以验证用户的身份(列如通过校验JWT令牌),并判断是否有权访问目标资源。

流量控制 限流

为了防止后端服务因突发流量而过载甚至崩溃,Gateway提供了强劲的限流功能。

它能根据设定的策略(如每秒允许的请求数、基于IP或用户ID限流等),控制进入系统的流量,确保服务的稳定运行。

日志监控 (Logging & Monitoring)

Gateway是系统可观测性的重大一环,记录详细的请求日志、性能指标(如请求延迟、吞吐量)。

并追踪请求在各个服务间的调用路径,方便故障排查和性能分析。

熔断保护 (Circuit Breaking)

为了防止微服务间出现“雪崩效应”,Gateway提供了熔断机制。

当某个后端服务出现故障或响应变慢时,熔断器会自动“断开”,阻止新的请求继续发送到该问题服务,避免故障扩散。

Spring Cloud Gateway原理

Spring Cloud Gateway,大致流程如下图所示:

SpringCloud Gateway最全详解(万字图文总结)

ClientRequest↓SpringCloudGateway(核心流程):①请求进入DispatcherHandler②RouteLocator匹配路由(Predicates)③构建FilterChain(Global+Gateway)④执行前置过滤器(认证、限流、重写等)⑤调用下游服务(WebClient+LoadBalancer)⑥执行后置过滤器(日志、响应改写等)↓ClientResponse

Gateway 处理一个请求的生命周期,可以概括为以下几个关键阶段:

1.请求入口

客户端的 HTTP 请求,第一被 Gateway 内嵌的 Reactor Netty 服务器接收。

请求被封装成 ServerWebExchange 对象,其中包含了 ServerHttpRequest (请求) 和 ServerHttpResponse (响应) 的上下文。

2.路由匹配

这是 Gateway 的核心调度器,它维护了所有加载的路由定义 (Route Definitions)

网关根据配置的路由规则(Predicate 断言),匹配请求对应的后端服务路由。

3.过滤器链执行

对匹配路由,依次执行全局过滤器(GlobalFilter)和路由过滤器(GatewayFilter),处理认证、限流、日志等功能。

4.请求转发

经过过滤器链后,使用响应式 WebClient 非阻塞地将请求转发到目标服务。

5.响应处理

下游服务响应返回后,执行后置过滤器处理响应内容,如日志记录、响应修改等。

6.返回客户端

最终将处理后的响应返回给客户端,完成整个请求流程。

与其它网关对比

项目

Spring Cloud Gateway

Zuul 1.x

Nginx

Kong

模型

响应式(WebFlux)

Servlet阻塞

C++/C异步

Lua + Nginx

性能

⭐⭐⭐⭐⭐

⭐⭐

⭐⭐⭐⭐

⭐⭐⭐⭐

扩展性

Java,自定义 Filter

Java

Lua/配置

插件式

Spring 集成

⭐⭐⭐⭐⭐

⭐⭐⭐⭐

服务发现支持

插件支持

以上

文章来源:mikechen.cc

© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录