从头开始学分库分表-------二阶段提交协议

两阶段提交协议

        为了解决分布式事务一致性,常见的方法之一就是2PC两阶段提交协议

        两阶段提交有两个角色,第一个角色是:【事务管理器】。第二个角色是:【数据库事务参与者】。          

        准备阶段(prepare):【事务管理器】在第一阶段发起消息,每个【数据库事务参与者】在本地执行事务

                                           但是这个时候事务没有提交

        提交阶段(commit): (1)如果【事务管理器】接收到了每个【数据库事务参与者】的返回了success的消息的时候

                                                  【事务管理器】会再发出消息,让所有【数据库事务参与者】提交事务

                                          (2)如果有任意【数据库事务参与者】返回了超时或者失败的消息给事务管理器的时候

                                                  【事务管理器】会对每个【数据库事务参与者】发出事务回滚的消息。

                                       

                                        

缺点

        (1)如果有任意一个【数据库事务参与者】处于超时或者阻塞状态,那么其它所有【数据库事务参与者】必须阻塞。这个会导致整体数据库性能大大降低。

        (2)如果【事务管理器】宕机或者崩溃,那么所有【数据库事务参与者】都很可能进入无限时等待的状态。

参考文章:两阶段提交(2PC)

posted @ 2022-07-17 12:13  小大宇  阅读(3)  评论(0编辑  收藏  举报