springcloud24:分布式事务 Seata处理分布式事务总结篇

news2025/1/25 9:03:29
  • 分布式事务:
    分布式事务的问题:
    • 1:1 一个servlet 对应一个 数据库
    • 1:N 一个servlet对应多个数据库
    • N:N 多个servlet对应多个数据库
      全局事务一致性问题(全局数据一致性的保证)
  • Seata是分布式事务的解决方案
    分布式ID+三组件模型 全局唯一事务的ID
    • 三组件
      • TC 事务协调器:维护全局事务的运行状态,驱动全局事务提交或回滚
      • TM 服务发起提交回滚
      • RM 管理分支事务
      • 一个XID 对应一系列的微服务(组成一个事务)
      • 微服务 利用RM 连接数据库
    • 处理过程
      • TM向TC申请一个XID(全局唯一事务),且TM能够将XID上下文传播(调用的服务也会获得XID)
      • RM向TC注册事务
      • TM向TC发起唯一XID的全局提交或回滚
      • TC调度XID下的全部事务分支完成提交或回滚请求
  • Seata的下载安装使用
    @Transaction 事务(本地控制事务 spring的)
    @GlobalTransaction 全局事务(全局控制事务 springcloud的)
  • 测试
    • 流程
      用户 下单:订单服务中创建订单,调用库存服务扣减商品库存,再远程调用账户服务扣减账户余额,最后再订单服务中修改订单状态已完成
      三个数据库 两次远程调用(明显有分布式事务问题)
    • 完成订单模块微服务
    • 改Pom 写yml 把seata修改的配置文件放入(注册到mysql)
    • 写与数据库对应的domain
    • 编写DAO(以及xml映射文件)
    • 编写service(利用feign实现远程调用)
    • 编写controller(三个库调用时会出现事务不一致)
    • 使用@GlobalTransaction
  • 使用
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python标准库之os

1. OS标准库简介 顾名思义,OS表示Operating System,即操作系统。OS标准库是一个操作系统接口模块,提供一些方便使用操作系统相关功能的函数,具体安装位置可通过导入os模块查看os.__file__属性得到。当需要在Python代码中调用OS相…

WPF-页面-DataGrid数据处理-多线程-Winform嵌入

页面 if(NavigationService.CanGoBack true) NavigationService.GoBack(); NavigationService.Navigate(new Uri("Page.xaml",UriKind.Relative));打印对话框PrintDialog如果要一下启动两个窗口,可以重写App.cs中的OnStartUP方法设置窗口所属关系&#…

【我的渲染技术进阶之旅】你知道数字图像处理的标准图上的女孩子是谁吗?背后的故事你了解吗?为啥这张名为Lenna的图会成为数字图像处理的标准图呢?

文章目录一、先来看一张神图:Lenna图二、图片中的妹子是谁?三、为何要使用Lenna图像?四、谁制作了Lenna图像?五、人红是非多六、福利时间七、岁月神偷文末有福利 一、先来看一张神图:Lenna图 想必所有搞过图像处理的人…

LQ0265 汉诺塔【水题】

题目来源:蓝桥杯2012初赛 Java A组C题 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。 大梵天创造世界的时候做了三…

Map和Set常见操作汇总

作者:~小明学编程 文章专栏:Java数据结构 格言:目之所及皆为回忆,心之所想皆为过往 目录 Map 介绍 什么是Map? Map.Entry,> 常用方法 代码 Map中的注意点总结 Set 常见方法汇总 Set中的注意点总结 Map …

Ngxin--源码分析 缓冲区链表

1.基本数据结构 在处理 TCP/HTTP 请求时会经常创建多个缓冲区来存放数据, Nginx缓冲区块简单地组织一个单向链表struct ngx_chain_s {ngx_buf_t *buf;ngx_chain_t *next; };buf: 缓冲区指针 next 下一个链表节点 注意: ngx_chain_t是…

自定义数据类型:结构体、枚举、联合

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C/C】 目录结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐练习1练习2(结构体嵌套问题&#x…

JSP表达式(EL)

一、介绍: EL(Expression Language)可用来代替JSP中的各类脚本,提高编程的灵活度,简化代码的编写。 二、EL的限制: 不能声明变量,需要使用JSTL或者JavaBean Action设置变量。 三、EL的标准格…

使用D435i+Avia跑Fast-LIVO

前言 最近Fast-LIVO开源了,之前看它的论文的时候发现效果很优秀,于是用实验室现有的设备尝试一下。这里主要记录一下使用不带外触发功能的D435i Avia跑Fast-LIVO的过程,为了适配代码,主要修改了雷达的驱动、相机的launch文件、以…

【Flink】各种窗口的使用(处理时间窗口、事件时间窗口、窗口聚合窗口)

文章目录一 Flink 中的 Window1 Window(1)Window概述(2) Window类型a 滚动窗口(Tumbling Windows)b 滑动窗口(Sliding Windows)c 会话窗口(Session Windows)2…

ATJ2157内存篇【炬芯音频芯片】---sct语法

ATJ2157 sct语法公共知识篇BNF 简介Sct脚本Sct的作用Sct的语法规则1. 加载域描述(Loadd region descriptions)2. 执行域描述3. 输入节的描述ATJ2157平台使用的sctRO的等效写法ScatterAssert()函数LoadLength()函数LoadBase()函数ImageLimit()函数ATJ2157平台什么数据编译出来是…

CentOS 7.6上安装SqlServer2017

一、 安装 SQL Server 1、 安装 SQL Server 所需的python2 sudo alternatives --config python # If not configured, install python2 and openssl10 using the following commands: sudo yum install python2 sudo yum install compat-openssl10 # Configure python2 a…

Python自动化小技巧12——根据论文题目自动导出参考文献格式

案例背景 在写论文的时候,弄参考文献格式也很麻烦,不可能手打人名题目期刊名称年月日卷号页码这些,我们一般都是使用系统自动导出的格式复制粘贴就行。中国知网可以直接导出论文的格式,但是知网基本只有中文的论文,英…

pdf编辑器工具哪个好?好用的pdf编辑器一款就够!

pdf这类办公软件大家都很熟悉,不过pdf通常情况只能看不能编辑,这着实也很让人苦恼!特别是现在国内大多都已居家办公,本来就颇多不便,如果没有一款好用的pdf编辑器工具,那么势必导致工作效率更为低下。 那么…

第十二章 哈希表与字符串哈希

第十二章 哈希表与字符串哈希一、哈希表1、什么是哈希表2、算法逻辑(1)哈希函数(2)冲突解决3、算法模板二、字符串哈希1、算法逻辑2、算法用途3、算法模板一、哈希表 1、什么是哈希表 在之前的文章中,我们学习过离散…

Spring-aop技术

前言 spring-aop技术是对oop(面向对象)的一个补充,其底层其实就是使用aspect动态代理进行实现的,本篇文章将大概讨论下aop的核心实现流程 相关的核心概念 刚开始,先介绍下aop中比较核心的一些对象和概念,只要理解了这些&#xff…

【通信】粒子群算法5G物联网云网络优化【含Matlab源码 2160期】

⛄一、简介 1 引言 5G技术被大众所熟知之后,边缘计算也成了各行业关注的重点。最初的边缘计算概念是在2014年提出,到了2016年就拓展到了接入边缘,目前基本被定义为靠近用户边缘的、包含多种技术的接入网络,能够提供比较稳定的IT业…

精华推荐 | 深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能优化实战篇」

Linux系统:Centos 7 x64Nginx版本:1.11.5 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异…

拼搏一周!刷了1000道Java高频面试题喜提阿里offer,定级P7

今年较往年相比面试要难的多,大环境也是对于程序员的要求越来越高,环境是我们无法改变的,我们能改变的只有自己,月初我一好友,努力拼搏一周,刷完了这份阿里P8大牛整理的这1000道Java高频面试题笔记&#xf…

GitHub配置SSH Keys步骤

Git配置SSH Keys步骤 许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 生成步骤如下: 1. 设置用户名和邮箱 在git命令行中对git进行全局设置 git config --…