分布式事物笔记

分布式事物:

XA/JTA规范(XA是一个规范,JTA是java根据XA实现的)

两阶段提交,首先预提交给协调器,然后通过协调器(类似于zk)进行提交、回滚操作; 一般分布式事物无法100%解决ACID,最多99.9%解决;
三阶段提交,四阶段提交...

=> 解决方案:日志记录  可以把commit 失败的情况(很少) 进行补偿


JTA: 开源框架atomikos、weblogic
atomikos中两阶段提交最后commit的底层实现:

两个事物分别有一个唯一的事物id,然后进行两次预提交,最后再提交,回滚


JTA的不足:

效率低下(CAP)满足了CP

BASE理论(最终一直性与补偿机制):

基本可用:允许部分损失

软状态:下单 操作和送券操作可以不同时满足(送券操作允许延迟)

最终一致性:经过一段时间之后,下单 和 送券都同时满足

柔性事物:

1.最终一致性,最大努力通知(不行,再提供查询的接口)

2.TCC(try(预留,锁定)-confirm(确认,提交)-cancel(回滚))两阶段补偿型方案

XA/JTA与TCC的区别:

1.XA/JTA是资源型的分布式事物(锁了很多表)
2.TCC是业务层的分布式事物(分阶段的提交事务=>锁定资源)
(失败重试...)

幂等性:
 
支付宝tcc,相当于是一个协调器,自动的提交与取消操作

3.基于Rocket Mq

...

猜你喜欢

转载自blog.csdn.net/z654893465/article/details/81291267