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

文章目录

  • 前言
  • 一、分布式事物
  • 二、常用方案
    • 1.使用记录表+mq机制

前言

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


一、分布式事物

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

1.两段式提交2pc: 通过引入一个协调节点,由协调节点先访问多个服务是否可用,如果可用,则全部请求提交。2.tcc补偿方案:try-confirm-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根据结果,判断是成功还是回滚。

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

  1. 浅谈Web开发中的6种技术

    CSDN博客不再经常更新,更多优质文章请来 粉丝联盟网 FansUnion.cn! (FansUnion) Web开发中的6种技术 1.html 超文本标记语言,即HTML(Hypertext Mar ...

  2. 浅谈Android开发中的NFC功能

    目录 1."NFC"的自我描述 1.1 NFC功能的基本概念 1.2 NFC功能的背景.特性及发展趋势 2.NFC的基础知识.基本原理 2.1 NFC的工作模式 2.2 实现NFC ...

  3. 浅谈iOS 开发中的界面通信

    在任何的软件开发中都离不开界面与界面之间的通信,界面通信的最直接的方法就是界面传值. 在开发过程中我们在页面传值时我们通常使用的方法有:属性传值法,block传值法,代理传值法,以及单例传值法,通知传 ...

  4. 浅谈游戏开发中逻辑与表现的分离

    回顾之前做的几个Demo,做点总结. 一.做法: 为了更清晰,NRatel将 一个游戏对象类 拆分为 两个类,如下: 1.定义"纯粹的逻辑类".   基本职责:对游戏对象的&quo ...

  5. 浅谈敏捷开发中的设计

    敏捷开发在当今业界已经大行其道,想要快速交付,采用敏捷开发方法似乎是最好的方式,是否必须要用这就另当别论了.敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发,不过,想要真正做到快速 ...

  6. 浅谈软件开发中的假设条件

    翻开第一篇聊假设条件的博客,发现已经快2年了.那篇主要涉及了点架构方面假设条件的东西,不是很全,今天开一篇聊一下软件开发中的假设条件.如果把假设条件限定在架构方面,稍显冷门.但如果将其扩展到整个软件开 ...

  7. java怎么设置全局变量_浅谈Java开发中如何定义的全局变量

    Static静态变量 在程序中任何变量或者代码都是在编译时,是由系统自动分配内存来存储的,而所谓静态就是指在编译后分配的内存会一直存在,直到程序退出时才会释放内存空间. static是静态修饰符.被s ...

  8. 浅谈开发中常用的设计模式

    设计模式在开发中占很重要的地位.在大型项目中使用好设计模式往往会取得事半功倍的效果.本篇博客就介绍下几种在开发中常用到的设计模式. 设计原则 先看下一些约定俗成的设计原则,其实要遵守以下所有原则很难, ...

  9. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

最新文章

  1. 从富文本中截取图片_Excel文本数字拆分,模式化公式详解
  2. 使用NavigationUI更新UI组件
  3. (0.2.6)Mysql安装——编译安装
  4. kubeadm安装kubernetes 1.13.2多master高可用集群
  5. requests模块相关用法
  6. SAP 学习笔记 --- 04-26 02.Material Master
  7. php 抽象类 接口 区别,PHP中抽象类和接口有什么区别
  8. oracle日期时间
  9. deepin linux安装微信,Ubuntu20.04安装Deepin-wine,微信,Tim
  10. ZOC7 for Mac破解版激活方法附注册码
  11. 极智开发 | UmiJS 快速上手
  12. OMNeT 例程 Tictoc12 学习笔记
  13. Cisco交换机IOS升级
  14. 有个码龄 10 年的程序员跟我说:“他编程从来不用鼠标”,我说:
  15. 实体消歧 Entity Disambiguiation
  16. WordPress使用邮箱服务功能
  17. 麻辣烫有几种类型?不同种麻辣烫怎么做
  18. grub 加载软盘镜像
  19. BZOJ2818 Gcd
  20. 从南沙图书馆到故宫博物院,隐藏着怎样的未来世界?

热门文章

  1. delphi摄像头编程
  2. 360 压缩终于庐山真面目了
  3. 强化学习技巧四:模型训练速度过慢、GPU利用率较低,CPU利用率很低问题总结与分析。
  4. Virtual Private Network虚拟专用网络-在Linux上搭建专用通道
  5. C语言文件操作笔记-1
  6. 基于jQuery的插件扩展,主要用于识别浏览器内核与外壳的类型和版本
  7. linux(CentOS版本)学习笔记1
  8. 信息学奥赛一本通:1157:哥德巴赫猜想
  9. 独家|陆金所IPO幕后事:内部高管看空、P2P存量难消、兑付方案未果
  10. 印象笔记导入为知笔记方法