【发布时间】:2019-07-25 13:18:55
【问题描述】:
我正在构建一个使用 MongoDB 作为“元数据”数据库并使用 S3 进行文件存储的微服务。微服务的 API 之一需要在同一个 API 调用中同时更新 S3 和 MongoDB。
作为一个场景,假设 API 是:
POST /票
- 使用票证文档更新 S3(即,在一个文件夹中创建了两个文档:用于通过电子邮件发送的 pdf 票证和用于通过电子邮件共享的图像)
- 使用票状态更新 MongoDB 表,即票已被预订。
我知道订票通常是涉及多个微服务的复杂事务,但对于我们的理论场景,让我们说只有一个微服务就足够了。 Ticket API 运行一些计算并决定通过更新 S3 数据库和 MongoDB 来预订机票。
问题是:我应该如何维护两个数据库之间的内容完整性?
基于一般阅读,对于跨微服务的分布式事务,建议使用 2PC 或类似 SAGA 的一些事件模式。我了解跨微服务的“事务”需要达到复杂程度。但是,如果一个微服务在两个数据库中维护内容,同样的解决方案是否适用?
【问题讨论】:
标签: transactions microservices