我阅读了一些关于2阶段提交/ XA分布式事务的信息,以及JTA如何支持它。似乎有许多资源经理- RM (例如。RDBMS或JMS),以及一个管理多个RM的全局事务的TransactionManager (TM)实例。

我知道使用Saga模式更好,但仍然很有趣:
UPD: JTA TransactionManager 没有提供REST 来管理跨微服务的事务。LIXA提供了这个能力。文章附例,除了答案:)
发布于 2020-12-23 22:47:49
跨微服务,事务需要通过公开准备和提交API来完成。此外,需要有一个事务管理器来协调事务。
例如,假设有两个不同的银行,而来自Account_A of Bank1的100美元必须转移到Account_B of Bank2。此外,假设中央银行管理局负责完成交易,2PC的工作方式如下:
上面的问题是分布式原子提交的形式,而2PC是实现它的一种方法。还注意到2PC有很多不利因素,比如在准备阶段之后,央行崩溃了怎么办。如果4.c步骤失败,但4.b成功等,讨论这些本身是非常广泛的研究,但仍然是一些值得注意的事情。尽管有很多缺点,但由于其简单性,2PC被广泛使用。
我们是否需要使用TransactionManager服务作为一个单独的微服务,以便在多个微服务之间提供2PC?
理论上没有。如果您仔细观察到任何一个银行(Bank1或Bank2)也可以充当事务管理器(它只需要一个单独的数据库表事务),但实际上很多时间都是作为单独的微服务来保存的。
https://stackoverflow.com/questions/65382918
复制相似问题