SpringCloud----分布式事务

时间:2020-06-30 22:50:55   收藏:0   阅读:20

解决方案

2PC(两阶段提交协议)

参考:https://www.cnblogs.com/balfish/p/8658691.html

 

技术图片

 

 

2PC

 

事务补偿(TCC)

TCC事务补偿是基于2PC实现的业务层事务控制方案,它是Try、Confirm和Cancel三个单词的首字母,含义如下:

 

技术图片

 

1、Try
  下单业务由订单服务和库存服务协同完成,在try阶段订单服务和库存服务完成检查和预留资源。订单服务检查当前是否满足提交订单的条件(比如:当前存在未完成订单的不允许提交新订单)。库存服务检查当前是否有充足的库存,并锁定资源。

2、Confirm
  订单服务和库存服务成功完成Try后开始正式执行资源操作。订单服务向订单写一条订单信息。库存服务减去库存。(真实向数据库写入数据)

3、Cancel
  如果订单服务和库存服务有一方出現失敗則全部取消操作。订单服务需要刪除新増的订单信息。库存服务减去的库存还原(事务补偿) 

 

优点:最终保证数据的一致性,在业务层实现事务控制,灵活性好。
缺点:开发成本高,每个事务操作每个参与者都需要实现try/confirm/cancel三个接口(由程序员自己实现)。

 

注意: TCC的try/confirm/cancel接口都要实现幂等性,在为在try、confirm. cancel失败后要 不断重试。
什么是幂等性?
  幂等性是指同一个操作无论请求多少次,其结果都相同。
幂等操作实现方式有:

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!