分布式事务在面向服务的体系结构中什么时候有意义?
发布于 2010-04-04 20:36:21
在SOA环境中经常使用分布式事务。如果您有一个调用多个服务的组合服务,则应将底层服务调用作为单个事务处理。业务流程应该允许回滚其步骤。如果底层资源允许,您可以使用两阶段提交,但在许多情况下这是不可能的。在这些情况下,应该在失败的步骤之前对调用的服务/资源执行补偿操作。换句话说,以相反的顺序撤消成功的步骤。
假想的例子:电信公司为一个客户提供了一个新的VoIP产品,有6个服务呼叫:
客户关系管理查询库存以检查客户是否拥有合适的equipment
上面的6个步骤应该是一个事务的一部分。例如,如果库存更新失败,您(可能)需要撤消客户设备配置。
发布于 2010-05-27 10:26:34
这并不是一个真正意义上的案例。事务(分布式或非分布式)的实现是必要的,而不是任意的选择,以保证一致性。另一种方法是实现协调过程,以确保最终的一致性。
在经典的银行示例中(资金流出帐户A,进入帐户B),事务一致性非常重要。在一些库存系统中(检查库存,减少库存,卖给客户),库存水平大致准确可能是可以接受的,而不是保证准确。在这种情况下,忽略失败(减少库存,销售失败)可以通过稍后的协调来处理。
https://stackoverflow.com/questions/2560243
复制相似问题