事务 – SOA中的事务管理

SOA服务应该是自包含的服务,但实际上我们需要协调这些服务来执行某些业务/流程.

现在,对于一个过程&数据要保持一致,我们需要确保所有服务都被执行或者没有执行任何服务.

实现的一种方法是为每个服务实现“补偿”逻辑,并在进程/先前服务中发生某些问题时调用它.

有没有更好的方法或一些标准来做同样的事情,例如,取出事务上下文并实现类似2阶段提交的东西?

最佳答案 它取决于您正在访问的服务.在某些情况下,您将无法获得赔偿,而在其他情况下,您将无法控制交易,而在其他情况下,您将无可奈何.

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

考虑您正在连接的服务以及它们提供的支持类型.例如,如果您拥有大量Web服务,则可能没有XA将为您提供的事务控制,但它们可能具有用于撤消操作的机制.

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

在设计界面时,将交易控制和补偿恢复作为界面设计的一部分,您将因创建有用的界面而受到称赞(或至少不会受到批评).

点赞