分布式事务一致性:三阶段提交协议(3PC)

版权声明:转载请注明出处。 https://blog.csdn.net/Yeomer/article/details/85336503

一、概念

三阶段提交协议是两阶段提交协议的改进版本。它通过超时机制解决了阻塞的问题,并把两个阶段增加为以下三个阶段。

  1. 询问阶段: 协调者询问参与者是否可以完成指令,参与者只需要回答是或者不是。
  2. 准备阶段: 如果询问阶段都返回是,那么协调者会像所有参与者发送预执行请求指令,然后参与者写redo和undo日志,执行操作但不提交。(与二阶段提交的准备阶段类似)
  3. 提交阶段: 如果每个参与者在准备阶段返回准备成功,则协调者向参与者发起提交指令,参与者提交事务,释放资源。如果任何参与者返回准备失败,则协调者发起中止指令,参与者执行undo日志回滚。

二、和2PC对比

  • 与二阶段提交协议相比优点:
    1. 增加了询问阶段,可以确保尽可能早的发现问题,比如无法执行操作,但是它并不能发现所有这种行为,只能减少。
    2. 在准备阶段后,协调者和参与者执行的任务中,都增加了超时机制,一旦超时,则协调者和参与者都会继续提交事务,默认为成功,这也是根据概率统计超时后为默认成功的正确性最大。
  • 三阶段提交协议的缺点:
    1. 一旦超时,系统仍然会发生不一致。只不过这种情况很少见。
    2. 实现复杂,性能较差。

三、总结

在互联网的高并发系统中,很少有会使用2PC和3PC的场景。

猜你喜欢

转载自blog.csdn.net/Yeomer/article/details/85336503