我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用亚马逊 API Gateway 私有集成进行扩展架构
这篇文章由高级解决方案架构师利尔·萨丹和高级解决方案架构师阿南德普拉桑娜·盖通德撰写。
组织使用
这篇博文比较了用于构建可扩展的私有集成的架构选项与适用于微服务的 API Gateway。它涵盖了 REST 和 HTTP API 及其对私有集成的使用,并展示了如何开发安全、可扩展的微服务架构。
概述
以下是典型的 API Gateway 实现,它与各种微服务进行了后端集成:
API Gateway 处理 API 层,同时与在
为了保护微服务安全并防止外部流量,它们通常在私有子网中的
示例场景有四个可以托管在一个或多个 VPC 中的微服务。它显示了通过 VPC 链接将微服务与前端负载均衡器和 API 网关集成在一起的模式。
虽然 VPC 链接支持与微服务的私有连接,但客户可能还有其他需求:
- 扩大规模:支持 API Gateway 背后的更多微服务。
- 独立部署:每个微服务的专用负载均衡器使团队能够独立执行蓝/绿部署,而不会影响其他团队。
- 降低复杂性:能够使用现有的微服务负载均衡器而不是引入其他负载均衡器来实现 API Gateway 集成
- 低延迟:确保 API 请求/响应流中的延迟降至最低。
API Gateway 提供 HTTP API 和 REST API(请参阅
| VPC link supported integrations | Quota on VPC links per account per Region | ||
| REST API |
|
|
|
| HTTP API |
网络负载均衡器 (NLB)、
|
|
考虑到适用于 REST 和 HTTP API 的 VPC 链接的不同功能和配额,本文介绍了四个私有集成选项:
- 选项 1: 使用 VPC 链接到多个 NLB 或 ALB 的 HTTP API。
- 选项 2 :使用多个 VPC 链接的 REST API。
- 选项 3 :使用 VPC 链接与 NLB 连接的 REST API。
- 选项 4: 使用 VPC 链接连接到 NLB 和 ALB 目标的 R EST API。
选项 1:使用 VPC 链接到多个 NLB 或 ALB 的 HTTP API
HTTP API 允许将单个 VPC 链接连接到多个 ALB、NLB 或在 亚马逊云科技 Cloud Map 服务中注册的资源。这提供了一种连接多个后端微服务的扇出方法。但是,与特定 VPC 链接集成的负载均衡器应位于同一 VPC 中。
两个微服务位于一个 VPC 中,每个微服务都有自己的专用 ALB。ALB 侦听器将 HTTPS 流量定向到相应的后端微服务目标组。一个 VPC 链接连接到该 VPC 中的两个 ALB。API Gateway 使用基于路径的路由规则将请求转发到相应的负载均衡器和相关的微服务。
您可以在 VPC IP 空间限制内添加其他 ALB 和微服务。使用
好处:
- 高度的可扩展性。使用 ALB/NLB 的单个 VPC 链路和/或多路复用功能分散到多个微服务。
- 与现有微服务负载均衡器直接集成,无需引入新组件并减轻运营负担。
- 由于直接集成,可以降低 API 请求/响应的延迟。
- 每个微服务都有专用的负载均衡器,可以实现微服务团队的独立部署。
选项 2:使用多个 VPC 链接的 REST API
对于 REST API,由于以下考虑,支持多个微服务的架构可能会有所不同:
- NLB 是 REST API 唯一支持的私有集成。
- REST API 的 VPC 链接只能有一个目标 NLB。
每个 NLB 都需要 VPC 链接,即使 NLB 位于同一 VPC 中。每个 NLB 都为一个微服务提供服务,其侦听器将 API 网关流量路由到目标组。基于 API Gateway 路径的路由向相应的 NLB 和相应的微服务发送请求。此私有集成所需的设置与
要进一步扩展,请根据您的需求和隔离要求在相同或不同的 VPC 中为每个微服务添加额外的 VPC 链接和 NLB 集成。这种方法受到每个区域每个账户的 VPC 链接配额的限制。
好处:
- 请求路径中的单个 NLB 可降低操作复杂性。
- 每个专用 NLB 支持独立的微服务部署。
- API 请求路径中没有额外的跳数可以降低延迟。
注意事项:
- 由于 VPC 链接与 NLB 和微服务进行一对一映射,因此限制了可扩展性,受每个区域每个账户的 VPC 链接配额的限制。
选项 3:使用带有 NLB 的 VPC 链接的 REST API
由于 VPC 链路配额,选项 2 中的 VPC 链接到 NLB 和微服务的一对一映射存在可扩展性限制。另一种选择是每个 NLB 使用多个微服务。
单个 NLB 通过使用多个侦听器在 VPC 中管理多个微服务,每个侦听器位于每个微服务的单独端口上。在这里,NLB1 在一个 VPC 中前置两个微服务。NLB2 在第二个 VPC 中前置另外两个微服务。由于每个 NLB 有多个微服务,因此在为方法选择集成点时会为 REST API 定义路由。 您可以结合选择 VPC 链接 (与特定 NLB 集成)和在 NLB 侦听器中为每个微服务分配并通过终端节点 URL 寻址的特定端口,来定义每项 服务。
要进一步扩展,请向现有 NLB 添加更多侦听器,但受
好处:
- 更大的可扩展性——受到 NLB 侦听器配额和 VPC 链路配额的限制。
- 管理支持多个微服务的更少的 NLB 可以降低操作复杂性。
- 低延迟,请求路径中只有一个 NLB。
注意事项:
- 共享 NLB 配置限制了单个微服务团队的独立部署。
选项 4:使用 VPC 链接连接到 NLB 和 ALB 目标的 REST API
客户通常使用 ALB 作为接入点来构建微服务。要通过 API Gateway REST API 公开这些信息,你可以利用
VPC 链接 (vpClink1) 是使用 VPC1 中的 NLB1 创建的。ALB1 和 ALB2 将微服务 mS1 和 mS2 作为前端添加为单独的侦听器上的 NLB 目标。VPC2 也有类似的配置。您的隔离需求和 IP 空间决定了微服务是否可以驻留在一个或多个 VPC 中。
要进一步扩展,请执行以下操作:
- 创建其他 VPC 链接以集成新的 NLB。
- 添加 NLB 监听器以支持更多 ALB 目标。
- 使用基于路径的规则配置 ALB,将请求路由到多个微服务。
好处:
- 使用 NLB 和 ALB 集成服务的高可扩展性。
- 当每个 ALB 都专用于单个微服务时,每个团队可以进行独立部署。
注意事项:
- 请求路径中的多个负载均衡器可能会增加延迟。
注意事项和最佳实践
除了本博客中讨论的通过 VPC 链接集成进行扩展的注意事项外,还有其他注意事项:
-
评估
REST API 和 HTTP API 的 功能以满足您的要求。 -
为您的应用程序需求选择
最佳的负载均衡器类型 。 -
有关多账户架构,请参阅
使用亚马逊 API Gateway 和 亚马逊云科技 PrivateLink 构建私有跨账户 API 。 -
避免快速超过默认配额,并
要求增加配额 以满足更高的限额要求。 -
监控服务配额,随着架构的发展,主动规划并降低风险。考虑使用
配额监控解决方案 进行监控。 -
请参阅
设计亚马逊 API Gateway 私有 API 和私有集成 的最佳实践 — Rest API 。
结论
本博客探讨了使用 VPC 链接为微服务构建可扩展的 API 网关集成。VPC 链接允许将外部流量转发到后端微服务,而无需将其暴露到互联网或离开 亚马逊云科技 网络。这篇文章介绍了基于使用 REST API 与 HTTP API 相比的扩展注意事项,以及它们如何在 VPC 之间与 NLB 或 ALB 集成。
虽然 API 类型和负载均衡器的选择还有其他设计因素,但在设计 API 层架构时,请务必记住本博客中讨论的扩展注意事项。通过针对性能、延迟和运营需求优化 API Gateway 的实现,您可以构建一个强大、安全的 API 来大规模公开微服务。
如需更多无服务器学习资源,请访问
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。