2012-07-22 51 views
0

在2阶段提交中,在参与事务的所有组件都投票“是”之后,事务协调员发出“提交”命令。然后每个参与者都承诺自己的交易。2阶段提交 - 提交失败步骤

如果任何参与者在“提交”步骤失败会发生什么情况?虽然此组件失败,但其他可能已经提交了它们的事务。 如果发生这种情况,交易协调员是否能够向所有参与者发出回滚命令。

谢谢。

回答

2

第一阶段的全部目的是确保在提交阶段没有任何失败。至少由于数据完整性或业务流程的观点。所以如果提交的准备阶段没有问题,那么可以假定提交将起作用,除了网络/通信失败之外。

所有参与系统必须同意一个或办理情况

1.Auto提交的其他方式。如果协调员未明确调用回滚(在给定时间内),则交易将被视为由相应的参与系统承诺。

2.交易协调员重试每个失败的组件。在网络故障的情况下,重试可能仍然有效。

3.补偿。在指定的重试次数之后,事务协调器假定事务已经以不一致的状态结束。然后它可以尝试补偿。 (注意:这不一定是回滚,这就像事务失败时要采取的行动)。

现在想想这个。所有资源经理的薪酬本身可能并不成功。

某些业务流程可能还需要人工补偿!因此,您需要记录日志,发出警报,并且可能需要手动补偿才能使系统恢复到原始状态。