在多个数据库上使用 Mongoose-Transactions

lin*_*ram 6 transactions mongoose mongodb nosql node.js

我正在创建一个由多个微服务组成的 Node.js API。

每个微服务负责我的应用程序的一个或多个功能。但是,我的数据被构建到多个数据库中,每个数据库都有多个集合。

现在我需要一项服务来跨多个数据库执行原子操作。如果一切都发生在同一个数据库中,我会使用普通事务。但是,我不知道如何对多个数据库执行此操作,或者这是否可能?

示例

微服务之一负责创建用户。必须在两个数据库中创建一个用户。但是,这应该自动发生,即如果创建了用户,则必须在两个数据库中都创建它。

更新MongoDB 的官方文档声明如下:

通过分布式事务,事务可以跨多个操作、集合、数据库、文档和分片使用。

不过,我还没有找到任何关于如何使用 mongoose 执行分布式事务的信息。

如果有人能给我一些关于这个主题的澄清,我会非常高兴。

V. *_*cov 3

您需要使用微服务架构的SAGA模式。

SAGA模式分为两种:

  1. 基于编舞的传奇
  2. 基于编排的传奇

如果您想从单个服务管理分布式事务,那么您可以使用基于 Orchestration 的 saga (2)。

因此,通过这种模式,您可以实现分布式事务,该事务要么执行一系列操作,要么使用补偿事务沿链回滚。

我还建议在这个网站上研究微服务架构的模式并推荐这本书