← 返回软件技术总览 软件技术 · 知识点深化 · API 网关:统一入口、鉴权、路由、限流
软件技术 · 知识点深化 · 分布式系统

API 网关:统一入口、鉴权、路由、限流

微服务有几十个,前端怎么知道调谁?API 网关是所有外部请求的统一入口:路由转发、鉴权、限流、日志、协议转换。这一页讲透网关职责和 Spring Cloud Gateway。

① 怎么学(4 步走,约 60 分钟)

先建立直觉再抠细节,按这四步走最稳:

1看图建立直觉(10 分钟)
读②③:先在脑子里画出本课核心结构图。
2记完整体系(15 分钟)
读④:把对比表和公式看懂,不要急着背。
3跟例题走一遍(20 分钟)
精读⑤:看三个例题怎么用知识点解题。
4刷题纠错(剩余时间)
做⑦⑩,错题回⑥诊断。
本课小目标学完你要能:① 说出网关职责;② 解释路由流程;③ 对比网关与 Nginx;④ 知道网关要做高可用。

② 一图看懂:API 网关全景

API 网关 路由转发 按路径路由到服务 鉴权 校验 token 限流 入口流量控制 聚合 BFF 多服务聚合 应用:微服务统一入口 Spring Cloud Gateway 易错:网关成为单点/性能瓶颈 集群部署+异步非阻塞
读法:中心是本课主题,四条分支展开核心维度,下方是典型应用与高频易错点。

③ 本质直觉:网关就是"公司前台"

公司有几十个部门(微服务),外人来了不知道找谁。前台(网关)统一接待:你说找谁,前台帮你转过去;顺便查你有没有预约(鉴权)、人太多先排队(限流)。

路由:/api/order/** 转到订单服务,/api/user/** 转到用户服务。从注册中心拿服务列表。

鉴权:请求过来先校验 JWT,没登录直接拒绝,不用每个服务都写一遍。

限流:入口统一限流,保护后面所有服务。

API 网关 订单 用户 商品
网关不能太重业务逻辑放网关会变成巨石。网关只做横切关注点(鉴权/限流/路由),业务逻辑在服务里。

④ 完整知识体系

网关职责

职责说明常见实现
路由转发按路径转发到服务注册中心发现
鉴权校验 token/权限JWT 校验
限流入口流量控制Sentinel/Redis
日志监控统一访问日志链路追踪
协议转换HTTP/RPCBFF
路由规则Path=/api/order/** -> lb://order-service
网关高可用多实例部署,前面挂 Nginx/LB

Nginx vs API 网关

Nginx 是 L4/L7 负载均衡,简单静态路由。API 网关(Spring Cloud Gateway)有编程能力,能鉴权、限流、熔断、从注册中心发现服务。

⑤ 应用场景与例题

例1 前端怎么知道订单服务地址?
前端只调网关 /api/order/**,网关根据注册中心发现订单服务实例并转发。
例2 鉴权为什么放网关?
每个服务都写鉴权重复。网关统一校验 JWT,解析后把用户信息传给下游。
例3 网关本身挂了怎么办?
网关多实例集群,前面挂 Nginx 或 K8s Service。无状态设计。
做题心法网关做横切关注点,业务逻辑下沉到服务。

⑥ 高频错误诊断(4 条)

错误1:网关写业务逻辑变成巨石网关,难维护。
错误2:网关单点部署挂了全站不可用,必须集群。
错误3:网关做同步重计算成为瓶颈,用异步非阻塞(WebFlux)。
错误4:每个服务都鉴权重复代码,放网关统一做。

⑦ 考点真题演练(5 题)

考点分布

考法出题形式应对
职责问网关做什么路由鉴权限流
路由问怎么发现服务注册中心
Nginx问区别网关有编程能力
高可用问网关挂了集群部署

真题basic1. API 网关不负责以下哪项?

真题mid2. 网关如何发现后端服务?

真题mid3. Nginx 和 API 网关区别?

真题hard4. 网关本身要高可用应该?

真题hard5. 鉴权为什么放网关而不是各服务?

⑧ 必背知识点卡

职责:路由、鉴权、限流、日志、协议转换
不做:业务逻辑 下沉服务
路由:从注册中心发现服务
鉴权:统一 JWT 校验
高可用:多实例集群 前面挂 LB
性能:异步非阻塞 WebFlux
BFF:网关可做前端聚合

⑨ 动手输出:设计微服务网关

场景:20 个微服务,前端要调。
① 统一入口:所有请求过网关。
② 路由:/api/order/** 转发订单服务。
③ 鉴权:网关校验 JWT。
④ 限流:入口统一限流。
⑤ 高可用:网关多实例+Nginx。
口述思路网关是门卫不是管家,横切关注点统一做。

⑩ 分层练习(基础 + 中档 + 拔高)

▍基础 6 题

基础1网关作用?
统一入口路由鉴权。
基础2网关做业务逻辑吗?
不做,下沉服务。
基础3怎么发现服务?
注册中心。
基础4鉴权放哪?
网关统一做。
基础5网关要高可用吗?
多实例集群。
基础6Nginx 和网关区别?
网关有编程能力。

▍中档 5 题

中档1为什么网关用 WebFlux?
异步非阻塞,性能高不阻塞。
中档2BFF 是什么?
网关层做前端数据聚合。
中档3网关怎么传用户信息给下游?
解析 JWT 后加 header。
中档4路由规则怎么配?
Path 断言转发到 lb://服务名。
中档5网关日志放哪?
统一访问日志+链路 TraceId。

▍拔高 5 题

拔高1网关怎么熔断下游?
集成 Sentinel/Resilience4j。
拔高2网关怎么做灰度发布?
按 header/用户路由到不同版本。
拔高3为什么网关不能太重?
所有请求都过,重了成瓶颈。
拔高4K8s 中网关用什么?
Ingress + Gateway API。
拔高5网关怎么做协议转换?
HTTP 转 gRPC 给后端。

⑪ 记忆口诀 + 7 天复习计划

三句口诀① 统一入口管路由,鉴权限流日志做。② 业务逻辑下沉走,多实例集群保高可用。③ Nginx 只转发,网关有编程。
天任务自检
第 1 天读②③,画网关请求流职责说清
第 2 天背网关职责表 + 基础 6 题记住
第 3 天做中档 5 题,配一条路由规则对
第 4 天做拔高 5 题,设计灰度路由方案合理
第 5 天做⑦真题 5 题限时每题 2 分钟
第 6-7 天合书口述网关不做什么不看资料

← 返回软件技术总览