我使用了几个通过面向服务架构连接的系统,这些系统包括:.NET 技术、Java WebLogic Service 和 SAP RFC。
是否有可能跨这些不同的技术实现分布式事务?例如,当更新 SAP 失败时,我们需要确保 .NET 和 Java 事务根本不会发生。
真的很感谢您的意见,或者您可以指出我们可以在哪里学习如何做的基础知识?
我使用了几个通过面向服务架构连接的系统,这些系统包括:.NET 技术、Java WebLogic Service 和 SAP RFC。
是否有可能跨这些不同的技术实现分布式事务?例如,当更新 SAP 失败时,我们需要确保 .NET 和 Java 事务根本不会发生。
真的很感谢您的意见,或者您可以指出我们可以在哪里学习如何做的基础知识?
我不建议在系统之间使用分布式事务,因为它会在它们之间产生大量耦合并增加每个系统的负载,因为它为其他系统持有锁(你可以看到我写的一篇名为“事务集成反模式”的文章" )。正如 Vikdor 所建议的,通常更好的选择是使用Saga,您可以手动或通过一些外部协调器(例如使用Orchestration)进行协调。
请注意,补偿逻辑可能无法完全撤消操作(例如,在零售场景中,如果订单导致您达到库存阈值并且从供应商处订购,则取消该订单不必从您的供应商。您也可能无法全额退款等)