分布式基础之二阶段提交
二阶段提交(Two Phase Commit)在分布式事务处理中非常常见。它主要用来保证分布式事务处理的一致性,决定事务的提交或回滚。目前二阶段提交广泛应用于关系型数据库的分布式事务处理中,它是分布式系统中的一个常见协议。
需求
为什么要二阶段提交?因为在分布式系统中,每个节点只知道自己的事务是否执行成功了,而分布式系统要求一致性,也就是所有的节点的状态都应该一致。如果某一个事务只在部分节点执行成功,那么势必会导致各分布式节点不一致。二阶段提交就是用来保证要么所有的节点都执行了该事务,要么都不执行。
简介
顾名思义,二阶段提交要通过两个阶段来完成。此外在二阶段中主要分为两种角色:协调节点与普通节点。而且协议中还假设节点不会发生永久性故障,而且任意两个节点都可以互相通信。
提交阶段
在提交阶段,协调节点将事务分发给普通节点,普通节点进行事务的处理并返回响应。具体过程如下:
- 协调节点向各普通节点发送事务内容,等待普通节点的回应
- 各普通节点执行事务,并记录下日志(用来事务中断时进行回滚)
- 各普通节点返回响应,判断事务是否执行成功
注:协调节点需要设置超时时限,如果有普通节点在超时时限内都没有响应,认为事务执行失败。
执行阶段
在执行阶段,根据各普通节点的响应结果来进行事务的提交或回滚。
执行事务
- 所有