2PC与3PC的区别是什么?
1.3PC比2PC多了一个cancommit阶段,减少了不必要的资源浪费。
因为2PC的第一阶段直接就执行事务操作并将事务信息写入日志了,要是后面失败就浪费了资源;而3PC的cancommit阶段可以校验是否可以执行,如果不能执行就直接返回,这样就减少了资源的浪费。
2.3PC引入超时机制,同时在协调者和参与者中都引入超时机制。
2PC:只有协调者有超时机制,超时后才发送回滚指令。
3PC:协调者和参与者都有超时机制
协调者超时:cancommit、precommit中,如果收不到参与者的反馈,则协调者向参与者发送终止指令。
参与者超时:1.precommit阶段中,参与者接收不到协调者的指令会自己进行中断(cancommit阶段不存在超时,因为协调者第一次给参与者发送指令,所以在precommit阶段才是参与者第一次遇到超时的情况);2.docommit阶段,参与者等不到协调者的指令,参与者会自己进行提交。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!