栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

浅谈实际开发中常用的分布式事物处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈实际开发中常用的分布式事物处理

浅谈实际开发中常用的分布式事物处理

文章目录

前言一、分布式事物二、常用方案

1.使用记录表+mq机制


前言

随着微服务的流行,越来越多系统不在是单体结构,根据业务和功能拆分成不同微服务,这就导致了,一个业务涉及多个微服务调用,业务之间的解耦,依靠spring框架提供的事物@Transactional无法处理。因此在多服务分布式场景下,如何保证事物数据的一致性,从而引入了分布式事物概念


一、分布式事物

网上有很多中解决方案,比如

1.两段式提交2pc: 通过引入一个协调节点,由协调节点先访问多个服务是否可用,如果可用,则全部请求提交。

2.tcc补偿方案:try-/confirm/i-cancel.  先尝试锁资源,尝试成功提交事物并释放锁资源,提交失败,释放锁资源。

3.本地消息表:使用消息记录表+mq消息补偿机制。根据消息记录表配合定时调度任务,保证发送到mq.  mq消费后。在通知修改消息记录表。

4.使用RocketMQ,,这个不常用,可自行搜索

5.订阅数据库日志 binlog.  通过订阅数据库的日志,通过中间件通知其它业务模块
二、常用方案 1.使用记录表+mq机制

第一步:执行业务A,保存记录表1,然后发送mq通知B
第二步:B收到消息,保存记录做幂等,执行业务。
第三步:执行成功或者失败后,发送mq,通知A
第四步:A收到消息,更新记录表1,确认是成功,还是回滚

A保证发送消息通知到MQ
MQ保证消息交给B
B处理之后,不管成功还是失败。再次发送MQ通知A
A根据结果,判断是成功还是回滚。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号