找回密码
 立即注册
首页 业界区 安全 3.分布式事务方案-3PC

3.分布式事务方案-3PC

百谖夷 2025-7-6 20:34:32
1. 3PC是什么


  • 证强一致性的一种分布式事务方案,2PC的改进版
2. 3PC流程


  • 把2PC中的第一阶段拆分成两步,因此整个事务过程分成3个阶段:CanCommit、PreCommit、DoCommit

    • CanCommit阶段:协调者向所有参与者询问你们是否可以完成本次事务?,各个参与者检查下自身状态的健康性,看有没有能力进行事务操作,然后向协调者返回ack消息。
    • PreCommit阶段:

      • 预提交事务:如果所有的参与者都返回yes的话,那么协调者向参与者发送sql,参与者本地执行事务,然后向协调者返回ack消息(注意这里参与者并没有提交事务
      • 中断事务:如果有参与者节点返回no或者协调者在等待参与者节点反馈的过程中超时,协调者就会向所有的参与者发送中断请求

    • DoCommit阶段:

      • 提交事务:如果PreCommit阶段所有参与者返回yes,那么协调者向参与者发送事务commit请求,让每个参与者commit本地事务;
      • 回滚事务:其他情况协调者向参与者发送事务rollback请求


  • 1.png

3. 2PC vs 3PC


  • 把2PC中的第一阶段拆分成两步,因此整个事务过程分成3个阶段:CanCommit、PreCommit、DoCommit
  • 同时引入了超时机制:协调者和参与者中都引入超时机制
  • 解决单点故障问题+性能问题:因为一旦参与者无法及时收到来自协调者的信息之后,他会默认执行commit,而不会一直持有事务资源并处于阻塞状态
4. 3PC的使用场景


  • 适用于强一致性、时间敏感度高、分布式事务可以回滚的业务的处理结果,比如金融转账场景
  • 单个服务多个数据源且数据源都是DB,即传统单体
5. 3PC的问题


  • 一致性问题:比如在进入PreCommit阶段后,如果协调者发送的是abort指令,而此时由于网络问题,有部分参与者在等待超时后仍未收到Abort指令的话,那这些参与者就会执行commit,这样就产生了不同参与者之间数据不一致的问题
  • 实现困难

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册