分布式事物几种解决方案

本文只做引荐,大概说一些自己的理解


分布式事物几种解决方案

分布式不存在绝对的事物处理!!!

大概四种解决方案

  1. 基于消息队列最终一致性;
  2. TCC型解决方案;
  3. 二阶段提交强一致性;
  4. LCN:https://github.com/codingapi/tx-lcn
  5. 阿里GTS:https://help.aliyun.com/product/48444.html

上面几种不理解各位的可以自行百度,大家理解的都不一样,所以不多说,怕误导各位。

        个人感觉LCN比较适合,就是把整个操作加入一个事务组,然后每一步操作都去对事务组进行一个反馈,当某个业务出现异常,对加入事务组中业务进行回滚,只有当最后一步完全成功时,再向事务组发送commit操作,至此,整个事物结束。LCN比较符合下面所说的第二种情况。
        这其中也可以进行一个日志记录,如果某个过程出错,手动操作(比较麻烦),大家有兴趣可以试试日志。

常见的一些简单事物,简单说一下:

比如:我下单买某个平台的数字货币,首先进行我的订单处理(简称A服务),然后在操作的同时去付款(简称B服务)。

  • 第一种:
    我的A服务修改成功,但B服务出现异常,这时可以try然后返回错误状态码,A服务那边接收 错误状态码,对整个方法的事物进行回滚。

  • 第二种:
    我的A服务修改成功,但B服务修改成功,再到A服务来修改,但是这时A服务失败了,这时没法让B服务回滚,我们该怎么办?
    可以使用mq建立一个事物中心,A服务和B服务都不使用事物,一旦一方出现异常,可以用try捕捉,然后向mq发送消息,mq监听到失败之后手动回滚脏数据,可以修改或者删除。其实也可以使用日志进行记录,再手动改,不过比较麻烦。

  • 可能说的不是很透彻,都是一个理解和实践的过程。各位同僚有更好的理解可以留言一起探讨一波

最后

大家编程快乐
在这里插入图片描述


欢迎关注公众号:慌途L
后面会慢慢将文章迁移至公众号,也是方便在没有电脑的时候可以进行翻阅,更新的话会两边同时更新,大家不用担心!
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值