

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

# 在微服务中启用数据持久性
<a name="welcome"></a>

*Tabby Ward 和 Balaji Mohan，Amazon Web Services（AWS）*

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

组织不断寻求全新流程，以创造增长机会并缩短上市时间。您可以通过实现应用程序、软件和 IT 系统的现代化来提高组织的灵活性和效率。现代化还有助于您为客户提供更快、更好的服务。

应用程序现代化是组织持续改进的途径，首先应将单体应用程序重构为一组独立开发、部署和管理的微服务。此过程包括以下步骤：
+ **[将单体分解为微服务](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-decomposing-monoliths/welcome.html)**：使用分解模式将单体应用程序分解为微服务。
+  **[集成微服务](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-integrating-microservices/welcome.html)**：通过使用 [Amazon Web Services (AWS) 无服务器服务](https://aws.amazon.com//serverless/)，将新创建的微服务集成到[微服务架构](https://docs.aws.amazon.com//whitepapers/latest/microservices-on-aws/simple-microservices-architecture-on-aws.html)。
+ **为微服务架构启用数据持久性**：通过分散[数据存储](https://docs.aws.amazon.com//whitepapers/latest/microservices-on-aws/data-store.html)，促进微服务之间的[多语言持久性](https://martinfowler.com/bliki/PolyglotPersistence.html)。

尽管您可以在某些用例中使用单体应用程序架构，但现代应用程序功能通常无法在单体架构中运行。例如，在升级单个组件时，整个应用程序无法保持可用，也无法扩展单个组件以解决瓶颈或[热点](https://docs.aws.amazon.com//kinesisanalytics/latest/dev/app-hotspots-detection.html)问题（应用程序数据中相对密集的区域）。单体应用程序可能会变得庞大而难以管理，并且需要多个团队付出大量努力和协调才能达成微小更改。

原有应用程序通常使用集中式单体数据库，这使得架构更改变得困难，造成技术锁定，因此只能通过纵向扩展来应对增长，并且还会引发单点故障。单体数据库还会阻碍您构建实施微服务架构所需的分散式独立组件。

以前，典型的架构方法是在单体应用程序使用的关系数据库中对所有用户需求进行建模。这一方法获得了常用关系数据库架构的支持，应用程序架构师通常在开发过程的早期阶段设计关系架构，构建高度规范化的架构，然后将其发送给开发团队。但是，这意味着数据库会驱动应用程序用例的数据模型。

通过选择分散数据存储，您可以促进[微服务之间的多语言持久性](https://docs.aws.amazon.com//whitepapers/latest/modern-application-development-on-aws/polyglot-persistence.html)，并根据微服务的数据访问模式和其他要求来识别您的数据存储技术。每项微服务都有自己的数据存储，可以通过影响较小的架构更改进行独立扩展，并且数据通过微服务的 API 进行控制。分解单体数据库并非易事，其中最大的挑战之一是构建数据结构以实现最佳性能。分散式多语言持久性通常还会导致最终的数据一致性，其他需要全面评估的潜在挑战包括事务期间的数据同步、事务完整性、数据重复以及连接和延迟。

本指南适用于应用程序所有者、企业主、架构师、技术主管和项目经理。本指南提供了以下六种模式，以便在微服务之间启用数据持久性：
+ [Database-per-service 图案](database-per-service.md)
+ [API 组合模式](api-composition.md)
+ [CQRS 模式](cqrs-pattern.md)
+ [事件溯源模式](service-per-team.md)
+ [Saga 模式](saga-pattern.md)
  + 有关使用实现saga模式的步骤 AWS Step Functions，请参阅 AWS 规范指南[网站上的 “通过使用 AWS Step Functions实现无服务器saga模式](https://docs.aws.amazon.com//prescriptive-guidance/latest/patterns/implement-the-serverless-saga-pattern-by-using-aws-step-functions.html)”。
+ [Shared-database-per-service 图案](shared-database.md)

该指南是内容系列的一部分，该系列涵盖了推荐的应用程序现代化方法 AWS。该系列还包括：
+ [实现云端应用程序现代化的策略 AWS](https://docs.aws.amazon.com//prescriptive-guidance/latest/strategy-modernizing-applications/)
+  [分阶段实现云端应用程序现代化的方法 AWS](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-phased-approach/)
+ [评估 AWS 云端应用程序的现代化准备情况](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-assessing-applications/welcome.html) 
+  [将单体分解为微服务](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-decomposing-monoliths/welcome.html)
+ [使用 AWS 无服务器服务集成微服务](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-integrating-microservices/welcome.html)

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

许多组织发现，单体应用程序、数据库和技术会对创新和改善用户体验产生负面影响。原有应用程序和数据库减少了您采用现代技术框架的选择，并限制了您的竞争和创新能力。但是，当您对应用程序及其数据存储进行现代化改造时，它们将更容易扩展，开发速度也会更快。解耦数据策略可提高容错能力和弹性，有助于加快新应用程序功能的上市时间。

在微服务中促进数据持久性可望获得以下六项成果：
+ 从您的应用程序组合中移除原有的单体数据库。
+ 提高应用程序的容错能力、弹性和可用性。
+ 缩短新应用程序功能的上市时间。
+ 降低总体许可费用和运营成本。
+ 利用开源解决方案（例如 [MySQL](https://www.mysql.com/) 或 [PostgreSQL](https://www.postgresql.org/)）。
+ 从 AWS 云上超过 [15 个专用数据库引擎中进行选择，构建高度可扩展的分布式应用程序。](https://aws.amazon.com//products/databases/)