分布式事务在面向服务的架构中什么时候有意义?
问问题
2866 次
2 回答
2
分布式事务在 SOA 环境中经常使用。如果您有一个复合服务调用多个服务,则底层服务调用应作为单个事务处理。业务流程应允许回滚其步骤。如果底层资源允许,您可以使用两阶段提交,但在许多情况下这是不可能的。在这些情况下,应该对失败步骤之前调用的服务/资源执行补偿操作。换句话说,以相反的顺序撤消成功的步骤。
虚构示例:电信公司为客户提供了一个新的 VoIP 产品,其中有 6 个服务呼叫:
- 查询库存以检查客户是否拥有合适的设备
- 通过中介配置客户设备
- 使用新配置更新库存
- 设置评级引擎以计算客户的 CDR
- 设置计费软件以向客户收取正确的价格计划
- 使用配置过程的结果更新 CRM 系统
上述 6 个步骤应该是一笔交易的一部分。例如,如果库存更新失败,您(可能)需要撤消客户设备配置。
于 2010-04-04T12:36:21.493 回答
1
并不是真正有意义的情况。事务(分布式或非分布式)是根据需要而不是任意选择来实现的,以保证一致性。另一种方法是实施和解过程以确保最终的一致性。
在经典的银行示例中(资金从账户 A 转入账户 B),交易一致性非常重要。在某些库存系统(检查库存、减少库存、向客户销售)中,库存水平大致准确而不是保证是可以接受的。在这种情况下,忽略失败(减少库存,销售无法完成)可以通过稍后对帐来处理。
于 2010-05-27T02:26:33.833 回答