SOA和分布式事务

时间:2010-04-01 12:24:30

标签: soa distributed-transactions

分布式事务何时在面向服务的体系结构中有意义?

2 个答案:

答案 0 :(得分:2)

分布式事务在SOA环境中经常使用。如果您有一个调用多个服务的组合服务,则应将基础服务调用作为单个事务处理。业务流程应允许回滚其步骤。如果底层资源允许,您可以使用两阶段提交,但在许多情况下,这是不可能的。在这些情况下,应对失败步骤之前调用的服务/资源进行补偿操作。换句话说,以相反的顺序撤消成功的步骤 想象一下:电信公司为有6个服务电话的客户提供新的VoIP产品:

  1. 查询库存以检查客户是否拥有合适的设备
  2. 通过调解配置客户设备
  3. 使用新配置更新广告资源
  4. 设置评级引擎以计算客户的CDR
  5. 设置结算软件以向客​​户收取正确的价格计划
  6. 使用配置流程的结果更新CRM系统
  7. 上述6个步骤应该是一个交易的一部分。例如。如果库存更新失败,您(可能)需要撤消客户设备配置。

答案 1 :(得分:1)

不是真的有意义的时候。交易(分发与否)是必要的,而不是任意选择,以保证一致性。另一种方法是实施协调过程以确保最终的一致性。

在经典银行示例(账户A中的资金,账户B)中,交易一致性非常重要。在一些库存系统中(检查库存,减少库存,卖给客户),库存水平大致准确,而非保证可能是可以接受的。在这种情况下,忽略失败(减少库存,销售未能完成)可以通过以后协调处理。