跳到主要内容
约 4 分钟2 张卡

API 网关

API 网关提供外部流量的统一入口。本文负责路由匹配、过滤顺序和身份传递。

1. 面试核心​

先记住这几条,再读正文
  • 统一入口。 网关集中处理 TLS、身份验证、路由与入口策略。卡 · 网关的作用
  • 资源授权。 资源级授权由掌握资源状态的领域服务执行。
  • 路由匹配。 Envoy 的 routes 列表按配置顺序采用首个匹配项。卡 · 路由规则
  • 入口容量。 网关的连接、并发和队列上限约束统一入口的资源占用。

2. 网关的作用​

客户端依赖稳定域名与公开 API。网关按 host、path、method 或可信身份选择集群。服务拆分或迁移时,外部契约可以保持稳定。

实例选择依赖服务发现。网关因此需要同时观测路由匹配和上游连接结果。

3. 过滤器链​

过滤器顺序需结合路由与策略配置。一个入口路径可以包含以下阶段:

  1. 终止 TLS,检查连接和报文大小。
  2. 校验外部 header,建立 trace context。
  3. 验证凭据的签名、发行者、受众与有效期。
  4. 匹配路由,执行该路由的鉴权与配额。
  5. 建立上游连接,转发请求并记录结果。

廉价的报文检查应尽早执行。鉴权前完整缓冲巨大请求体,会增加无效资源消耗。依赖路由元数据的过滤器需在路由可用后执行。

4. 路由规则​

路由优先级取决于网关实现。Envoy 先按 host 或 :authority 匹配虚拟主机。使用 routes 列表时,再按顺序选首个匹配项。

配置顺序匹配条件结果
1前缀 /api接收全部 /api 前缀请求
2精确路径 /api/admin被前一条遮蔽

应将具体规则放在兜底前缀之前。这里的精确路径并无自动优先权。Envoy 的 matcher 树需按其独立规则评估。

路由测试覆盖 host、method、header 与路径边界。配置发布机制见控制平面与数据平面。

5. 身份验证与授权​

网关验证身份后,传递主体、租户和 scope。外部 X-User-Id 等身份 header 应先清除。内部值通过受保护链路或签名传递。

订单修改权限取决于所有者和当前状态。订单服务需据此执行资源级授权。服务还要确认调用来源可信,覆盖绕过网关的路径。

6. 超时与重试​

路由总时限约束转发过程,见超时。重试需共享剩余预算,规则见重试。

网关配置需与客户端约定主要重试层。访问日志分别记录上游 attempt 和最终响应。

7. 限流​

网关可以按租户、API 和请求成本执行配额。全局额度和本地保护的取舍见限流。

路由配置需声明限流后端故障时的行为。高风险写接口可拒绝,公开读取可使用保守本地额度。

8. 网关的职责边界​

价格计算与订单状态机由领域服务维护。网关保留协议和入口策略,减少跨业务发布耦合。

统一入口需要多实例与故障域隔离。每个实例设置连接、并发、队列和内存边界。容量验证还需覆盖上游变慢时的资源占用。

9. 网关指标​

指标包含路由、集群、状态码和总耗时。上游耗时、连接池等待和重试次数需分别记录。

502 与 504 只描述对外错误类别。内部日志还需区分无健康实例、reset 和超时。用户 ID 放入受控日志或 Trace,避免指标标签无限增长。

10. 常见问题​

10.1 内外部调用边界​

外部网关负责南北向流量。内部调用可使用服务发现或内部代理。全部绕行外部入口会增加转发成本与共同故障点。

10.2 JWT 校验与资源授权​

11 · 面试题卡片​

11.1 API 网关应该承担哪些职责,哪些逻辑不应放在网关​

出现公司:美团、阿里巴巴

考察重点

  • 理解统一入口、路由、认证、限流和协议边界。
  • 理解入口认证与资源级授权的差异。
  • 理解网关高可用、超时重试和业务逻辑边界。

相关内容:网关的作用至网关指标。

参考回答

API 网关承担统一入口、路由和通用流量策略。

TLS、身份验证、入口配额与访问日志适合集中处理。订单编排和价格计算由领域服务负责。

网关传递可信身份,资源授权由数据所属服务执行。路由需验证匹配顺序和目标集群。网关自身配置资源上限,并共享端到端调用预算。

11.2 Envoy 中精确路径一定比前缀路由先匹配吗?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:首条匹配与兜底规则遮蔽。

相关内容:路由规则。

参考回答

使用 routes 列表时,Envoy 按配置顺序采用首个匹配项。

前置 /api 前缀会遮蔽后置 /api/admin 精确路径。把具体路由放到兜底规则之前,并验证边界请求。matcher 树则按自己的匹配配置评估。

12. 参考资料​