什么是 API 网关?

什么是 API 网关?
最新回答
抹不掉的痛

2021-06-04 19:34:24

API 网关是一个中央服务器,位于客户端和后端服务之间,负责处理客户端的请求,执行安全策略,并将它们转发到相应的微服务

现代应用程序中的 API 网关

现代应用程序,特别是那些使用微服务架构的应用程序,由多个后端服务管理不同的功能。例如,在一个电子商务系统中,一个服务处理用户账户,一个服务处理支付,另一个服务管理产品库存。如果没有 API 网关,客户端需要知道所有后端服务的位置和详细信息,开发人员也需要为每个服务管理身份验证与安全,这会导致管理和维护变得非常复杂。而 API 网关的引入,使得客户端只需将所有请求发送到一个地方——API 网关,由网关负责路由、身份验证、安全和其他操作任务,从而简化了客户端和后端的交互。

API 网关的关键功能
  1. 身份验证和授权

    身份验证:使用令牌(例如 OAuth、JWT)、API 密钥或证书验证客户端的身份。

    授权:确定客户端访问特定服务或资源的权限。

    API 网关保证了各个服务处理身份验证的需要,减少了冗余,保持了整个系统的访问的一致性。

  2. 速率限制

    控制客户端在给定时间内请求的频率,以防止滥用资源。

    保护后端服务免受过多流量或潜在的拒绝服务(DoS)攻击的影响。

  3. 负载均衡

    将传入的请求均匀分配到多个服务上,以处理高流量。

    使用轮询、最少连接或加权分配等算法智能地管理流量。

  4. 缓存

    存储经常请求的数据,如常见端点的响应或静态资源。

    减少延迟,提升用户体验,同时降低后端服务的运营成本。

  5. 请求转换

    修改传入请求的格式以匹配后端服务的要求。

    在将响应发送回客户端之前进行转换,确保它们符合客户端的期望。

  6. 服务发现

    动态识别每个请求适配的后端服务。

    确保即使在服务频繁扩展或缩减的环境中,请求路由也能无缝进行。

  7. 中断器

    当检测到持续的故障时,暂时停止向后端服务发送请求。

    持续监控后端服务的健康状况和性能,并使用中断器阻止对故障服务的请求。

  8. 监控和日志记录

    记录每个请求的详细信息,如来源、目的地和响应时间。

    收集请求速率、错误速率和延迟等指标,帮助系统管理员检测异常、排查问题并优化系统性能。

示例:餐饮订阅应用

以食品配送应用为例,当用户点击“下单”时,应用会向 API 网关发送一个请求,要求其处理订单。API 网关作为后端系统的唯一入口接收请求,并执行以下操作:

  • 验证请求以确保所需的参数或标头存在,数据格式正确,且请求符合预期的结构或模式。
  • 验证用户的身份和权限,以确保只有合法用户可以下单。
  • 检查用户最近的请求数量,以防止滥用。
  • 如果后端服务需要特定的数据格式或额外信息,API 网关会转换请求。
  • 使用服务发现识别并协调多个后端服务来处理订单,如订单服务、库存服务、支付服务和配送服务。
  • 使用负载均衡算法动态将请求路由到这些服务,确保连接到可用且良好的实例。
  • 一旦 API 网关从后端服务接收到响应,它会执行转换和缓存(可选)操作,并将处理后的响应发送回客户端。
  • 在整个过程中,网关记录下一些指标来跟踪每个请求。

综上所述,API 网关在现代应用程序中扮演着至关重要的角色,它简化了客户端和后端的交互,提高了系统的安全性和可靠性,并降低了维护成本。