2PC
1PC阶段
这里向协调者注册有事务服务,通常是使用MQ,注册成功后 执行本地事务。提交和回滚是2PC阶段
2PC阶段。
2PC阶段是提交。首先进行预处理(验证SQL语法,值的范围),然后想协调者commit,协调者返回成功,在执行本地事务。这时候大家能够发现一个问题。这里2PC是弱分布式事务,不不能保证两个事务能够同事执行成功,比如 订单服务的 5commit成功, 支付服务的 5commit失败。那么 订单服务的 事务将不会回滚。发生的概率很低。
3PC
1PC阶段
这里与2PC对比,多了一个 can commit过程。尝试是否可以提交到数据库,如果可以提交,就获取到该记录的锁将其锁住。
2PC阶段
这里和就是告诉协调者,我准备开始提交数据库事务了,协调者返回说可以提交,你开始执行本地数据库事务修改数据吧。
3PC
最后异步协调者通知提交 数据库本地事务。 和2PC对比,多了一步 can commit 数据加锁