事务服务和两阶段提交的解释
资源 |
事务对象 |
可恢复服务器A
|
事务客户 |
可恢复服务器B |
Current |
Coordinator |
Pay out |
Pay in |
Begin |
Commit
|
Commit
|
Commit
|
银行A向银行B转帐。分别对应可恢复服务器A和B。
(1) 事务处理的启动,执行和结束
首先客户端调用Begin开始事务,建立一个与该客户端线程对应的事务环境。客户调用A服务器的pay out操作。
客户调用B的pay in操作,然后Commit事务。
(2)执行两阶段提交
Corrdinator对象调用所有(本例为A和B)的Prepare操作,返回值表示了事务的执行结果。两个都返回确认的时候表示事务成功执行。
根据A和B的投票结果执行Coordinator对象的Commit或者RollBack操作。当投票结果都为确认的话,则调用Commit表示转帐事务结束。如果投票结果中有一个否决了,则在第二阶段调用RollBack操作。