

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS 中的并行 API 组合
<a name="parallel-api-composition"></a>

发布日期：2022年 ** 5月17日 ([图表历史](#diagram-history)) **

该架构展示了如何并行或按顺序调用多个下游 API 端点以构成单个聚合响应。您可以使用 [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) Express Workflows 构建通用、参数化的断路器工作流程，并使用命令查询责任分离 (CQRS) 来维护持久的、最终一致的缓存。

## AWS 中的并行 API 组合
<a name="diagram1"></a>

![架构图显示了使用亚马逊 API 网关、 AWS Step Functions Express Workflows 和亚马逊的并行 API 组合 EventBridge。 AWS Lambda](https://docs.aws.amazon.com/zh_cn/reference-architecture-diagrams/latest/parallel-api-composition/images/parallel-api-composition.png)


以下步骤描述了架构：

1. 使用[亚马逊 API 网关创建 API 网关](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html)，允许客户端向您的微服务发送同步 Web 请求。

1. 使用 Step Functions Express Workflows 创建具有并行步骤的工作流，可同时调用多个微服务。

1. 使用[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)函数将来自下游微服务的多个响应组合成单个聚合响应，供客户端使用。

1. 使用基于参数化嵌套的 Step Functions Express Workflows 构建的断路器处理并行请求，以提高弹性。

1. 调用本地微服务时，使用 API 网关代理 HTTP 请求。

1. 创建 Amazon MemoryDB for Redis 数据库，以使用直写缓存模式缓存微服务响应。[https://docs.aws.amazon.com/whitepapers/latest/database-caching-strategies-using-redis/caching-patterns.html](https://docs.aws.amazon.com/whitepapers/latest/database-caching-strategies-using-redis/caching-patterns.html)当下游微服务不可用或其延迟达到阈值时，该电路将关闭并直接从缓存中读取所有响应。

1. 使用 CQRS 模式使用来自下游微服务的域事件来补充缓存的数据。使用 [ Amazon 创建事件总线 EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)，然后使用 Lambda 函数处理事件，将域聚合保存在 MemoryDB 中。

1. 启用 API Gateway 响应缓存并根据每种请求类型调整生存时间 (TTL) 值和过滤器以提高性能。

## 延伸阅读
<a name="further-reading"></a>

有关更多信息，请参阅以下资源：
+ [AWS 架构图标 ](https://aws.amazon.com/architecture/icons)
+ [AWS 建筑中心 ](https://aws.amazon.com/architecture)
+ [AWS Well-Architected](https://aws.amazon.com/architecture/well-architected)

## 图表历史
<a name="diagram-history"></a>

要获得有关此参考架构图更新的通知，请订阅 RSS 提要。

| 变更 | 说明 | 日期 | 
| --- |--- |--- |
| [初次发布](#diagram-history) | 参考架构图首次发布。 | 2022 年 5 月 17 日 | 

**注意**  
要订阅 RSS 更新，必须为正在使用的浏览器启用 RSS 插件。