

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

# 云设计模式、架构和实施
<a name="introduction"></a>

*Anitha Deenadayalan，亚马逊云科技（AWS）*

*2024 年 5 月*（[文档历史记录](doc-history.md)）

本指南为使用 AWS 服务实现常用的现代化设计模式提供了指引。越来越多的现代应用程序是通过使用微服务架构进行设计的，从而实现可扩展性、提升发布速度、缩小更改的影响范围和减少回归。这可以提高开发人员的工作效率，提高敏捷性，使之更好地进行创新，并更加专注于业务需求。微服务架构还支持对服务和数据库使用最佳技术，且促进多语言代码和多语言持久性。

传统上，单体应用程序在单个进程中运行，使用一个数据存储，并在垂直扩展的服务器上运行。相比之下，现代微服务应用程序是细粒度的，具有独立的故障域，作为服务在网络上运行，并且可以根据应用场景使用多个数据存储。这些服务可以水平扩展，单个事务可能跨越多个数据库。使用微服务架构开发应用程序时，开发团队必须专注于网络通信、多语言持久性、水平扩展、最终一致性，以及跨数据存储的事务处理。因此，现代化模式对于解决现代应用程序开发中的常见问题至关重要，这些模式有助于加快软件交付。

本指南为云架构师、技术主管、应用程序和企业所有者以及希望根据架构完善的最佳实践为设计模式选择合适云架构的开发人员提供了技术参考。本指南中讨论的每种模式都应对微服务架构中的一个或多个已知场景。该指南讨论了与每种模式相关的问题和注意事项，提供了高级架构实现，并描述了各模式的亚马逊云科技实施。在存在资源时，还会提供开源 GitHub 示例和研讨会链接。

该指南涵盖了以下模式：
+ [防腐层](acl.md)
+ [API 路由模式](api-routing.md)：
  + [主机名路由](api-routing-hostname.md)
  + [路径路由](api-routing-path.md)
  + [HTTP 标头路由](api-routing-http.md)
+ [断路器](circuit-breaker.md)
+ [事件溯源](event-sourcing.md)
+ [六边形架构](hexagonal-architecture.md)
+ [发布/订阅](publish-subscribe.md)
+ [使用退避重试](retry-backoff.md)
+ [saga 模式](saga.md)：
  + [saga 编配](saga-choreography.md)
  + [saga 编排](saga-orchestration.md)
+ [分散-收集](scatter-gather.md)
+ [Strangler fig](strangler-fig.md)
+ [事务发件箱](transactional-outbox.md)

## 目标业务成果
<a name="targeted-business-outcomes"></a>

通过使用本指南中所讨论的模式，对应用程序进行现代化改造，您可以：
+ 设计和实施针对成本和性能优化后的可靠、安全、操作高效的架构。
+ 缩短需要这些模式的应用场景的周期时间，以便您转而专注于组织特定的挑战。
+ 使用亚马逊云科技服务对模式实施进行标准化，从而加快开发速度。
+ 帮助您的开发人员在无需继承技术债务的情况下构建现代应用程序。