当前位置: 首页 > article >正文

微服务分布式事务

分布式事务:
在分布式系统中,如果一个业务需要多个服务合作完成,而且每一个服务都有事务,多个事务必须同时成功或失败,这样的事务就是分布式事务,其中的每个服务的事务就是一个分支事务,整个业务称作全局事务,比如在一个商城分布式系统中的下单操作,设计到订单服务,购物车服务,库存服务,当生成订单的时候,如果库存服务中库存不足,但是创建订单的时候订单服务和购物车服务无法感知到,所以会下单成功,删除购物车成功。但是库存扣减失败,造成事务的不一致性。

分布式事务解决方案:
要解决这个问题就要让各个微服务知道彼此的状态,所以引入一个事务协调者,各个子事务就能感知到彼此的执行状态。
seata:
TM:事务管理器,定义全局事务的范围(也就是可以理解为方法的入口,出口),开始结束全局事务(向TC报告),提交或回滚全局事务。
        RM:资源管理器,管理分支事务,与TC交谈以注册分支事务,和报告分支事务的状态。
        RM:资源管理器,管理分支事务,与TC交谈以注册分支事务,和报告分支事务的状态。
        RM:资源管理器,管理分支事务,与TC交谈以注册分支事务,和报告分支事务的状态。
        ...
TC:事务协调者,维护全局事务和分支事务的状态,协调全局事务的提交或回滚。

XA模式: 
    第一阶段的工作是:RM注册分支事务到TC,执行分支业务SQL但不提交,报告执行状态到Tc;
    第二阶段的工作是:TC检测各分支事务事务执行状态;RM接收TC指令,提交或回滚事务;
            (如果都成功就会通知所有的RM提交事务)(如果都失败就会通知所有的RM回滚事务);

AT模式:
    第一阶段:RM注册分支事务,记录undo-log,执行业务SQL并提交,报告事务的状态;
    第二阶段:提交RM的工作,删除undo-log;或者回滚RM的工作,根据undo-log恢复数据到更新前;


http://www.kler.cn/a/371718.html

相关文章:

  • leetcode 75-13 k和数对的最大数目
  • 时间序列预测(十五)——有关Python项目框架的实例分析
  • Objective-C 音频爬虫:实时接收数据的 didReceiveData_ 方法
  • 百度SEO中的关键词密度与内容优化研究【百度SEO专家】
  • 大白话讲解分布式事务-SEATA事务四种模式(内含demo)
  • 【STM32篇】4988驱动步进电机
  • 带哨兵的单向链表(改动版)
  • Zookeeper 理论基础
  • 10.22.2024刷华为OD C题型(三)--for循环例子
  • 使用SpringCloudSleuth和Zipkin进行分布式链路跟踪
  • linux驱动—在自己的总线目录下创建属性文件
  • 微信小程序live-pusher和video同时使用,video播放声音时时大时小
  • qemu-9.1+linux-kernel-6.11+busybox-1.36.1+NFS挂载
  • Java设计模式—观察者模式详解
  • 问题排查思路
  • 记录一次mmpretrain训练数据并转onnx推理
  • 流刷新定位
  • Ubuntu24.04配置samba共享
  • 微服务的雪崩问题
  • 提问GPT
  • 流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(三)
  • SpringBoot 下的Excel文件损坏与内容乱码问题
  • Zustand介绍与使用 React状态管理工具
  • Golang的跨平台开发
  • 从零到一:大学新生编程入门攻略与成长指南
  • 【flask-wtf】 表单验证器