什么是 API 网关?它有哪些核心功能?
简化版
API 网关是微服务架构的统一入口——所有外部请求都先经过网关,再由网关转发到后端各个微服务。它把原本分散在各个服务里的公共横切能力集中到一层统一处理,核心功能包括:路由转发(把请求按规则分发到对应服务)、统一鉴权认证(在网关校验身份权限,后端服务不用各自实现)、限流熔断降级(保护后端)、负载均衡、协议转换、日志监控、灰度发布、跨域处理等。有了网关,客户端只需对接一个入口,公共逻辑集中管理,后端服务专注业务。典型产品:Spring Cloud Gateway、Kong、APISIX、Zuul。
详细版
API 网关的核心功能:
| 功能 | 说明 |
|---|---|
| 路由转发 | 按规则把请求分发到对应的后端微服务 |
| 统一鉴权 | 集中做认证授权(JWT/Token/OAuth),后端服务无需各自实现 |
| 限流熔断降级 | 保护后端,防止被打垮、防止故障扩散 |
| 负载均衡 | 在服务的多个实例间分发请求 |
| 协议转换 | 如 HTTP 转 RPC、WebSocket 支持 |
| 灰度发布 | 按规则把流量路由到不同版本 |
| 日志/监控 | 统一记录调用链路、统计指标 |
| 跨域/安全 | 统一处理 CORS、防攻击 |
没有网关 vs 有网关:
- 没有:客户端要知道每个微服务的地址、每个服务各自实现鉴权/限流,逻辑重复、客户端复杂。
- 有网关:客户端只对接网关一个入口,鉴权/限流/日志等公共逻辑在网关统一处理。
完整版教学
一、没有 API 网关的困境
在微服务架构下,一个系统被拆成很多个服务(订单、用户、商品、支付……)。如果没有网关,客户端(App、前端、第三方)要直接调用这些服务,会遇到一堆问题:
- 客户端要感知所有服务:客户端得知道每个微服务的地址,服务多了、地址变了,客户端跟着遭殃。
- 公共逻辑重复实现:鉴权、限流、日志、跨域这些每个服务都需要的公共能力,得在每个服务里各写一遍,重复、不一致、难维护。
- 安全暴露:所有后端服务都直接暴露给外部,攻击面大。
- 难以统一治理:想统一加个限流、改个鉴权策略,要改所有服务。
这些问题的根源是缺少一个统一的入口来收口公共逻辑。
二、API 网关是什么:统一入口 + 公共能力收口
API 网关就是为解决上述问题而生——它是微服务的统一入口:
- 所有外部请求先到网关,网关再根据规则把请求转发到后端对应的微服务。
- 客户端只需要对接网关一个地址,不用关心后面有多少服务、各在哪。
- 那些公共的横切能力(鉴权、限流、日志、跨域……)统一在网关这一层处理,后端服务只专注自己的业务逻辑。
网关就像一栋大楼的前台/门卫:所有访客先到前台,前台负责登记(鉴权)、限流(控制人流)、指路(路由到对应楼层),楼里的各个办公室(微服务)只管做自己的事。
三、核心功能一:路由转发
网关最基础的功能是路由转发——根据请求的特征(路径、Host、请求头、参数等),把请求分发到对应的后端服务。
比如:/api/order/** 的请求路由到订单服务、/api/user/** 路由到用户服务。网关维护一张路由规则表,匹配请求、找到目标服务、转发过去(配合服务发现和负载均衡,转发到服务的某个健康实例)。路由是网关「统一入口 → 分发到各服务」的核心。
四、核心功能二:统一鉴权
鉴权(认证 + 授权) 是网关最有价值的功能之一。如果每个微服务都自己做鉴权,逻辑重复且容易不一致。放到网关统一做:
- 请求进网关时,网关统一校验身份(如验证 JWT Token、检查登录态)和权限(这个用户能不能访问这个接口)。
- 校验通过才转发给后端;不通过直接拒绝(401/403),请求根本到不了后端。
- 后端服务可以信任「来自网关的请求已鉴权」(内网隔离),自己不用再做重复的身份校验,专注业务。
这样鉴权逻辑集中一处、统一维护,安全策略变更只改网关。
五、核心功能三:限流、熔断、降级、以及更多
网关作为流量入口,是做流量防护的最佳位置:
- 限流:控制进入系统的请求速率,超过阈值的快速失败或排队,保护后端不被突发流量打垮。
- 熔断降级:某个后端服务故障时,网关熔断(不再转发给它)、返回降级响应,防止故障扩散。
此外网关还常提供:
- 负载均衡:在目标服务的多个实例间分发请求。
- 协议转换:如把外部的 HTTP 请求转成内部的 RPC 调用,或支持 WebSocket。
- 灰度发布:按用户标签、权重把流量路由到服务的不同版本,做金丝雀发布。
- 日志与监控:统一记录所有请求的调用链路、耗时、状态,便于监控和排障。
- 跨域、防攻击、请求聚合等。
把这些公共能力都收口到网关,是微服务治理的重要实践。
六、常见误区与追问
这道题面试时最容易丢分的地方,是把「API 网关核心功能」答成一段泛泛的组件介绍。更稳的答法是先给结论,再沿着 统一流量入口链路 拆清楚流程,最后补上异常场景、数字边界和选型取舍。
| 回答层次 | 要讲清的内容 | 容易漏掉的边界 |
|---|---|---|
| 核心定义 | API 网关是微服务统一入口,集中处理路由、鉴权、限流、熔断、灰度、日志和协议适配 | 不要停在名词解释 |
| 流程机制 | 客户端请求进入网关 -> 匹配路由规则 -> 执行鉴权和限流过滤器 -> 选择后端实例 -> 转发请求 -> 记录日志并返回响应 | 说明谁触发、谁存储、谁通知、谁兜底 |
| 工程取舍 | 一个系统有 20 个微服务时,客户端只接入网关域名,由网关按路径或 Header 转发到具体服务 | 网关适合收口横切能力,但不能把业务逻辑堆到网关,否则会形成新的复杂单体 |
API 网关核心功能 面试拆解:
1. 客户端请求进入网关
2. 匹配路由规则
3. 执行鉴权和限流过滤器
4. 选择后端实例
5. 转发请求
6. 记录日志并返回响应
记忆钩子:先拆路由、过滤器、鉴权、限流、熔断、灰度,再说明网关和业务服务的边界;回答时一定要落到题目中的「API 网关核心功能」,不要把相邻中间件的能力混着讲。
- 误区:网关就是 Nginx 反向代理。 Nginx 能做反向代理,API 网关还强调动态路由、鉴权、限流、服务治理和插件体系。
- 误区:所有公共逻辑都应该放网关。 网关适合横切能力,业务规则过多会让网关变成新单体。
- 误区:有网关后后端服务不需要任何安全措施。 内网仍要做最小权限、服务间认证和重要接口校验。
- 追问:网关最核心的功能是什么? 统一入口下的路由转发和横切治理能力。
- 追问:网关如何配合服务发现? 路由目标可以是服务名,网关从注册中心获取实例并负载均衡。
- 追问:网关成为瓶颈怎么办? 水平扩容、无状态部署、连接池调优、限流和分层网关。
七、加强记忆
API 网关 = 微服务的统一入口,所有外部请求先经网关再转发到后端各服务,把分散在各服务的公共横切能力集中到一层。解决没网关时的困境:客户端要感知所有服务、公共逻辑(鉴权/限流/日志)各服务重复实现、安全暴露、难统一治理。核心功能:① 路由转发(按路径/Host 等分发到对应服务)、② 统一鉴权(网关集中校验身份权限,后端不用各自做)、③ 限流熔断降级(保护后端)、④ 负载均衡、协议转换、灰度发布、日志监控、跨域安全。类比大楼前台/门卫:登记(鉴权)、控人流(限流)、指路(路由)。典型产品:Spring Cloud Gateway、Kong、APISIX、Zuul。口诀:统一入口收公共逻辑,客户端只对接一个门、后端专注业务。