分布式事务之二阶段提交和三阶段提交

先介绍两个概念:
TM(Transaction Manager):事务管理器
RM(Resource Manager):资源管理器

两阶段提交

给定两个服务,订单服务和支付服务之间的调用:

两阶段提交的第一阶段

1:事务开始,先由TM向每个服务发起请求用来获取执行状态,事务代码开始执行,锁定资源,但不提交
2:如果事务A在执行时出现异常,会返回执行状态(异常),如果执行正常,事务A执行会返回执行状态(正常);事务A同理

两阶段提交的第二阶段

3:如果上述"2"返回的是全部"正常",TM在向每个服务发起请求通知它们进行提交;
如果上述"2"返回的有一个是"异常",TM在向每个服务发起请求通知它们进行回滚。

三阶段提交

三阶段提交与二阶段提交相比,在两阶段提交的第一阶段前增加了询问的过程;
因为在事务执行时是锁定资源的,可能出现网络不通导致资源阻塞。

三阶段提交的第一阶段

0-1:TM在向每个服务发起请求询问网络是否正常
0-2:如果返回的是全部"正常",TM在执行事务操作;
如果返回的有一个是"异常",TM不在执行。

三阶段提交的第二阶段为二阶段提交的第一阶段

1:事务开始,先由TM向每个服务发起请求用来获取执行状态,事务代码开始执行,锁定资源,但不提交
2:如果事务A在执行时出现异常,会返回执行状态(异常),如果执行正常,事务A执行会返回执行状态(正常);事务A同理

三阶段提交的第三阶段为二阶段提交的第二阶段

3:如果上述"2"返回的是全部"正常",TM在向每个服务发起请求通知它们进行提交;
如果上述"2"返回的有一个是"异常",TM在向每个服务发起请求通知它们进行回滚。

posted @ 2022-03-07 18:03  叕叕666  阅读(448)  评论(0)    收藏  举报