一致性协议

喜你入骨 提交于 2019-12-01 16:33:36

2PC和3PC

2PC(Two-Phare Commit)

阶段一:提交事务请求

  1 - 事务询问  协调者像所有参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待各参与者的响应。

  2 - 执行事务  各参与者执行事务,并记录Undo和Redo信息(Undo和Redo是数据库用来commit和rollback的记录文件)

  3 - 各参与者向协调者反馈事务询问的响应  如果参与者事务执行成功,则返回给协调者yes,否则返回给协调者no

阶段二:执行事务提交

  1 - 执行事务提交(所有的参与者均返回yes)

    1 - 发送提交请求  协调者向所有参与者发送提交请求

    2 - 事务提交  参与者接收到协调者发出的请求后,完成自己的事务提交,并在提交完成后释放这个事务执行期间占据的资源

    3 - 反馈事务提交结果  参与者在完成事务后,像协调者发送Ack消息

    4 - 完成事务  协调者接收到所有参与者返回的Ack消息,完成整个分布式事务

  2 - 执行事务回滚(非所有参与者均返回yes)

    1 - 发送回滚请求  协调者向所有参与者发送rollback请求

    2 - 事务回滚  参与者接收到协调者发出的请求后,完成自己的事务回滚,并在提交完成后释放这个事务执行期间占据的资源

    3 - 反馈事务回滚结果  参与者在完成各自的事务回滚后,向协调者发送Ack消息

    4 - 中断事务(回滚事务)  协调者接收到所有参与者返回的Ack消息后,完成分布式事务的回滚

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!