Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Transactions 2阶段提交-提交步骤失败_Transactions_Distributed Transactions - Fatal编程技术网

Transactions 2阶段提交-提交步骤失败

Transactions 2阶段提交-提交步骤失败,transactions,distributed-transactions,Transactions,Distributed Transactions,在2阶段提交中,在参与事务的所有组件投票通过“是”后,事务协调器发出“提交”命令。然后每个参与者提交自己的事务 如果任何参与者在“提交”步骤中失败,会发生什么?当此组件失败时,其他组件可能已经提交了其事务。 如果发生这种情况,事务协调器是否能够向所有参与者发出回滚命令 谢谢。第一阶段的全部目的是确保在提交阶段没有失败。至少从数据完整性或业务流程的角度来看。因此,如果提交的准备阶段正常,则可以假设提交将正常工作,但网络/通信故障除外 所有参与系统必须就处理这种情况的一种或另一种方式达成一致 1.自

在2阶段提交中,在参与事务的所有组件投票通过“是”后,事务协调器发出“提交”命令。然后每个参与者提交自己的事务

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


谢谢。

第一阶段的全部目的是确保在提交阶段没有失败。至少从数据完整性或业务流程的角度来看。因此,如果提交的准备阶段正常,则可以假设提交将正常工作,但网络/通信故障除外

所有参与系统必须就处理这种情况的一种或另一种方式达成一致

1.自动提交。如果协调器未显式调用回滚(在给定时间内),则事务将被视为由相应的参与系统提交

2.事务协调器为每个失败的组件重试。如果网络出现故障,重试可能仍然有效

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

现在想想这个。薪酬本身可能不会在所有资源管理器中都成功

某些业务流程也可能需要手动补偿!因此,您需要记录、发出警报,并且可能需要手动补偿,以使系统恢复到原始状态