每天聊点区块链8:两段式提交

一 简介

两段式提交是为了使分布式系统架构下的所有节点在进行事务提交时保持一致性的一种算法,它有一个协调点居中控制,而其他节点作为参与者。

二 执行流程

第一阶段
1.协调者会向所有参与者发送一条消息,询问是否可以执行操作,并开始等待各参与者节点的响应。
2.参与者会将所有事务操作写入日志。
3.参与者向协调者返回事务的响应。
第二阶段
成功
所以参与者发送消息“同意”即是成功。
1.协调者向参与者发送“提交”指令
2.参与者节点完成操作后释放整个事务占用的资源
3.参与者向协调者发送“完成”指令
4.协调者收到所有节点“完成”指令后,事务完成。
失败
有一个节点返回“终止”即失败
1.协调者向所有参于者发送“回滚”指令
2.参与者利用写入日志的Undo信息回滚,释放资源
3.参与者节点向协调者节点发送"回滚完成"指令
4.协调都收到所有参与者节点反馈的“回滚完成”指令后,取消事务。

三 缺点

1.两段式提交在协调节点故障时可以保持系统状态的一致性,而一旦协调节点发生故障,所有参与点将处于锁定状态,就算重新选举一个协调点也不能完全解决。
2.当协调者向参与者发送提交指令时,网络异常只有一部分节点收到,数据就不一致了
3.协调者发送提交指令后发生故障,唯一知道的参与者也故障,那么这条事务状态就不确定了,没人知道事务是否提交,就算选举新的协调者也不行。

你可能感兴趣的:(每天聊点区块链8:两段式提交)