对两阶段提交协议的理解

本文阅读 3 分钟
首页 知识库 正文

分布式系统的⼀个难点是如何保证架构下多个节点在进⾏事务性操作的时候保持⼀致性。为实现这个⽬的,⼆阶段
提交算法的成⽴基于以下假设:
该分布式系统中,存在⼀个节点作为协调者(Coordinator),其他节点作为参与者(Cohorts)。且节点之间可以
进⾏⽹络通信。
所有节点都采⽤预写式⽇志,且⽇志被写⼊后即被保持在可靠的存储设备上,即使节点损坏不会导致⽇志数据
的消失。
所有节点不会永久性损坏,即使损坏后仍然可以恢复。 ## 第⼀阶段(投票阶段)
协调者节点向所有参与者节点询问是否可以执⾏提交操作(vote),并开始等待各参与者节点的响应。
参与者节点执⾏询问发起为⽌的所有事务操作,并将 Undo信息和 Redo信息写⼊⽇志。(注意:若成功这⾥
其实每个参与者已经执⾏了事务操作)
各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执⾏成功,则它返回⼀个”同意”消
息;如果参与者节点的事务操作实际执⾏失败,则它返回⼀个”中⽌”消息。
第⼆阶段(提交执⾏阶段) 当协调者节点从所有参与者节点获得的相应消息都为”同意”:
协调者节点向所有参与者节点发出”正式提交(commit)”的请求。
参与者节点正式完成操作,并释放在整个事务期间内占⽤的资源。
参与者节点向协调者节点发送”完成”消息。
协调者节点受到所有参与者节点反馈的”完成”消息后,完成事务。如果任⼀参与者节点在第⼀阶段返回的响应消息为”中⽌”:
协调者节点向所有参与者节点发出”回滚操作(rollback)”的请求。
参与者节点利⽤之前写⼊的 Undo信息执⾏回滚,并释放在整个事务期间内占⽤的资源。
参与者节点向协调者节点发送”回滚完成”消息。
协调者节点受到所有参与者节点反馈的”回滚完成”消息后,取消事务。

解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

BASE 理论的理解
« 上一篇 08-02
ClickHouse 面试题
下一篇 » 08-02

发表评论