使API调用和数据库操作成为原子操作



我想做以下事情:

  • 开始事务
  • 将数据插入数据库
  • 插入后,使用新添加的行的主键将数据提交给API端点
  • 然后提交事务

如果插入失败,将不执行任何操作,所有操作都将回滚。问题是,如果事务提交失败,我没有一个好的方法来回滚API请求,因为它不是数据库操作。我唯一能想到的就是从端点中删除数据。有更好的方法吗?我使用的是实体框架。谢谢

因此,如果我理解正确,您只想在API调用成功的情况下提交到DB,但在从DB插入中获得DB生成的主键之前,不能调用API。

因此,这将导致一种2阶段提交类型的方法,但如果插入成功,API调用成功,但DB提交失败,会发生什么?(如果发生!(

因此,我认为您应该考虑实现佐贺设计模式

这是为复杂的分布式系统设计的,尤其是使用微服务,您需要确保不同分布式系统之间的数据一致性。基本上,您构建了一种需要按顺序执行的事务链。然后你一个接一个地经历它们,如果成功了,你就进入下一个。

但是,对于每一笔交易,您都有一笔补偿交易。因此,如果一个事务失败,那么您可以通过列表一个接一个地执行所有补偿事务,直到最终获得相同的初始状态。

有不同的方法可以做到这一点,例如基于编舞的传奇或基于编排的传奇。您可以在此处找到更多详细信息和更好的解释:https://microservices.io/patterns/data/saga.html

相关内容

  • 没有找到相关文章

最新更新