一分钟了解两阶段提交2PC

原创 2017年11月10日 08:06:01

一、概念

二阶段提交2PC(Two phase Commit)是指,在分布式系统里,为了保证所有节点在进行事务提交时保持一致性的一种算法。


二、背景
在分布式系统里,每个节点都可以知晓自己操作的成功或者失败,却无法知道其他节点操作的成功或失败
当一个事务跨多个节点时,为了保持事务的原子性与一致性,需要引入一个协调者(Coordinator)来统一掌控所有参与者(Participant)的操作结果,并指示它们是否要把操作结果进行真正的提交(commit)或者回滚(rollback)。


三、思路
2PC顾名思义分为两个阶段,其实施思路可概括为:
(1)投票阶段(voting phase):参与者将操作结果通知协调者;
(2)提交阶段(commit phase):收到参与者的通知后,协调者再向参与者发出通知,根据反馈情况决定各参与者是否要提交还是回滚;


四、缺陷
算法执行过程中,所有节点都处于阻塞状态,所有节点所持有的资源(例如数据库数据,本地文件等)都处于封锁状态
典型场景为:
(1)某一个参与者发出通知之前,所有参与者以及协调者都处于阻塞状态;
(2)在协调者发出通知之前,所有参与者都处于阻塞状态;
另外,如有协调者或者某个参与者出现了崩溃,为了避免整个算法处于一个完全阻塞状态,往往需要借助超时机制来将算法继续向前推进,故此时算法的效率比较低。
总的来说,2PC是一种比较保守的算法


五、举例
甲乙丙丁四人要组织一个会议,需要确定会议时间,不妨设甲是协调者,乙丙丁是参与者。
投票阶段:
(1)甲发邮件给乙丙丁,周二十点开会是否有时间;
(2)甲回复有时间;
(3)乙回复有时间;
(4)丙迟迟不回复,此时对于这个活动,甲乙丙均处于阻塞状态,算法无法继续进行;
(5)丙回复有时间(或者没有时间);
提交阶段:
(1)协调者甲将收集到的结果反馈给乙丙丁(什么时候反馈,以及反馈结果如何,在此例中取决与丙的时间与决定);
(2)乙收到;
(3)丙收到;
(4)丁收到;


六、结论
2PC效率很低,分布式事务很难做

版权声明:本文为博主原创文章,未经博主允许不得转载。

一分钟了解两阶段提交2PC(运营MM也懂了)

上一期分享了“一分钟了解mongoDB”【回复“mongo”阅读】,本期将分享分布式事务的一种实现方式2PC。 一、概念 二阶段提交2PC(Two phase Commit)是...
  • sofia1217
  • sofia1217
  • 2017年01月01日 21:16
  • 329

分布式事务两阶段提交(2PC)的思考

关于分布式事务的设计,我们一直在使用两阶段提交(2PC)作为标准的流程。但是有必要从本质上理解为什么需要两阶段提交。 首先我们要清楚事务的流程是什么样的,一个事务最基本的流程为:读写操作,redo...
  • matrixyy
  • matrixyy
  • 2015年12月26日 06:30
  • 1025

《从Paxos到ZooKeeper》读书笔记--两阶段提交 2PC

两种角色: 参与者(Participant): 被调度的分布式节点 协调者(Coordinator):同意调度所有分布式节点的执行逻辑,并最终决定参与者是否把事务真正进行提交。 一、...
  • u011026968
  • u011026968
  • 2016年01月13日 12:22
  • 430

TCC和两阶段分布式事务处理的区别

TCC和两阶段分布式事务的区别在哪里
  • zhangjq520
  • zhangjq520
  • 2017年11月03日 11:23
  • 1395

[Oracle] 分布式事务和两阶段提交(2PC)

[Oracle] 分布式事务和两阶段提交(2PC)       分布式事务是指发生在多台数据库之间的事务,Oracle中通过dblink方式...
  • haiross
  • haiross
  • 2015年08月04日 14:09
  • 2001

分布式事务和两阶段提交(2PC)

[Oracle] 分布式事务和两阶段提交(2PC)       分布式事务是指发生在多台数据库之间的事务,Oracle中通过dblink方式进行事务处理,分...
  • wangchunyu11155
  • wangchunyu11155
  • 2016年12月14日 11:23
  • 536

2PC,Raft和Paxos笔记

1. 用婚礼过程模拟2PC     牧师(协调者):新郎,你愿意…?     未婚男(参与者A):YES, I DO.     牧师(协调者):新娘,你愿意…?     未婚女(参与...
  • shujiezhang
  • shujiezhang
  • 2017年09月22日 20:55
  • 164

二阶段提交,三阶段提交,Paxos

随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。     为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站...
  • wl044090432
  • wl044090432
  • 2017年02月08日 10:17
  • 1566

从MongoDB了解二阶段提交的机制

这几天一直在看Mongodb
  • yyd19921214
  • yyd19921214
  • 2014年11月10日 20:36
  • 1107

两阶段提交-2PC

两阶段提交协议(two phase commit protocol,2PC)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定提交...
  • linking530
  • linking530
  • 2016年06月15日 16:51
  • 211
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一分钟了解两阶段提交2PC
举报原因:
原因补充:

(最多只允许输入30个字)