从Paxos到ZooKeeper-一致性协议之2PC、3PC
来源:互联网 发布:安卓手机数据恢复软件下载 编辑:程序博客网 时间:2024/05/29 16:31
一、2PC
在上一节ZooKeeper-分布式架构中有讲到,分布式系统架构设计中往往是在系统可用性和数据一致性之间进行反复权衡,于是产生了系列一致性协议
在分布式系统中,每个节点都能明确知道自身事务操作结果,但无法直接获取到其他分布式节点的操作结果。所以当一个事务要横跨多个节点时,为了保证事务处理的ACID特性而引入了协调者组件来统一调度所有分布式节点(参与者)的执行逻辑,协调者调度参与者的行为并最终决定是否把参与者的事务进行真正的提交
2PC(Two-Phase Commit 两阶段提交):完成参与者的协调,统一决定事务的提交或回滚,使基于分布式系统架构下的所有节点在进行事务处理过程中能够保持原子性和数据一致性
1. 协议说明
二阶段提交协议将事物的提交过程分为两个阶段处理
(1)提交事务请求
事务询问:协调者向所有参与者发送事务内容,询问是否可以执行事务提交操作,等待响应
执行事务:参与者节点执行事务操作,并记录Undo和Redo信息到事务日志
参与者响应:若参与者成功执行事务,则向协调者反馈Yes响应,否则反馈No响应
(2)执行事务提交-提交
如果所有参与者的反馈都是Yes响应,那么执行事务提交
发送提交请求:协调者向所有参与者发送Commit请求
事务提交:参与者接受到Commit请求后执行事务提交操作并释放占用的事务资源
反馈事务提交结果:参与者完成事务提交后向协调者发送Ack消息
完成事务:协调者收到所有参与者的Ack响应后,完成事务提交
(3)执行事务提交-中断
如果任何一个参与者返回了N响应或者协调者等待超时后就会中断事务
发送回滚请求:协调者向所有参与者发送Rollback请求
事务回滚:参与者受到请求后通过Undo信息执行事务回滚操作并释放占用的事务资源
反馈事务回滚结果:参与者回滚事务后向协调者发送Ack消息
中断事务:协调者接收到所有参与者的Ack响应后,完成事务中断
2. 优缺点
(1)优点
原理简单,实现方便
(2)缺点
同步阻塞:在阶段二事务提交过程中,所有参与者的操作逻辑都处于阻塞状态,等待其他参与者响应,协调者请求
单点问题:一旦协调者出现问题,阶段二提交流程无法运转,并且参与者会一直处于锁定事务资源的状态,无法继续事务操作
数据不一致:当协调者向所有参与者发送了Commit请求后局部网络异常或协调者半路出错导致只有部分参与者收到Commit请求,造成系统出现数据不一致
太过保守:任何一个参与节点的失败使得协调者无法获取所有参与者的响应信息都会导致整个事务的失败
二、3PC
3PC(Three-Phase Commit 三阶段提交)将二阶段提交的提交事务请求过程一分为二,形成CanCommit、PreCommit、doCommit三个阶段
1.协议说明
(1)CanCommit
事务询问:协调者向所有参与者发送包含事务内容的CanCommit请求,询问是否可以执行事务提交操作,等待响应
参与者响应:参与者接收到CanCommit请求后判断自身能够顺利执行事务,能则返回Yes响应并进入预备状态,否则返回No响应
(2)PreCommit
执行事务预提交
如果所有参与者反馈都为Yes响应,则执行事务预提交发送预提交请求:协调者向所有参与者节点发出PreCommit请求,并进入Prepared阶段
事务预提交:参与者接收到PreCommit请求后执行事务操作,并记录Undo和Redo信息到事务日志中
参与者响应事务执行结果:若参与者成功执行事务后则返回Ack响应给协调者,等待最终命令中断事务
若任何一个参与者反馈了No响应或者协调者等待超时则中断事务发送中断请求:协调者向所有参与者节点发出Abort请求
中断事务:无论收到Abort请求或者等待协调者请求超时,参与者都会中断事务
(3)DoCommit
执行提交
发送提交请求:当协调者收到所有参与者反馈的Ack响应,向所有参与者发送DoCommit请求,从预提交状态转到提交状态
事务提交:参与者接收到DoCommit请求后,正式执行事务提交操作,并释放占用的事务资源
反馈事务提交结果:参与者完成事务提交后向协调者发送Ack消息
完成事务:协调者接受到所有参与者反馈的Ack响应后,完成事务中断事务
发送中断请求:协调者向所有参与者节点发出Abort请求
事务回滚:参与者接收到Abort请求后,利用Undo信息执行事务回滚操作,并释放占用的事务资源
反馈事务回滚结果:参与者完成事务回滚后向协调者发送Ack消息
中断事务:协调者接收到所有参与者反馈的Ack响应后,中断事务
第三阶段中若参与者无法及时接收到协调者发送的DoCommit或者Abort请求都会在等待超时后继续进行事务提交
2. 优缺点
(1)优点
降低参与者的阻塞范围,能够在出现单点故障后继续达成一致
(2)缺点
接受者接收到PreCommit消息后,如果出现网络分区导致协调者和参与者无法正常通信,这时参与者仍会进行事务提交,造成数据的不一致
- 从Paxos到ZooKeeper-一致性协议之2PC、3PC
- 从Paxos到ZooKeeper-一致性协议之Paxos算法
- 从PAXOS到ZOOKEEPER分布式一致性原理与实践--3PC(Three-Phase Commit)
- 从PAXOS到ZOOKEEPER分布式一致性原理与实践--2PC(Two-Phase Commit)
- 《从Paxos到ZooKeeper》读书笔记--两阶段提交 2PC
- 2PC,3PC和Paxos分布式一致性算法
- 2PC,3PC和Paxos分布式一致性算法
- 一致性协议之3PC。
- 一致性协议之2PC。
- 关于分布式事务、两阶段提交协议、三阶提交协议(2pc 3pc 都无法保证彻底一致性,除了Paxos 协议)
- 分布式系统中的一致性协议2PC | 3PC
- 【一致性协议算法】2PC和3PC
- 一致性协议——2PC/3PC
- 2PC到3PC到Paxos到Raft到ISR
- 2PC到3PC到Paxos到Raft到ISR
- 读《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之Zookeeper介绍
- <从PAXOS到ZOOKEEPER分布式一致性原理与实践>读书笔记-ZAB协议
- 分布式理论基础-一致性、2PC、3PC
- 今天写了一条把我两个月职业生涯学到的SQL知识全用上了的语句
- node 异步地写入/创建数据到文件
- 超级楼梯 (递归/斐波那契数列)
- win7下搭建ELK5.6.3环境
- Eclipse安装Spring插件
- 从Paxos到ZooKeeper-一致性协议之2PC、3PC
- 七牛云勇斩 LSVC 竞赛大奖!计算机视觉能力获国际认可
- iOS获取唯一设备小结
- ECS云服务器通过SAP HANA认证,海量数据处理技术助力企业数字化转型
- JAVA软件开发
- web项目快速开发使用UI框架优势
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- JQuery Dialog
- 使用VLC转码,在HTML5页面播放实时监控