S hared-database-per-service 图案 - AWS 规范性指导

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

S hared-database-per-service 图案

在这种 shared-database-per-service 模式中,同一个数据库由多个微服务共享。在采用此模式之前,您需要仔细评估应用程序架构,并确保避免使用热表(在多项微服务之间共享的单个表)。所有数据库更改也必须向后兼容;例如,只有当所有微服务的当前和传统版本均未引用对象时,开发人员才可以删除列或表。

在下图中,保险数据库由所有微服务共享,并且 IAM policy 提供对数据库的访问权限。这会导致开发时间耦合;例如,“销售”微服务的更改需要与“客户”微服务协调架构变更。这种模式不会缓解开发团队之间的依赖关系,并且会引入运行时耦合,因为所有微服务共享同一个数据库。例如,长期运行的“销售”事务可能会锁定“客户”表,从而阻止“客户”事务。

S hared-database-per-service 图案

若为以下情况,您应该考虑使用这种模式:

  • 您不希望对现有代码库进行过多的重构。

  • 您可以通过使用提供原子性、一致性、隔离性和持久性 (ACID) 的事务来强制执行数据一致性。

  • 您只想维护和运行一个数据库。

  • 由于现有微服务之间存在相互依赖关系,因此实现该 database-per-service 模式很困难。

  • 您不想完全重新设计现有的数据层。