API 网关的作用?Spring Cloud Gateway 原理?

一句话回答:

API 网关的作用,就是作为系统统一入口,把路由转发、鉴权、限流、日志、跨域这些公共能力集中处理,下游服务只专注业务。 Spring Cloud Gateway 官方也把它定位成一个 API Gateway,用来做路由,以及安全、监控指标、弹性这些横切能力。

通俗理解

你可以把 API 网关理解成"门卫 + 前台"。

以前没有网关时:

  • 前端要直接调用用户服务、订单服务、文章服务

  • 每个服务都要自己做鉴权、限流、日志

  • 地址暴露多,维护也麻烦

有了网关后:

  • 所有请求先到网关

  • 网关判断这个请求该转发给谁

  • 顺手把通用逻辑先处理掉,比如 token 校验、限流、黑名单、统一异常、灰度路由

所以它的核心价值就是:

统一入口、统一治理、隐藏内部服务。

API 网关常见作用

  • 统一路由转发:把请求转发到对应微服务

  • 统一鉴权:比如 JWT、登录校验

  • 限流熔断:保护下游服务

  • 日志监控:统计请求、链路追踪

  • 跨域和统一响应处理

  • 灰度发布 / 版本路由

Spring Cloud Gateway 原理

1. 请求先到 Gateway

客户端请求先打到 Spring Cloud Gateway

2. 路由匹配

Gateway 会根据配置好的 Route 去匹配请求。

官方文档说明它会先由 Gateway Handler Mapping 判断请求是否命中某条路由。路由一般由三部分组成:

  • Route:路由定义

  • Predicate:断言,决定这个请求匹不匹配,比如按 Path、Header、Method 匹配

  • Filter:过滤器,对请求和响应做增强处理

3. 进入过滤器链

如果匹配成功,请求会交给 Gateway Web Handler,然后走一条过滤器链。官方文档明确说,请求命中路由后会经过一个针对该请求的 filter chain;而且过滤器分成 pre 和 post 两个阶段。

你可以简单理解成:

  • 前置过滤器:执行鉴权、限流、日志、改请求头

  • 路由转发

  • 后置过滤器:处理响应、记录耗时、统一返回

4. 转发到目标服务

过滤器处理完后,Gateway 再把请求转发到真正的微服务实例。

它为什么性能比较好

Spring Cloud Gateway 是基于 Spring WebFlux 和 Reactor 的响应式模型实现的,底层是异步非阻塞,所以比较适合高并发网关场景。 官方当前文档也说明它构建在 Spring、Spring Framework 和 Project Reactor 之上。

如何自定义

自定义一般就是自定义 Route Predicate 或 Filter 。官方开发者文档里也提供了扩展 RoutePredicateFactory 和自定义过滤器的方式。

面试回答版

API 网关的作用主要是作为微服务系统的统一入口,把路由转发、鉴权、限流、日志、跨域、灰度发布这些公共能力集中处理,从而隐藏内部服务细节、减少重复开发、提升系统治理能力。

Spring Cloud Gateway 的原理 是:客户端请求先进入网关 ,Gateway 根据配置的 Route 进行匹配,Route 一般由 Predicate 和 Filter组成,Predicate 负责判断请求是否命中路由,比如按 Path、Header、Method 匹配;命中后请求会进入过滤器链,前置过滤器可以做鉴权、限流、日志,之后再把请求转发到目标服务,响应回来后再经过后置过滤器做统一处理。

它底层基于 Spring WebFlux 和 Reactor,属于异步非阻塞模型,所以比较适合高并发场景。

超短背诵版

API 网关就是统一入口,负责路由和公共治理;Spring Cloud Gateway 本质是 Route + Predicate + Filter,请求先匹配路由,再走过滤器链,最后转发到目标服务。

相关推荐
瑞克-桑切斯17 分钟前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
域智盾软件2 小时前
电脑加密软件 5 个高频问题:选型、落地、排错一次讲清
网络·电脑
Pniubi6 小时前
HashMap的扩容和树化边界
java·开发语言
Mikko77 小时前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师7 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.7 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
浩浩测试一下7 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy7 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
秋饼8 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
物联网软硬件开发-轨物科技8 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人