Transactions SOA中的事务管理

Transactions SOA中的事务管理,transactions,soa,distributed-transactions,business-process-management,orchestration,Transactions,Soa,Distributed Transactions,Business Process Management,Orchestration,SOA服务应该是自包含的服务,但在实践中,我们需要协调这些服务以执行某些业务/流程 现在,为了使流程和数据保持一致,我们需要确保所有服务都已执行或未执行 实现的一种方法是为每个服务实现“补偿”逻辑,并在流程/以前的服务中出现问题时调用它 是否有更好的方法或标准来执行相同的操作,例如,删除事务上下文并实现类似于2阶段提交的操作?您可以使用WS-BPEL 2.0规范中定义的故障处理程序和补偿处理程序(这是一个标准,提供了一种描述和协调Web服务之间交互的方法),因此它以标准方式将业务逻辑与补偿逻辑分

SOA服务应该是自包含的服务,但在实践中,我们需要协调这些服务以执行某些业务/流程

现在,为了使流程和数据保持一致,我们需要确保所有服务都已执行或未执行

实现的一种方法是为每个服务实现“补偿”逻辑,并在流程/以前的服务中出现问题时调用它


是否有更好的方法或标准来执行相同的操作,例如,删除事务上下文并实现类似于2阶段提交的操作?

您可以使用WS-BPEL 2.0规范中定义的故障处理程序和补偿处理程序(这是一个标准,提供了一种描述和协调Web服务之间交互的方法),因此它以标准方式将业务逻辑与补偿逻辑分离

  • 在BPEL规范中执行错误处理的步骤
  • 关于如何在BPEL中编写补偿处理程序

这取决于您正在访问的服务。在某些情况下,您将无法进行补偿,而在另一些情况下,您将无法控制交易,在另一些情况下,您将没有任何选择

补偿处理程序和2阶段提交(XA事务)都是管理事务的有效机制

考虑您要连接到的服务,以及它们提供的支持类型。例如,如果您有大量web服务,您可能没有XA提供给您的事务控制,但它们可能有一种机制来反转操作

在一个完美的世界中,你会有两个阶段的提交,这将减少所需的补偿,但接口是接口,就像人与人之间的通信一样,通信会有所不同,没有一个完美的解决方案

在设计接口时,将事务控制和补偿恢复作为接口设计的一部分加以考虑,您将因创建了一个有用的接口而受到表扬(或至少不会受到批评)