码迷,mamicode.com
首页 > 其他好文 > 详细

关于分布式事务

时间:2019-11-04 20:03:52      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:资源   info   工作   conf   撤销   分布   mic   关于   定位   

最近在找工作,总是会被问到分布式事务的问题。

被问到想吐,诚实的回答我们不做分布式事务,面试官好像又不满意,我不明白现在的人为什么都那么装呢?

很多情况下出现事务的问题,很久也碰不了一次,如果出错了记录日志,定位,补偿不就完了。现在又没有强事务的分布式事务解决方案,都是弱事务,说白了就是靠代码逻辑实现最终一致。在业务代码里面夹杂着分布式事务的代码,真要出了问题,你怎么定位呢?

 

分布式事务的解决方案

1.XA方案也叫做两阶段提交事务方案.

主要通过增加事务协调者,对事务进行全局管理。

第一个阶段:

发出“准备”命令,所有事务参与者接受指令后进行资源准备,锁准备,undo log准备。如果都返回“准备成功”,如果不能执行,返回终止。

第二个阶段

协调者接受到第一个阶段的回复

如果都是ok,则发出“提交”命令,所有参与者进行commit操作。如果都成功,则事务结束,如果有失败情况,协调者发出“回滚”命令,所有事务参与者利用undo log进行回滚(这个在2PC不存在)。J2EE对JTA就是两阶段提交的实现。
如果有不ok,则发出撤销,所有事物撤销本地资源的锁定等操作
2.TCC方案

1 Try

对各个服务的资源做检测,对资源进行锁定或者预留

2 Confirm

在各个服务中执行实际的操作

3 Cancel

如果任何一个服务的业务方法执行出错,那么这里就需要进行补偿,即执行已操作成功的业务逻辑的回滚操作

3可靠消息最终一致性方案

实现rocketmq的事务消息

技术图片

 

注意最好使用rocketmq的事务消息,普通消息不能保证消息可达。

4.最大努力通知行。

A执行本地事务,提交成功。调用B,b失败,再异步尝试调用B,尝试数次(次数在可接受范围内)

 

关于分布式事务

标签:资源   info   工作   conf   撤销   分布   mic   关于   定位   

原文地址:https://www.cnblogs.com/munan56/p/11794036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!