通过使用某种协议进行通信来完成分布式事务,被称为两段式提交。从名字上看,您可能已经知道有两个阶段:
* 第一个阶段,即预提交:
o 事务协调器给每个事务管理器发送准备操作的信号。
o 事务管理器将操作(通常是数据更新)步骤(或细节)写入事务日志。如果失败,事务管理器使用这些步骤重复操作。
o 事务管理器本地创建事务并通知资源管理器对资源(例如,数据库或消息服务器)执行操作。
o 资源管理器执行操作并向事务管理器报告成功(准备提交信号)或失败(准备回滚)。
o 资源管理器等待事务管理器进一步的指令。
o 事务管理器向事务协调器报告成功或失败。
* 第二阶段,即提交阶段:在第二阶段中,第一阶段的结果将传送给所有事务管理器。如果任何事务管理器报告失败,所有的事务参与者都必须回滚。
o 事务协调器让所有事务管理器提交(或回滚)。
o 所有事务管理器将提交或回滚信息传递给其资源管理器。
o 资源管理器将成功或失败提示返回给事务管理器。
o 事务管理器向事务协调器报告成功或失败。
* 第一个阶段,即预提交:
o 事务协调器给每个事务管理器发送准备操作的信号。
o 事务管理器将操作(通常是数据更新)步骤(或细节)写入事务日志。如果失败,事务管理器使用这些步骤重复操作。
o 事务管理器本地创建事务并通知资源管理器对资源(例如,数据库或消息服务器)执行操作。
o 资源管理器执行操作并向事务管理器报告成功(准备提交信号)或失败(准备回滚)。
o 资源管理器等待事务管理器进一步的指令。
o 事务管理器向事务协调器报告成功或失败。
* 第二阶段,即提交阶段:在第二阶段中,第一阶段的结果将传送给所有事务管理器。如果任何事务管理器报告失败,所有的事务参与者都必须回滚。
o 事务协调器让所有事务管理器提交(或回滚)。
o 所有事务管理器将提交或回滚信息传递给其资源管理器。
o 资源管理器将成功或失败提示返回给事务管理器。
o 事务管理器向事务协调器报告成功或失败。