分布式系统-6-两阶段提交

上节知识准备:Raft

前面我们聊到单个集群的一致性算法,今天我们来聊聊多集群分布式事务算法:两阶段提交。这个算法主要保证了事务的原子性,即各个集群的操作要全做,要么全不做。

可将多个集群视为参与者,引入第三方协调者,由协调者收集各个参与者对某个操作的预执行情况,然后决定要通知各个参与者 commit 还是 rollback。

所以所谓的两阶段是指准备阶段和执行阶段,举个例子,首先A将成为该活动的协调者,B、C和D将成为该活动的参与者。准备阶段:A发邮件给B、C和,提出下周三去爬山,问是否同意。那么此时A需要等待B、C和D的回复。B、C和D分别查看自己的日程安排表。B、C发现自己在当日没有活动安排,则发邮件告诉A他们同意下周三去爬长城。由于某种原因,D白天没有查看邮件。那么此时A、B和C均需要等待。到晚上的时候,D发现了A的邮件,然后查看日程安排,发现下周三当天已经有别的安排,那么D回复A说活动取消吧。此时A收到了所有活动参与者的邮件,并且A发现D下周三不能去爬山。那么A将发邮件通知B、C和D,下周三爬长城活动取消。此时B、C回复A“太可惜了”,D回复A“不好意思”。至此该事务终止。

但是这其中要面临的故障有:

  1. 事务参与者发生故障。给每个事务设置一个超时时间,如果某个事务参与者一直不响应,到达超时时间后整个事务失败。

  2. 协调者发生故障。协调者需要将事务相关信息记录到操作日志并同步到备用协调者,假如协调者发生故障,备用协调者可以接替它完成后续的工作。如果没有备用协调者,协调者又发生了永久性故障,事务参与者将无法完成事务而一直等待下去。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 10,190评论 2 26
  • 1.轮播原理: 将图片排成一行,隐藏超出范围的图片,在第一张图片前添加1最后一张图片,在最后一张图片后添加第一张图...
    我七阅读 1,001评论 0 0
  • 泰伯第八(主要记孔子和曾子的言论及其对古人的评论) 每日《论语》编辑:曹友宝 【原文】 8.9子曰:“民可使由之,...
    曹友宝阅读 1,501评论 0 0
  • 转载自HOW TO: 升级Mac OS X上的GIT 在MacOSX下使用Homebrew或其它方式安装最新版本的...
    刘大帅阅读 6,749评论 0 3
  • 我爱你,济南的雾霾 你进入我的身体缠绵 我变成你的呼吸缱绻 这是我的情人才有的权力 现在我为你尖叫,呼吸困难 我爱...
    彧婠九尾猫阅读 1,553评论 1 3