美文网首页
分布式事务3PC

分布式事务3PC

作者: bobcorbett | 来源:发表于2017-11-07 16:24 被阅读0次

    3PC Three-Phase-Commit 二阶段提交

    分为三步:CanCommit、PreCommit和do Commit

    阶段一:CanCommit

    1、事务询问
    协调者向参与者发送包含事务内容的canCommit请求
    2、各参与者向协调者反馈询问的响应
    参与者根据自身状态反馈yes或no

    阶段二:PreCommit

    协调者集齐yes
    1、发送预提交请求
    协调者给各参与者发送preCommit请求,进入prepared阶段
    2、事务预提交
    参与者接收到preCommit,执行事务,将UNDO和REDO信息记录到事务日志中
    3、各参与者向协调者反馈事务执行的响应
    参与者反馈ACK

    协调者收到no
    1、发送中断请求
    协调者发送abort
    2、中断事务
    参与者收到abort或者在阶段一或二中超时,都会中断事务

    阶段三:do Commit

    协调者收到所有ack
    1、发送提交请求
    协调者收到所有ack,给所有参与者发送doCommit请求
    2、事务提交
    参与者接收到doCommit请求后,正式执行事务提交,是否事务资源
    3、反馈事务提交结果
    参与者反馈ACK消息
    4、完成事务
    协调者收到所有ACK消息,完成事务

    中断事务(二阶段收到no,或者等待超时,没集齐二阶段的ACK)
    1、发送中断请求
    协调者向所有参与者发送abort
    2、事务回滚
    参与者收到abort,利于UNDO信息回滚事务,释放资源
    3、反馈事务回滚结果
    参与者反馈ACK
    4、中断事务
    协调者集齐所有ACK,中断事务

    进入阶段三可能会遇到两种情况

    • 协调者崩溃
    • 网络故障

    无论出现哪种情况,最终参与者都收不到doCommit和abort请求,这时,参与者在等待超时后,会继续进行事务提交

    优点:解决2PC的单点故障影响整个系统问题

    缺点:参与者超时后会继续提交事务,会出现数据不一致性

    相关文章

      网友评论

          本文标题:分布式事务3PC

          本文链接:https://www.haomeiwen.com/subject/ykujmxtx.html