SpringCloud学习:Seata总结与回顾

SpringCloud学习:Seata总结与回顾

文章目录

  • SpringCloud学习:Seata总结与回顾
    • 1. Seata实战:测试
    • 2. Seate原理总结和面试题
    • 3. Seata总结与回顾
    • 4. 易混点

1. Seata实战:测试

  1. 测试
  2. 问题
    1. 未启用分布式事务
      1. 不使用分布式事务对于调用多个数据库操作的业务无法保证数据一致性,因为当某个数据库事务出错时,其余数据库操作不会回滚
      2. 当没有使用@globalTranscation注解时,此时获得XID是获取不到的,返回NULL
      3. 当环境配置成功后,此时测试不会出现问题但是没有用到分布式事务,只要有一个事务出错则仍不会实现全局事务的回滚,没有实现分布式事务
      4. 此时因为版本问题在库存时出错,库存和账户的数据库都没变,但是订单却插入进去了说明分布式事务没有实现,否则整个事务均不会执行
    2. 启用分布式事务
      1. 此时order订单也不会插入进行,整个全局事务都会进行回滚
      2. undo_log回滚表中存放的是当前全局事务所保留的信息,当出错时会根据其进行回滚然后删除信息不出错时也会对数据进行删除
      3. 启用之后就可以在seata控制台看到全局事务,以及为每个事务分配的锁,此时当该全局事务下的某个事务出现错误就会对全局事务进行自动回滚(要为每个微服务的数据库创建一个undo_log回滚表
      4. 使用 @GlobalTranscational注解对分布式事务的方法进行标注,然后从Seata上下文获得当前全局事务的XID,会自动传递给要实现分支事务的业务
      5. seata会对每个全局事务分配一个全局锁GlobalLock,此时别的微服务就无法对该全局事务中的资源进行访问
      6. TC就是Seata serverTM是全局事务的入口,也是一个RM,RM是分支事务,来调用数据库
    3. seata只会对事务加锁,但不会对数据加锁,故此时别的线程可以对数据进行修改
    4. 分布式事务 != 分布式锁
    5. 要注意不是调用太多的分支事务,否则会出现问题

2. Seate原理总结和面试题

  1. Seata原理
    1. 通过TC(seata微服务)和TM\RM来实现分布式事务,首先要开启seata服务器,然后由TM(全局事务入口)创建全局事务并决定事务的范围,然后每个微服务分支事务由RM向TC创建,共用同一个全局事务的XID,在执行过程中,只要有一个RM出现回滚,则会对整个全局事务中所包含的所有RM进行回滚,且Seata-AT自动回滚模式通过对每个微服务的数据库设置一张undo_log回滚表来实现,该表中存放事务开启前的数据,结束后会对其数据进行删除
    2. TM也是RM,也要开启一个分支事务,有自己的分支事务ID,但作为TM的RM还要向TC申请一个全局事务的XID
  2. AT模式如何做到对业务的无侵入
    1. seata是什么
    2. undo_log回滚表就是回滚日志,进行反向督查,当某个本地事务出现错误时,会对所有的事务根据各个数据库中的undo_log回滚表进行数据回滚
    3. 一阶段加载(保存执行前后数据快照): 在undo_log回滚表中保存的是一阶段的内容,有执行业务SQL之前要保存原快照,执行之后要保存新快照
    4. 二阶段分2种情况:正常提交(只需要将保存的快照删掉即可,因为一阶段已经保存了)和异常回滚(此时要将数据回滚后再删除快照,要对比前后快照判断有没有脏写)

3. Seata总结与回顾

  1. 微服务架构在这里插入图片描述

  2. 上传GIT

    1. 一个项目一般只上传源码、SQL和配置
    2. .gitignore是指不会上传到git的配置
    3. 步骤
      1. 整个工程设置为Git项目:VCS -> Create Git Repository
        1. 在IDEA中对项目点击顶栏的VCS(版本控制),然后Create Git Repository
      2. Add:右键工程Git->Add
      3. Commit:右键工程Git->Commit
      4. Share Project On Github:顶栏Git->Share Project On Github
      5. Push:将项目推送到Git中,默认是private,其他人不可见
      6. 如果需要对外共享,private调整为public,Github网站上工程直接设置

4. 易混点

  1. Nacos中微服务名是DataId格式,Sentinel是懒加载,只有对某个微服务调用请求后才会在Sentinel加载出资源
  2. Sentinel的流控是控制对某个请求的最大访问量,而熔断是根据慢调用比例或者异常比例来使得对该微服务的请求全部熔断
  3. 服务注册和配置中心:Nacos是独立部署的,要先运行Nacos微服务后才可注册进入Nacos,任何要注册进入Nacos的微服务都要设置Nacos的配置
  4. 服务熔断:Sentinel分为服务器和控制台两部分,是对服务的某个接口进行监控,故要配置在服务提供者微服务上,通过配置来监控访问该微服务某个方法的所有请求
  5. 服务调用:Openfeign是服务调用组件,可以将服务提供者的所有方法抽取到公共的api接口中,并在该接口中进行@FeignClient配置,而服务提供者不需要进行配置,且服务调用者要通过Openfeign调用对应的方法,故服务调用者也要进行Openfeign配置,且要在主启动上使用@EnableFeignClients注解以标识可以直接使用对应的接口

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) PSO优化过程: PSO优化前后,模型训练对比: 数据预测对比: 误差回归对比&a…

以太网交换安全:MAC地址漂移与检测(实验:二层环路+网络攻击)

一、什么是MAC地址漂移? MAC地址漂移是指网络中设备的MAC地址在运行过程中发生变化的现象。 MAC地址是用于唯一标识网络中的设备。 MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。…

I2C的学习

I2C通信的基本概念 双线制:I2C通信采用两条线进行数据传输: SDA(Serial Data Line):数据线,用于传输数据。SCL(Serial Clock Line):时钟线,用于同步数据传输。…

软件测试工程师:如何写出好的测试用例?

软件测试用例(Test Case)是软件测试过程中的一种详细文档或描述,用于描述在特定条件下,对软件系统或组件进行测试的步骤、输入数据、预期输出和预期行为。编写高质量的测试用例是确保软件质量的关键步骤之一。以下是一些编写优秀测试用例的建议&#xff…

FLexsim 实体

发生器 属性列表 到达方式 ①到达时间间隔:根据数学分布,自定义到达时间间隔 ②到达时间表 到达时间:发生器产生实体的时间;实体名称:对应时间产生的临时实体的名字 ③到达序列:批量产生多少实体。 暂存区 …

【C++贪心 单调栈】1727. 重新排列后的最大子矩阵|1926

本文涉及知识点 C贪心 C单调栈 LeetCode1727. 重新排列后的最大子矩阵 给你一个二进制矩阵 matrix ,它的大小为 m x n ,你可以将 matrix 中的 列 按任意顺序重新排列。 请你返回最优方案下将 matrix 重新排列后,全是 1 的子矩阵面积。 示例…

计算机毕业设计 零食批发商仓库管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?

.NET版本问题 报错示例报错分析最简单的方法步骤 报错示例 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持 .NET 6.0 的 .NET SDK 版本。 ABFview C:\x…

计算机组成原理与系统结构——外部存储器

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 磁盘 磁盘是一个由非磁性材料构成的圆形盘片(称为基片),上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的&#xff0…

【STL】string类的使用

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C、STL 目录 string类的介绍--为什么学习string类 一、string类的默认成员函数 构造函数(constructor) 析构函数(destructor) 赋值运算符重载operator 二…

DAY38 ||62.不同路径 |63. 不同路径 II

62.不同路径 题目:62. 不同路径 - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图…

李宏毅机器学习2022-HW7-BERT-Question Answering

文章目录 TaskBaselineMediumStrongBoss Code Link Task HW7的任务是通过BERT完成Question Answering。 数据预处理流程梳理 数据解压后包含3个json文件:hw7_train.json, hw7_dev.json, hw7_test.json。 DRCD: 台達閱讀理解資料集 Delta Reading Comprehension …

衡石分析平台系统分析人员手册-可视化报表仪表盘

仪表盘​ 仪表盘是数据分析最终展现形式,是数据分析的终极展现。 应用由一个或多个仪表盘展示,多个仪表盘之间有业务关联。 仪表盘编辑​ 图表列表​ 打开仪表盘后,就会看到该仪表盘中所有的图表。 调整图表布局​ 将鼠标移动到图表上拖动…

设计模式:类与类之间关系的表示方式(聚合,组合,依赖,继承,实现)

目录 聚合关系 组合关系 依赖关系 继承关系 实现关系 聚合关系 聚合是一种较弱的“拥有”关系,表示整体与部分的关系,但部分可以独立于整体存在。例如,部门和员工之间的关系,一个部门可以包含多个员工,但员工可以…

【大数据技术基础 | 实验四】HDFS实验:读写HDFS文件

文章目录 一、实验目的二、实验要求三、实验原理(一)Java Classpath(二)Eclipse Hadoop插件 四、实验环境五、实验内容和步骤(一)配置master服务器classpath(二)使用master服务器编写…

JOIN 表连接

1. 插入表测试数据 分别清空学生信息表 student、教师信息表 teacher、课程表 course、学生选课关联表 student_course 数据,并分别插入测试数据。 1.1 清空表数据 分别清空学生信息表 student、教师信息表 teacher、课程表 course、学生选课关联表 student_cours…

第8篇:网络安全基础

目录 引言 8.1 网络安全的基本概念 8.2 网络威胁与攻击类型 8.3 密码学的基本思想与加密算法 8.4 消息认证与数字签名 8.5 网络安全技术与协议 8.6 总结 第8篇:网络安全基础 引言 在现代信息社会中,计算机网络无处不在,从互联网到局…

Atlas800昇腾服务器(型号:3000)—驱动与固件安装(一)

服务器配置如下: CPU/NPU:鲲鹏 CPU(ARM64)A300I pro推理卡 系统:Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本: Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-…

0x3D service

0x3D service 1. 概念2. Request message 数据格式3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服…

艺术家杨烨炘厦门开展,49只“鞋底倒计时”引轰动

艺术家杨烨炘 9,8,7,6,5,4,3,2,1,0………近日,一件名为《走向倒计时》的艺术作品在厦门引发讨论。艺术家杨烨炘邀请49位台湾同胞,将他们的鞋底拼成…