2pc和3pc区别
2pc和3pc区别
3pc背景:
2pc协议在协调者和执行者同时宕机时(协调者和执行者不同时宕机时,都能确定事务状态),选出协调者之后 无法确定事务状态,会等待宕机者恢复才会继续执行(无法利用定时器来做超时处理,超时后也不知道事务状态,无法处理,强制处理会导致数据不一致),这段时间这个事务是阻塞的,其占用的资源不会被释放。为了解决这个问题,产生了3PC协议。
原理:
3PC增加了一个中间状态,方便判断事务状态,新的协调者不用等宕机者恢复 就能决定事务状态,准确的提交事务或者终止事务。
1.CanCommit(能否提交)
2.PreCommit(预提交)
进入这个状态,说明各执行节点的状态都是canCommit
3.doCommit(预提交)
进入这个状态,说明个执行节点的状态都是precommit
新协调者如果发现有的存活节点的状态是preCommit或doCommit,说明各执行节点的状态肯定都是"可以提交",协调者直接提交事务,能保证数据一致性 。
如果发现有的存活节点状态是abort状态,说明事务被中断了,协调者继续中断事务就行。
如果发现所有节点都是canCommit,说明各执行节点不会有处于doCommit状态(因为如果有节点是canCommit,不会有节点是canCommit状态),协调者中断事务,能保证数据一致性。
结论:
3pc解决了事务状态不可知的问题。不过其对执行者引入超时机制(超时后根据执行器当前状态canCommit or preCommit回滚或者提交事务,释放事务占用的资源),如果发生网络分区,会导致事务数据不一致,虽然提升了系统可用性,不过牺牲了系统一致性,执行者超时这个设计不好。
2pc 3pc归根到底是选择系统可用性还是选择系统一致性(CAP理论中的抉择问题)
2pc 一致性好、可用性较低,3pc 一致性较低、可用性高
2pc和3pc区别的更多相关文章
- 分布式事物-2pc和3pc区别
参考地址: https://www.cnblogs.com/bangerlee/p/5268485.html, 感谢原作者 http://blog.51cto.com/11821908/2058651 ...
- 分布式事务之深入理解什么是2PC、3PC及TCC协议?
导读 在上一篇文章<[分布式事务]基于RocketMQ搭建生产级消息集群?>中给大家介绍了基于RocketMQ如何搭建生产级消息集群.因为本系列文章最终的目的是介绍基于RocketMQ的事 ...
- 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)
分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...
- 分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab
分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab 本文介绍一致性算法: 2PC 到 3PC 到 Paxos 到 Raft 到 Zab 两类一致性算法(操作原 ...
- 分布式系统理论基础 - 一致性、2PC和3PC
引言 狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作.广义的分布式系统是一个相对的概念,正如Leslie Lamport所说[1]: What is ...
- 三:分布式事务一致性协议2pc和3pc
一:分布式一致性协议--->对于一个分布式系统进行架构设计的过程中,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是就产生了一系列的一致性协议.--->长期探索涌现出一大批经典的一 ...
- 分布式一致性算法2PC和3PC
为了解决分布式一致性问题,产生了不少经典的分布式一致性算法,本文将介绍其中的2PC和3PC.2PC即Two-Phase Commit,译为二阶段提交协议.3PC即Three-Phase Commit, ...
- 分布式系统的一致性协议之 2PC 和 3PC
在分布式系统领域,有一个理论,对于分布式系统的设计影响非常大,那就是 CAP 理论,即对于一个分布式系统而言,它是无法同时满足 Consistency(强一致性).Availability(可用性) ...
- 分布式一致性协议-2PC与3PC(二)
一.分布式一致性 一个事务需要跨多个分布式节点,又要保持事务的ACID特性,需要引入协调者来统一调度所有分布式节点的执行逻辑,被调度的节点称为参与者. 协调者负责调用参与者,并决定最终是否提交事务.基 ...
随机推荐
- 洛谷P2089 烤鸡
标签:暴力,枚举 题目背景 猪猪 Hanke 得到了一只鸡. 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末. ...
- Day 23:JAVA SE复习
作业 1.多线程下载图片 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream ...
- UVA - 1600 Patrol Robot (巡逻机器人)(bfs)
题意:从(1,1)走到(m,n),最多能连续穿越k个障碍,求最短路. 分析:obstacle队列记录当前点所穿越的障碍数,如果小于k可继续穿越障碍,否则不能,bfs即可. #pragma commen ...
- 用JS改变embed标签的src属性
思路: A.先隐藏embed标签 B.清除embed元素 C.为embed重新赋值,加入Html页面中 1.html代码 <object id="forfun" classi ...
- 英语学习 - 进行时态的被动 ( be being done )
be being done 例: The story book was being read by him .
- [JZOJ]1293.气象牛[区间DP]
Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1-M_N(1 <= M_i <= 1 ...
- 077-PHP数组删除元素
<?php $arr=array(98,'hello',67,'A',85,NULL); //定义一个数组 echo '删除元素之前数组中的元素个数为:'.count($arr); //输出数组 ...
- JavaScript的函数和对象介绍
一.JavaScript中的函数 1.函数的概述 JavaScript中的函数是一段可执行代码的合集,在需要执行的时候可以在方法名之后添加一对小括号执行方法.是一段可执行的字符串. 2.函数中隐藏的属 ...
- java基础源码 (4)--reflect包-AnnotatedElement接口
接口:AnnotatedElement * Represents an annotated element of the program currently running in this * VM. ...
- python_@classmethod
class A(object): bar = 1 def func1(self): print ('foo') @classmethod def func2(cls): print ('func2') ...