API 网关

在客户端与服务之间提供统一入口:路由、鉴权、限流、TLS 终止、日志与协议转换;把横切关注点收敛到一层,同时避免网关演变成业务逻辑集中点。

API 网关是什么

API 网关在客户端与服务之间提供统一入口,集中处理路由、鉴权、限流、TLS 终止、日志与协议转换。它把横切关注点从各服务收敛到一层,减少了重复开发;代价是这一层处在所有请求的关键路径上,可用性与性能要求高于普通业务服务。

边界怎么划

网关适合承载与业务无关的通用能力,例如身份校验、配额限制与访问日志。一旦开始在网关里写业务分支判断、字段拼装与多服务编排,它就变成了难以测试的分布式脚本宿主,变更风险与排障成本都会急剧上升。细粒度授权、业务校验与数据组装应下沉到服务侧。

核心能力

能力说明注意
路由按路径或域名转发到后端规则变更需版本化与审计
鉴权令牌校验、接口密钥验证细粒度授权尽量下沉业务侧
限流按消费者或路径设置配额多实例需共享配额状态
观测访问日志、指标、链路追踪透传关联标识要全程透传

基本信息

部署形态多实例加健康检查,避免单点
配置管理路由规则版本化、可审计、可灰度
降级策略下游不可用时快速返回明确错误而非长时间等待
容量要求按核心组件标准做压测与容量规划

典型使用场景

  • 统一域名入口:对外收敛成单一地址,便于治理
  • 集中鉴权:在入口完成身份验证,服务只处理授权细节
  • 配额与限流:按调用方限制单位时间请求量
  • 协议转换:对外 REST、对内 gRPC 或内部协议
  • 灰度与版本路由:按用户或比例把流量导向新版本
网关处在可用性关键路径上:容量、故障隔离与降级策略要按核心组件标准设计,否则一次网关故障会让全部对外接口同时不可用。

易错点

  • 业务规则写进网关脚本,变更与测试失控,无法做单元测试
  • 网关单点部署,故障时所有接口同时不可用
  • 多实例限流各自计数,整体配额被放大到实例数倍
  • 关联标识未透传到后端,跨服务问题定位只能靠时间戳猜

数据来源与参考

  • 《Building Microservices(第 2 版)》(Newman)
  • microservices.io:API Gateway
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌