【分布式系统】两段式提交2PC

2PC(two-phase commit protocol) 在事务过程,数据库和计算网络,两阶段提交协议,是一原子提交协议类型ACP(atomic commitment protocol). 它是一个分布式算法,用于协调分布式原子事务是否需要“提交”或“取消”。无论系统中出现何种失败(进程、网络节点、通讯),该协议都会成功。

两阶段提交具体方案,在多个服务中,一个服务节点作为协调器Coordinator(master),其他服务作为cohorts. 协议要求每个服务节点的存储是稳定可靠的,并且每个节点有一个write-ahead logging,(即每个节点在操作修改时记录每次写入。通常将redo和undo信息存储到log中)。

主要分为两个阶段:
1.
提交申请阶段 commit-request ,协调器将向所有相关服务发送提交申请,每个将该事务标记为待提交,在undo log以及 redo log中添加实体记录,并服务会返回一个参数信息,表明是否可以提交。
2.
提交阶段commit phase, 有两种可能:

  • 成功, 每个服务返回一个“同意”提交给协调器,那么协调器将发送这个commit到所有的服务,每个服务完成各自的事务后,释放操作该事务时占用的锁和资源。然后,每个服务发送通知到协调器,协调器收集玩所有的通知,才算结束。
  • 失败,如果有一个服务返回“废弃”给协调器,那么协调器将发送“rollback”到所有的服务,每个服务根据undo log执行撤销操作,并释放占用的锁和资源。完成后,发送通知到协调器。协调器收集到所有的通知后,才算完成该事务撤销操作。

【分布式系统】两段式提交2PC_第1张图片

你可能感兴趣的:(软件系统架构与开发环境,分布式系统)