软件技术 · 知识点深化 · 分布式系统
API 网关:统一入口、鉴权、路由、限流
微服务有几十个,前端怎么知道调谁?API 网关是所有外部请求的统一入口:路由转发、鉴权、限流、日志、协议转换。这一页讲透网关职责和 Spring Cloud Gateway。
① 怎么学(4 步走,约 60 分钟)
先建立直觉再抠细节,按这四步走最稳:
1看图建立直觉(10 分钟)
读②③:先在脑子里画出本课核心结构图。
2记完整体系(15 分钟)
读④:把对比表和公式看懂,不要急着背。
3跟例题走一遍(20 分钟)
精读⑤:看三个例题怎么用知识点解题。
4刷题纠错(剩余时间)
做⑦⑩,错题回⑥诊断。
本课小目标学完你要能:① 说出网关职责;② 解释路由流程;③ 对比网关与 Nginx;④ 知道网关要做高可用。
② 一图看懂:API 网关全景
读法:中心是本课主题,四条分支展开核心维度,下方是典型应用与高频易错点。
③ 本质直觉:网关就是"公司前台"
公司有几十个部门(微服务),外人来了不知道找谁。前台(网关)统一接待:你说找谁,前台帮你转过去;顺便查你有没有预约(鉴权)、人太多先排队(限流)。
路由:/api/order/** 转到订单服务,/api/user/** 转到用户服务。从注册中心拿服务列表。
鉴权:请求过来先校验 JWT,没登录直接拒绝,不用每个服务都写一遍。
限流:入口统一限流,保护后面所有服务。
网关不能太重业务逻辑放网关会变成巨石。网关只做横切关注点(鉴权/限流/路由),业务逻辑在服务里。
④ 完整知识体系
网关职责
| 职责 | 说明 | 常见实现 |
| 路由转发 | 按路径转发到服务 | 注册中心发现 |
| 鉴权 | 校验 token/权限 | JWT 校验 |
| 限流 | 入口流量控制 | Sentinel/Redis |
| 日志监控 | 统一访问日志 | 链路追踪 |
| 协议转换 | HTTP/RPC | BFF |
路由规则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 题
基础6Nginx 和网关区别?
网关有编程能力。
▍中档 5 题
中档1为什么网关用 WebFlux?
异步非阻塞,性能高不阻塞。
中档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 天 | 合书口述网关不做什么 | 不看资料 |
← 返回软件技术总览