Open luoxn28 opened 6 years ago
一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这3个基本需求,最多只能同时满足其中2项。
CAP不能同时满足,简单证明如下:在两台出现网络故障的机器A和B(二者之间无法正常通信),若该系统同时满足CAP定理,其中在A机器更新了数据data,此时从机器B上获取数据data,则获取的还是老数据,这样也就是无法满足CAP了,侧面说明了CAP不能同时满足。
2PC,2阶段提交协议,是为了使基于分布式架构下的所有节点在进行事务处理过程中能够保持原子性和一致性的一种算法。2PC中有2种角色,协调者和参与者。
2PC分为2个阶段:
2PC协议原理简单,实现方便,但是缺点是同步阻塞,单点问题,过于保守等。
3PC,就是将2PC中的阶段一再次一分为二,这样三阶段提交就有CanCommit、PreCommit、DoCommit三个阶段。在第一阶段,只是询问所有参与者是否可可以执行事务操作,并不在本阶段执行事务操作。当协调者收到所有的参与者都返回YES时,在第二阶段才执行事务操作,然后在第三阶段在执行commit或者rollback。
3PC相对于2PC,大大降低了阻塞范围,并能在单点故障后达成一致,但是3PC也有问题,那就是如果参与者收到preCommit后出现网络故障,无法通信,如果协调者发出rollback,则出现网络故障的参与者最终会进行commit,此时出现了数据不一致问题。
CAP定理
一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这3个基本需求,最多只能同时满足其中2项。
CAP不能同时满足,简单证明如下:在两台出现网络故障的机器A和B(二者之间无法正常通信),若该系统同时满足CAP定理,其中在A机器更新了数据data,此时从机器B上获取数据data,则获取的还是老数据,这样也就是无法满足CAP了,侧面说明了CAP不能同时满足。
2PC
2PC,2阶段提交协议,是为了使基于分布式架构下的所有节点在进行事务处理过程中能够保持原子性和一致性的一种算法。2PC中有2种角色,协调者和参与者。
2PC分为2个阶段:
2PC协议原理简单,实现方便,但是缺点是同步阻塞,单点问题,过于保守等。
3PC
3PC,就是将2PC中的阶段一再次一分为二,这样三阶段提交就有CanCommit、PreCommit、DoCommit三个阶段。在第一阶段,只是询问所有参与者是否可可以执行事务操作,并不在本阶段执行事务操作。当协调者收到所有的参与者都返回YES时,在第二阶段才执行事务操作,然后在第三阶段在执行commit或者rollback。
3PC相对于2PC,大大降低了阻塞范围,并能在单点故障后达成一致,但是3PC也有问题,那就是如果参与者收到preCommit后出现网络故障,无法通信,如果协调者发出rollback,则出现网络故障的参与者最终会进行commit,此时出现了数据不一致问题。