俩阶段提交

准备阶段

事务协调者给每个参与者发送Prepare消息,每个参与者要么直接返回失败,要么在本地执行事务,但不提交。

可以进一步将准备阶段分为以下三个步骤:

  • 1)协调者节点向所有参与者节点询问是否可以执行提交操作,并开始等待各参与者节点的响应。

  • 2)参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。

  • 3)各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个”同意”消息;如果参与者节点的事务操作实际执行失败,则它返回一个”中止”消息。

提交阶段

如果协调者收到了参与者的失败消息或者超时,直接给每个参与者发送回滚消息;否则,发送提交消息;参与者根据协调者的指令执行提交或者回滚操作。

接下来分两种情况分别讨论提交阶段的过程。

  • 1)协调者节点向所有参与者节点发出”正式提交”的请求。

  • 2)参与者节点正式完成操作,并释放在整个事务期间内占用的资源。

  • 3)参与者节点向协调者节点发送”完成”消息。

  • 4)协调者节点受到所有参与者节点反馈的”完成”消息后,完成事务。

如果任一参与者节点在第一阶段返回的响应消息为”中止”,或者 协调者节点在第一阶段的询问超时之前无法获取所有参与者节点的响应消息时:

  • 1)协调者节点向所有参与者节点发出”回滚操作”的请求。

  • 2)参与者节点利用之前写入的Undo信息执行回滚,并释放在整个事务期间内占用的资源。

  • 3)参与者节点向协调者节点发送”回滚完成”消息。

  • 4)协调者节点受到所有参与者节点反馈的”回滚完成”消息后,取消事务。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值