← 中文资源

简体中文版本

API 网关

API 网关是南北向流量的统一入口,在请求到达服务前处理路由、认证、限流和响应聚合。

阅读英文原文

一个入口,多个服务

外部客户端不应该了解内部服务拓扑。网关暴露稳定路由,对调用方只认证一次,执行配额,再把请求转发给当前后端。服务迁移或拆分时,公开契约保持不变。

routes:
  - path: /api/orders
    service: orders
    auth: bearer
    rate_limit: orders_default
    timeout: 3s
  - path: /api/catalog
    service: catalog
    auth: api_key
    cache: 60s

配置只是示意,关键在于边缘策略是显式且经过评审的。网关如果悄悄重试非幂等写入,或者给快速端点设置 30 秒超时,它自己就会制造生产事故。

把领域逻辑留在服务内

网关能看到每个请求,因此很容易在里面做数据补充、校验和编排。但这会把边缘耦合到领域规则,使每次业务变更都变成网关发布。业务校验应留在拥有数据的服务里;网关只负责身份、粗粒度配额、传输安全、路由和可观测性。

网关也是单点故障和共享瓶颈。部署时必须冗余、预留容量,并准备经过测试的绕过或故障转移路径。要单独监控网关延迟:网关 p99 问题不是服务问题,但用户感受到的影响相同。

何时使用

当多个客户端需要一致的边缘策略,或内部拓扑频繁变化时,使用 API 网关。优点是集中认证、配额和路由;代价是多一跳、多一个关键共享依赖,以及过度集中的诱惑。与在每个服务里嵌入反向代理相比,网关提供单一控制点,同时也集中了风险。