分布式事务(二)———2PC/3PC(强一致性)解决方案
该系列参考:
https://www.jianshu.com/p/962271bbf4ea
https://blog.csdn.net/a745233700/article/details/122402303
https://cloud.tencent.com/developer/article/2048776
https://icyfenix.cn/
一、2PC两阶段提交
两阶段提交就是将事务提交拆成了准备阶段和提交阶段这两个阶段。 是一种强一致性设计,引入一个事务协调者的角色来协调管理各参与者(也可称之为各本地资源)的提交和回滚
数据库充当RM角色,应用需要充当TM的角色,把多个本地事务协调为全局统一的分布式事务。
1.一阶段提交
(1)假设第一阶段所有RM都返回Ok(准备成功),那么TM则向所有RM发送提交事务命令,然后等待所有事务都提交成功之后,返回事务提交成功
(2)假设第一阶段有一个RM返回失败了,那么TM就会向所有参与者发送回滚事务的请求,即分布式事务失败
(3)此阶段TM有超时机制,因为可能存在因为网络原因没有收到RM的响应或者RM挂了的情况,超时就会判断事务失败,全部回滚
2.二阶段提交
(1)假设二阶段执行回滚事务操作失败,则会不断重试回滚直到所有RM都回滚成功
(2)假设二阶段执行提交事务操作失败,也会不断重试,因为此时可能已经有RM已经提交成功了