【分布式计算】2PC

两阶段提交(2PC)是一种确保分布式系统中数据一致性的协调协议。它包括准备阶段和提交阶段。在准备阶段,协调者询问参与者是否可以提交事务,参与者执行本地操作并回复。如果所有参与者成功,协调者则在提交阶段发出正式提交请求,参与者提交事务并释放资源。若有参与者失败,协调者将发起回滚请求,参与者回滚操作并释放资源,以保持事务的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2PC阶段:两段提交指分布式节点事务的提交由两个阶段组成

  • 准备阶段(投票阶段):

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

(2)参与者节点操作与回应:(如权限验证失败)直接返回失败;

执行本地事务操作,写本地redo和undo日志但不提交,本地事务操作成功则返回同意,操作失败返回中止

  • 提交阶段(执行阶段)

前提:所有参与者操作成功,返回同意

  1. 协调者节点向所有参与者节点发出“正式提交”请求
  2. 参与者完成操作,并且释放在整个事务期间占用的资源
  3. 参与者节点向协调者发送“完成”消息
  4. 协调者节点接收到所有参与者节点的“完成”消息后完成事务

前提:任一参与者操作失败,返回失败或者中止

  1. 协调者节点向所有参与者节点发出“回滚操作(rollback)”请求
  2. 参与者节点利用之前写入的undo信息执行回滚,并释放在整个事务期间占用的资源
  3. 参与者节点向协调者节点发送回滚完成消息
  4. 协调者收到所有参与者节点的“回滚完成”消息后,取消事务

2pc过程总结:(简单来说)

分布式系统中事务的ACID原则需要协调者进行组织协调以保证分布式节点上对同一事务的数据一致性。

首先,协调者向所有参与者发送询问是否提交事务并等待参与者回复,若参与者权限验证失败(或者有其他情况)则直接返回失败,若参与者执行本地操作并且成功完成redo与undo但不提交则返回成功,若执行失败则返回中止。

协调者收到所有参与者成功后,向所有参与者发送“正式提交”操作,参与者完成操作并释放占用的资源,向协调者发送“完成事务”消息,协调者收到所有消息后则整个事务执行完成; 若有参与者在上一阶段操作失败,则所有参与者执行回滚,并释放占用资源,向协调者发送消息,协调者收到参与者所有消息后,取消事务。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值