2. OpenAPI 网关基础:定义与核心功能回顾

在深入重试与超时联动处理之前,有必要先回顾 OpenAPI 网关的基础定义与三大核心功能。网关作为 API 流量的统一入口,其路由、限流、鉴权能力是后续所有高级特性的基石。

2.1 网关的定义与定位

OpenAPI 网关(API Gateway)是位于客户端与后端服务集群之间的反向代理层,负责接收所有外部 API 请求,并按照预定义的策略进行转发、过滤与治理。它解决了微服务架构中以下典型问题:

  • 客户端耦合:客户端无需感知后端服务的拆分细节,只需与网关交互。
  • 横切关注点:将鉴权、限流、日志、监控等通用逻辑从业务服务中抽离,统一在网关层实现。
  • 协议转换:支持 HTTP/HTTPS、gRPC、WebSocket 等多种协议的适配与转换。
关键认知:网关不是简单的反向代理,而是 API 治理的策略执行点。重试与超时联动处理正是网关在“可靠性治理”维度的重要体现。
OpenAPI 网关在微服务架构中的位置 OpenAPI 网关在微服务架构中的位置 移动端 App Web 浏览器 第三方服务 OpenAPI 网关 路由 · 限流 · 鉴权 重试 · 超时 · 熔断 日志 · 监控 · 协议转换 订单服务 用户服务 支付服务 网关作为统一入口,屏蔽后端复杂性,集中执行横切关注点策略

2.2 核心功能一:路由(Routing)

路由是网关最基础的功能,负责将客户端请求按照规则分发到对应的后端服务实例。路由规则通常包含以下要素:

路由要素 说明 示例
路径匹配 根据请求 URI 路径进行匹配 /api/orders/** → 订单服务
方法匹配 根据 HTTP 方法(GET/POST/PUT/DELETE)过滤 POST /api/users → 创建用户
Header 匹配 根据请求头中的特定字段路由 X-Version: v2 → 新版服务
权重路由 按比例分发流量到不同版本或集群 v1: 90%, v2: 10%(灰度发布)
重试关联点:路由规则决定了重试请求的目标地址。如果路由策略未正确配置(如未排除已熔断实例),重试可能加剧故障。

2.3 核心功能二:限流(Rate Limiting)

限流用于控制单位时间内允许通过的请求数量,防止突发流量冲垮后端服务。常见的限流算法包括:

  • 令牌桶(Token Bucket):以固定速率向桶中添加令牌,请求需获取令牌才能通过。允许一定程度的突发流量。
  • 漏桶(Leaky Bucket):请求以固定速率流出,超出桶容量的请求被丢弃。平滑流量效果最好。
  • 滑动窗口(Sliding Window):基于时间窗口内的请求计数进行限流,精度较高,但内存开销略大。
算法 突发处理 平滑度 实现复杂度 适用场景
令牌桶 支持 中等 低 允许短时突发的业务
漏桶 不支持 高 低 严格平滑流量的场景
滑动窗口 有限支持 较高 中 需要精确计数的场景
重试与限流的冲突:重试请求会消耗限流配额。如果重试策略未与限流联动,可能导致正常请求被限流拒绝,而重试请求却占用了配额。这是本课程后续要解决的关键问题之一。

2.4 核心功能三:鉴权(Authentication & Authorization)

鉴权确保只有合法用户才能访问受保护的 API 资源。网关层鉴权通常分为两个阶段:

  1. 身份认证(Authentication):验证请求方的身份,常见方式包括 JWT 校验、OAuth2 Token 校验、API Key 校验。
  2. 权限授权(Authorization):确认已认证的用户是否有权执行当前操作,通常基于 RBAC(基于角色的访问控制)或 ABAC(基于属性的访问控制)。

网关鉴权的典型流程如下:

OpenAPI 网关鉴权流程 OpenAPI 网关鉴权流程 客户端请求 步骤1:认证 JWT / OAuth2 API Key 校验 步骤2:授权 RBAC / ABAC 权限校验 后端 鉴权失败 → 返回 401/403 鉴权失败时直接拒绝请求,不进入后续路由、限流及重试逻辑
鉴权与重试的交互:对于因 Token 过期导致的 401 错误,重试不应简单重复原始请求,而应触发 Token 刷新流程。本课程后续会讨论如何在重试策略中识别并处理鉴权类错误。

2.5 三大核心功能的协同关系

路由、限流、鉴权并非独立运行,它们在网关内部形成一条有序的请求处理链:

  1. 请求到达:网关接收客户端请求。
  2. 鉴权拦截:首先进行身份认证与权限校验,失败则直接拒绝。
  3. 限流检查:通过鉴权后,检查是否超出限流配额,超出则返回 429 Too Many Requests。
  4. 路由转发:根据路由规则将请求转发到目标后端服务。
  5. 结果返回:将后端响应返回给客户端,或触发重试/熔断等后续处理。

理解这三者的协同关系,是后续设计重试与超时联动策略的前提——重试请求必须重新经过限流检查,且不能绕过鉴权逻辑。