什么是 API 网关?

API 网关是一个服务器组件,作为所有客户端 API 请求的统一入口,提供路由、身份认证、速率限制、负载均衡、缓存和请求/响应转换等横切关注点的集中管理。

快速了解

全称API 网关(统一接口管理入口)
创建时间该模式在 2010 年代初随微服务架构兴起而确立
规范文档官方规范

工作原理

API 网关位于客户端和后端服务之间,作为反向代理将请求路由到适当的微服务,同时处理横切关注点——这些功能否则需要在每个服务中分别实现。在微服务架构中,网关消除了客户端需要了解各个服务位置和协议的需求,无论后端如何构建都提供统一接口。核心能力包括请求路由(根据 URL、请求头或内容将流量定向到正确的服务)、身份认证和授权(在请求到达服务前验证 API 密钥、JWT 令牌或 OAuth 流程)、速率限制(保护后端免受过载)、协议转换(在 REST、gRPC、WebSocket 等之间转换)、响应聚合(将多个服务的数据合并为单个响应)和可观测性(日志、指标和分布式追踪)。流行的实现包括 Kong、AWS API Gateway、Nginx、Envoy 以及 Apigee 和 Azure API Management 等云原生解决方案。

主要特点

  • 作为所有客户端到后端 API 通信的统一入口
  • 处理横切关注点:认证、速率限制、日志和缓存
  • 根据可配置规则将请求路由到适当的后端微服务
  • 提供不同 API 格式之间的协议转换(REST、gRPC、GraphQL)
  • 支持从多个下游服务聚合响应
  • 支持金丝雀部署、A/B 测试和流量分割

常见用途

  1. 微服务架构:在分布式服务之上提供统一的 API 外观
  2. 身份认证执行:集中化 API 密钥验证、JWT 校验和 OAuth 流程
  3. 速率限制和节流:保护后端服务免受请求洪水和滥用
  4. API 版本管理:管理多个 API 版本并相应路由流量
  5. 请求转换:在转发前修改请求头、查询参数或请求体格式
  6. 分析和监控:集中记录所有 API 流量以实现可观测性

示例

loading...
Loading code...

常见问题

API 网关和负载均衡器有什么区别?

负载均衡器将流量分配到同一服务的多个实例以实现高可用和性能。API 网关在更高层面运作,根据请求路径或内容将请求路由到不同的服务,同时处理身份认证、速率限制、请求转换和其他应用层关注点。许多 API 网关将负载均衡作为其功能之一。

单体应用需要 API 网关吗?

虽然 API 网关在微服务架构中最有价值,但单体应用仍可从速率限制、集中化认证、API 版本管理、请求日志和缓存等功能中受益。不过对于 API 消费者较少的简单单体应用,增加的复杂性可能不值得。

使用 API 网关有哪些风险?

主要风险包括单点故障(通过高可用部署缓解)、增加延迟(每个请求通过额外的网络跳转)、调试复杂性增加(更难追踪通过网关层的问题)以及极端负载下的潜在瓶颈。适当的监控、冗余和性能调优至关重要。

API 网关如何处理身份认证?

API 网关通常在将请求转发到后端服务之前验证认证令牌(JWT、API 密钥、OAuth 令牌)。这将认证逻辑集中化,使各个服务无需单独实现。网关可以验证令牌签名、检查过期时间、验证作用域/权限,并为下游服务注入用户身份请求头。

有哪些流行的 API 网关方案?

流行的开源方案包括 Kong(基于 Lua/Nginx)、Envoy Proxy、Traefik 和 APISIX。云托管方案包括 AWS API Gateway、Google Cloud Apigee、Azure API Management 和 Cloudflare API Shield。在 Kubernetes 环境中,Nginx Ingress 和 Istio Gateway 等 Ingress 控制器提供网关功能。

相关工具

相关术语

相关文章