Coursera 笔记

Module 02 · Web API Essentials: REST API and GraphQL

Introduction to API GatewayAPI 网关简介

Coursera ↗

什么是 API Gateway?

API Gateway 是一个 API 管理工具,位于客户端与一系列后端服务之间 。

  • 聚合服务: 它聚合完成客户端请求所需的各种服务,并返回适当的结果。

为什么使用 API Gateway?

API Gateway 解决了微服务架构中客户端直接与多个服务交互的复杂性问题,并提供了额外的管理功能:

  • 安全与保护: 通过认证服务和速率限制(rate limiting),保护 API 免受恶意使用或过度使用。
  • 分析与监控: 通过分析和监控服务,了解 API 的使用情况。
  • 商业化: 利用计费系统将 API 商业化(monetize)。
  • 统一入口: 为各种微服务提供单一的联系点,并为请求提供统一的响应。
  • 后端解耦: 可以在不让客户端知晓后端服务的情况下,无缝添加或移除 API。

📝 示例场景: 在一个微服务架构的在线商店中,服务可能包括:产品信息服务、库存服务、订单服务和认证服务。API Gateway 充当客户端访问这些服务的唯一入口。

API Gateway 解决的复杂性

API Gateway 消除了客户端直接访问多个微服务时遇到的并发症,并允许您:

  • 更改主机及其位置。
  • 增加或减少服务实例的数量。
  • 替换现有服务(例如用新服务替换订单服务)。
  • 客户端对服务的访问保持不受干扰。

使用 API Gateway 的益处

API Gateway 带来的主要益处包括:

  • 客户端隔离: 将客户端与应用程序如何划分成微服务的内部细节隔离开来。
  • 简化客户端逻辑: 将调用多个服务的逻辑从客户端转移到 API Gateway,从而简化了客户端。
  • 为每个客户端优化 API: 无论客户端是谁,它都能提供最优化的 API。
  • 减少请求次数(Round Trips): 允许客户端通过一次往返(single round trip)从多个服务检索数据。
  • 标准化协议: 无论微服务内部如何通信,API Gateway 都将提供一个标准协议与外界通信。

使用 API Gateway 的缺点

虽然 API Gateway 提供了许多好处,但它也有一些潜在的缺点:

  • 额外的维护负担: 它是另一个需要开发和维护的组件。
  • 单点故障风险: 如果设计不当,它可能成为应用程序的单点故障(single point of failure)。
  • 增加响应时间: 由于执行过程中增加了额外的网络步骤,Gateway 会增加响应时间。

可用的 API Gateway 产品

市场上提供多种 API Gateway 产品,您可以选择托管或开源选项。

托管/企业级产品

  • IBM: IBM DataPower Gateway(业界领先、高安全性应用网关)。
  • Google: Apigee 或 Cloud Endpoints(根据您的需求提供)。
  • Microsoft Azure: 平台提供的网关服务。
  • Amazon AWS: 平台提供的网关服务。

开源/社区产品

  • Kong: 流行度名列前茅。
  • Apache APISIX。
  • Tyk: 也有托管版本。
  • Gloo: 也有企业版本。

总结

  • API Gateway 是通往后端服务的门户(door)。
  • 它使您能够插入附加服务,同时为客户端提供对服务的统一访问。
  • 它向客户端隐藏了后端服务的复杂性。
  • 它使伸缩或替换后端服务更加容易。
  • 市场上有许多托管和开源的 API Gateway 产品可供选择。