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注解以标识可以直接使用对应的接口

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

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

相关文章

sql server删除过期备份文件脚本

一、通过脚本查看过期文件,时间可以自己设定 for /f "delims" %i in (dir /b /a-d "E:\mybak_file\*.bak" ^| findstr /i "backup" ^| findstr /v /i "no_backup") do if "%~ti" LSS "2024/09/29 16:50&qu…

算法-尺取法

尺取法(Sliding Window Technique),也称为滑动窗口算法,是一种常用于解决数组或字符串子区间问题的有效方法。其核心思想是通过维护一个窗口(子区间),在数组或字符串上滑动这个窗口,…

Greenhills学习总结

学习背景:近期参与xx项目过程中,遇到较多的关于代码集成编译的知识盲区,因此需要进行相关知识的学习和扫盲。 参考资料:GreenHills2017.7编译手册:本手册是GreenHills 2017.7.14版编译器的软件使用手册。该手册详细介绍了GreenHi…

Docker consul注册中心

一、consul 1.1、什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。 起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。 直到后来出现了多个节点的分布式架构&#x…

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用:注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…

前100+大型语言模型(LLMs)面试问题和路线图

介绍 获取前 100 个精选的 LLM 面试问题,了解如何准备生成式 AI 或 LLM 面试准备和大型语言模型 (LLM) 面试准备的学习路径。 This article explains learning path for large language models (LLMs) interview preparation. You will fin…

陪诊小程序之uniapp(从入门到精通)

1.uniapp如何使用vue3编写页面 <template><view class"content"><navbar name"navbar组件"></navbar><image class"logo" src"/static/logo.png"></image><view class"text-area"&…

K14837 时空穿越(through)

题目描述 杰克船长的“黑珍珠号”误入了一片海域&#xff0c;一翻风浪过后&#xff0c;他发现自己穿越到了一个未知且神奇的岛屿上&#xff0c;岛屿上空无一物&#xff0c;只有一块写着字的牌子&#xff0c;上面写着&#xff1a;欢迎来到这里&#xff0c;参加我们的时间旅行计…

【OD】【E卷】【真题】【100分】补种未成活胡杨(PythonJavajavaScriptC++C)

题目描述 近些年来&#xff0c;我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨&#xff08;编号1-N&#xff09;&#xff0c;排成一排。 一个月后&#xff0c;有M棵胡杨未能成活。 现可补种胡杨K棵&#xff0c;请问如何补种&#xff08;只能补种&#xff0c;不能新种&#…

C++进阶:AVL树实现

目录 一.AVL的概念 二.AVL的实现 2.1AVL树的结构 2.2AVL树的插入 2.2.1AVL树插入一个值的大概过程 2.2.2平衡因子更新 2.2.3插入节点及更新平衡因子的实现 2.3旋转 2.3.1旋转的原则 2.3.2右单旋 2.3.3右单旋的代码实现 2.3.4左单旋 2.3.5左单旋的代码实现 2.3.6…

vue综合指南(二)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:vue综合指南(二) 目录 21、介绍虚拟DOM 22、vue生命周期的理解 23、vue父组件向子组件传递数据…

架构设计笔记-20-补充知识

知识产权 我国没有专门针对知识产权制定统一的法律(知识产权法)&#xff0c;而是在民法通则规定的原则下&#xff0c;根据知识产权的不同类型制定了不同的单项法律及法规&#xff0c;如著作权法、商标法、专利法、计算机软件保护条例等&#xff0c;这些法律、法规共同构成了我…

STM32_实验5_中断实验

通过外部中断来检测四个按键按下的状态&#xff1a; WK_UP 控制蜂鸣器响和停 KEY0 控制 LED_R 互斥点亮 KEY1 控制 LED_G 互斥点亮 KEY2 控制 LED_B 互斥点亮。 中断的基本概念&#xff1a; 中断请求&#xff08;IRQ&#xff09;&#xff1a; 当发生某个特定事件&#xff08;例…

【问题解决】——当出现0xc000007b和缺少mfc140.dll时,该怎么做才能让软件可以打开

目录 事情起因 问题处理 明确定义 填坑之路 最后我是怎么解决的&#xff08;不想看故事直接到这里&#xff09; 事情起因 最近想要重新安装西门子博途来做西门子的一些算法的时候&#xff0c;发现自己软件装的是V15.1的版本&#xff0c;而买的plc1200固件版本要求至少16以…

(AtCoder Beginner Contest 375)D - ABA

&#xff08;AtCoder Beginner Contest 375&#xff09;D - ABA 题目大意 给定一个只包含大写字母的字符串S&#xff0c;求解其长度为3的回文字序列个数 思路 首先暴力枚举区间计算答案 O ( ∣ S ∣ 2 ) O(|S|^2) O(∣S∣2) 一定是会超时的 我们考虑使用前缀和思想 我们对于…

两个yaml转成的 excel对比

语言本地化过程中 &#xff0c;yaml转成excel格式给翻译人员使用&#xff0c;翻译好之后再转换成yaml格式给游戏使用。但是在翻译人员编辑时是不可控的&#xff0c;有可能造成某种想不到的问题。因此&#xff0c;需要将翻译人员的excel转成yaml ,再将yaml转成excel和翻译人员的…

特征编码:假如是树模型,还需要特征编码吗?

如果使用树模型&#xff0c;不一定需要进行传统的特征编码&#xff0c;具体取决于特征的性质和数据的情况。 一、不需要编码的情况 对于纯数值型特征&#xff1a;树模型可以直接处理数值型特征&#xff0c;无需进行编码。例如&#xff0c;如果特征是年龄、收入等连续数值&…

智能工厂的设计软件 表征论的三向度空间(意向相关项)

本文要点 在 最高级别上的数学诠释学观点中表征论的三向度空间&#xff08; 三个意向相关relative项引用&#xff09; “表征模式张量 空间--一般量化词【词典词】&#xff1a; 产品生产线程thread中最后的 “封装”的生产任务--以主取式存在分类学 划分的 “Package”中唯…

文本数据可视化

文字是传递信息最常用的载体。在当前这个信息爆炸的时代,人们接收信息的速度已经小于信息产生的速度,尤其是文本信息。当大段大段的文字摆在面前,已经很少有耐心去认真把它读完,经常是先找文中的图片来看。这一方面说明人们对图形的接受程度比枯燥的文字要高很多,另一方面…

推荐IDE中实用AI编程插件,目前无限次使用

插件介绍 一款字节跳动推出的“基于豆包大模型的智能开发工具” 以vscode介绍【pycharm等都可以啊】&#xff0c;这个插件提供智能补全、智能预测、智能问答等能力&#xff0c;节省开发时间 直接在IDE中使用&#xff0c;就不用在网页中来回切换了 感觉还可以&#xff0c;响应速…