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,一经查实,立即删除!

相关文章

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"&…

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父组件向子组件传递数据…

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) 一定是会超时的 我们考虑使用前缀和思想 我们对于…

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

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

【SQL实验】 设计主码、check约束 、外码(SSMS 菜单操作)

设计主码 PK——主码 右键点击所需的表&#xff0c;选择“设计”。 选择需要作为主键的列&#xff0c;右键点击并选择“设为主键”。 保存更改&#xff0c;确保主键设置生效。 如果出现下图&#xff1a; 解决方式&#xff1a; 把√取消掉&#xff0c;修改后&#xff1a; 确定…

告别ELK,APO提供基于ClickHouse开箱即用的高效日志方案——APO 0.6.0发布

ELK一直是日志领域的主流产品&#xff0c;但是ElasticSearch的成本很高&#xff0c;查询效果随着数据量的增加越来越慢。业界已经有很多公司&#xff0c;比如滴滴、B站、Uber、Cloudflare都已经使用ClickHose作为ElasticSearch的替代品&#xff0c;都取得了不错的效果&#xff…

【Echarts 实战指南】解锁动态历史曲线之谜

在工作中&#xff0c;大家是否曾遇到过这样一种需求呢&#xff1f;需获取设备最近 10 分钟的历史数据。设备实时数据每 2 秒推送一次&#xff0c;且要把历史数据曲线变成动态变化的状态。倘若设备最近 10 分钟的历史数据为 20 个点&#xff0c;那么现在每 2 秒就要将最前面的点…

计算机毕业设计Python深度学习房价预测 房源可视化 房源爬虫 二手房可视化 二手房爬虫 递归决策树模型 机器学习 深度学习 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 房地产是促进我国经济持续增…

车辆管理新篇章:SpringBoot技术解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

电感的学习

电感是表示电路中电流变化对电压影响的物理量&#xff0c;常用符号 LLL 表示。电感的基本公式可以从其定义和基本特性中得出&#xff0c;主要包括以下几个方面&#xff1a; 1. 电感的定义 2. 电感能量存储 3. 自感与互感 自感&#xff1a;电感器自身的电感&#xff0c;表示电…

stata基本操作

文章目录 数据导入及存储变量的标签、审视数据变量的标签审视数据数据删除数据排序 画图直方图使用帮助文件散点图 统计分析描述性分析频数分析相关分析 生成新变量、计算器、终止命令生成新变量设置哑变量修改变量名更改变量内容调用命令和终止命令 日志命令库更新、学习资源 …

从零开始学PHP之helloworld

前言 每一门编程语言的第一个程序就是输出hell world&#xff08;别杠&#xff0c;杠就是你对&#xff09; 开始 上一篇讲完了开发环境的安装&#xff0c;这次讲编辑器的安装&#xff0c;顺带完成上一篇的作业&#xff08;输出hello world&#xff09; 安装PHPstorm 我用的…

基于SpringBoot+Vue的旅游服务平台【提供源码+答辩PPT+参考文档+项目部署】

&#x1f4a5; ① 前言&#xff1a;这两年毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的JavaWeb项目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff01; ❗② 如何解决这类问题&#xff1f; 让我们能够顺利通过毕业&#xff0c;我也一直在不断思考、…