这绝对是可能的(您可以在大多数资源管理器的单独会话上执行 xa_prepare 和 xa_commit,如果不是全部的话),但实际上最终您最终将基本上编写一个带有事务上下文传播的 Java EE (JTA) 样式事务管理器通过 REST 或消息传递或您正在使用的任何通信机制。这已经在例如 Narayana/JBoss 实现的 Rest-AT 规范和其他一些规范中完成。
Weblogic 现在有一个运营多年的运营商将其带入 Kubernetes 领域,因此 XA/2PC 可以简单地继续在那里使用,Tuxedo 将推出一个产品来实现相同的目的(超过 Rest)。
saga 模式也一定要考虑。不能盲目地接受它,也不能将其视为微服务领域的一种很好的模式/契合点。事务管理中的用例,像任何其他领域一样,继续变得越来越优化和专业化,因此它涉及最终一致性、补偿等的事实本身不应该是非首发,因为它有许多就部署模型、可扩展性以及 XA 分布式锁的移除等而言,具有显着优势。最佳解决方案取决于特定的用例及其要求。
许多微服务框架,例如 Narayana (WildFly/Quarkus/SpringBoot)、Helidon,甚至在 Oracle DB 本身内部,现在都有 Saga 引擎。全面披露,我在 Oracle 工作,并在接下来的几周内举办一个关于这个产品的研讨会,它将建立在现有的“使用聚合 Oracle 数据库研讨会简化微服务”的基础上,该研讨会有一个非常基本的基于编排的传奇(而不是我提到的基于编排的产品/引擎)。
由于我在过去 25 年中一直在编写事务管理器,因此很高兴能就这个话题进行更多讨论。:)