来自 2 个独立数据库的 Spring 回滚事务

Posted

技术标签:

【中文标题】来自 2 个独立数据库的 Spring 回滚事务【英文标题】:Spring rollback transaction from 2 Separate Databases 【发布时间】:2022-01-23 10:28:24 【问题描述】:

我有一个 Spring Boot 服务器,它收集 2 个 gRPC 微服务 - 其中一个与 DynamoDB 和另一个 CockrachDB 数据库一起使用。我需要确保提交在两个数据库中都能正常工作,如果不需要从它们两个中回滚。

问题是如果这在第一个数据库中成功并且在第二个数据库中出现异常,则可能无法正常从第一个数据库回滚。

我怎样才能使提交在两个数据库中成功或失败?

【问题讨论】:

您可能需要分布式事务管理框架。但我建议尽可能使其最终一致而不是强一致。 @MaxPeng 你能详细说明你的答案并提供任何博客文章、教程等以便我进一步阅读吗? 【参考方案1】:

对于分布式事务管理框架或架构,可以参考这些链接:

    https://seata.io/en-us/ https://microservices.io/patterns/data/saga.html https://medium.com/@dongfuye/the-seven-most-classic-solutions-for-distributed-transaction-management-3f915f331e15 https://dba.stackexchange.com/questions/18435/cap-theorem-vs-base-nosql#:~:text=1%20Answer&text=CAP%20is%20Consistency%2C%20Availability%2C%20and,throws%20consistency%20out%20the%20window.

希望这些链接能有所帮助。

【讨论】:

是的,分布式事务对我来说并不新鲜,链接似乎非常有用,可以提供一般性的介绍。谢谢。

以上是关于来自 2 个独立数据库的 Spring 回滚事务的主要内容,如果未能解决你的问题,请参考以下文章

Spring-事务

四Spring事务回滚

spring事务会导致全局变量回滚么

Spring事务

利用spring实现多线程 + 事务回滚

spring中啥样的异常会造成事务回滚?!