Seata学习
Seata
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
官网地址:https://seata.io/zh-cn/index.html
为什么会产生分布式事务?

示例:用户下单后需要创建订单,同时会员积分对应增加,库存数量相应减少。如果是在一个数据库单个事务中没有问题。一旦涉及分布式环境下,需要保证所有的数据要么全局提交,要么全局回滚。
分布式解决方案需要增加一个事务协调者。
二阶段提交:
第一个阶段如下:

第二个阶段如下:

分布式事务体系三个重要角色
- 事务管理器(TM):决定什么时候全局提交/回滚 (司令官)
- 事务协调者(TC):负责通知命令的中间件Seata-Server(传令官)
- 资源管理器(RM):做具体事儿的工具人(大头兵)

事务边界



操作成功,全局提交;操作出现异常,全局回滚。

Seata AT模式下如何实现数据自动提交、回滚?
通过SQL Parser对SQL语句进行解析实现UNDO_LOG。



Seata如何避免并发场景的脏读与脏写?
利用TC自带的分布式锁

怎么使用Seata框架,来保证事务的隔离性?
因seata一阶段本地事务已提交,为防止其他事务脏读脏写需要加强隔离。
- 脏读 select语句加for update,代理方法增加@GlobalLock+@Transactional或@GlobalTransactional
- 脏写必须使用@GlobalTransactional
注:如果你查询的业务的接口没有@GlobalTransactional 包裹,也就是这个方法上压根没有分布式事务的需求,这时你可以在方法上标注@GlobalLock+@Transactional 注解,并且在查询语句上加 for update。 如果你查询的接口在事务链路上外层有@GlobalTransactional注解,那么你查询的语句只要加for update就行。设计这个注解的原因是在没有这个注解之前,需要查询分布式事务读已提交的数据,但业务本身不需要分布式事务。 若使用@GlobalTransactional注解就会增加一些没用的额外的rpc开销比如begin 返回xid,提交事务等。GlobalLock简化了rpc过程,使其做到更高的性能。
相关文章:
Seata学习
Seata Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网地址:https://seata.io/zh-cn/index.html 为什么会产生分布式事务? 示例:用户下单后需要创建订单,同时…...
探索数据结构世界之排序篇章(超级详细,你想看的都有)
-文章开头必看 1.!!!本文排序默认都是排升序 2.排序是否稳定值指指排完序之后相同数的相对位置是否改变 3.代码相关解释我都写在注释中了,方便对照着看 1.插入排序1.1直接插入排序1.2希尔排序1.2.1单趟1.2.2多趟基础版——排完一…...
偶数科技发布实时湖仓数据平台Skylab 5.3版本
近日, 偶数发布了最新的实时湖仓数据平台 Skylab 5.3 版本。Skylab包含七大产品,分别为云原生分布式数据库 OushuDB、数据分析与应用平台 Kepler、数据资产管理平台 Orbit、自动化机器学习平台 LittleBoy、数据工厂 Wasp、数据开发与调度平台 Flow、系统…...
vant组件是使用?
首先 在vue项目中使用的时候 要先下载组件 使用npm安装 # Vue 3 项目,安装最新版 Vant npm i vant# Vue 2 项目,安装 Vant 2 npm i vantlatest-v2 使用yarn安装或pnpm # 通过 yarn 安装 yarn add vant# 通过 pnpm 安装 pnpm add vant 在框架中引入即…...
CSP-S 2023 游记
开题,首先先把除了第三题的所有题看了一遍。(由于第三题太长,先放着后面再看) 决定顺序先把一二题做了。 看第一题,小小思考了一手,发现暴力可做,于是飞速码完,小小对拍一下&#…...
关于Git的入门教程(附GitHub和Gitee的使用方法)
一. Git 概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git易于学习、占地面积小、性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCas…...
C# winform如何实现数据的保存和读取
在c#winform中我们在写程序时,经常需要进行数据处理,那么数据如何保存和读取(下面我们通过序列化和反序列化的方式来实现) 第一步: 我们建立一个winform窗体 第二步: 构建一个外部实体类(Student类) 第…...
【Java基础面试四十一】、说一说你对static关键字的理解
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说你对static关键字…...
istio介绍(二)
5. kubesphere istio使用 5.1 整体架构 ks-account 提供用户、权限管理相关的 APIks-apiserver 整个集群管理的 API 接口和集群内部各个模块之间通信的枢纽,以及集群安全控制ks-apigateway 负责处理服务请求和处理 API 调用过程中的所有任务ks-console 提供 KubeSp…...
中文编程开发语言工具构件说明:屏幕截取构件的编程操作
屏幕截取 用于截取指定区域的图像。 图 标: 构件类型:不可视 重要属性 l 截取类型 枚举型,设置在截取屏幕时的截取类型。包括:全屏幕、指定区域、活动窗口三种。当全屏幕截取时相当于执行了硬拷屏(PrintScre…...
selenium多窗口、多iframe切换、alert、3种等待
1、多标签/多窗口之间的切换 场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。这种情况下,需要识别多标签或窗口的情况。 操作方法: switch_to.window()方法:切换…...
物联网AI MicroPython传感器学习 之 RTC时钟模块
学物联网,来万物简单IoT物联网!! 一、产品简介 DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数…...
Mac安装nginx(Homebrew)
查看需要安装 nginx 的信息 brew info nginxDocroot 默认为 /usr/local/var/www 在 /opt/homebrew/etc/nginx/nginx.conf 配置文件中默认端口被配置为8080,从而使 nginx 运行时不需要加 sudo nginx将在 /opt/homebrew//etc/nginx/servers/ 目录中加载所有文件 …...
租用服务器后需要注意什么呢
租用服务器后需要注意什么呢 1、从IDC服务商中接收到服务器时,需要对服务器的各项性能进行测试确认,并做好记录以便对服务器的性能做到心中有数。 2、在服务器租用交接时,要了解服务器的安全设置情况,对服务器安全技术方面不了解…...
pip 时报错 no such option: --bulid-dir 的解决办法
Pycharm 安装第三方库报错及解决方案——no such option: --build-dir Pycharm 安装第三方库报错及解决方案——no such option: --build-dir 最近在学习路径规划相关内容,在运行GitHub上下载例程时缺少“plotly”库,根据网上查到的安装步骤操作&#x…...
[Spring] SpringBoot2 简介(一)—— 基础配置
目录 一、SpringBoot 简介 1、Spring 的缺点 2、SpringBoot 功能 二、SpringBoot 入门案例 1、实现步骤 2、访问服务器 3、入门小结 4、Idea 快速构建 SpringBoot 工程 5、起步依赖无需版本号 6、主启动类的在项目中的位置(*重要*) 三、Sprin…...
【软考】计算机指令系统寻址的几种方式及其速度的比较
速度比较:立即>寄存器>直接> 间接 1. 立即寻址: 直接在指令中给出操作数 2. 寄存器寻址(Register Addressing): 寄存器寻址是指操作数直接存储在寄存器中。指令中的地址字段指定要使用的寄存器编号&#…...
golang笔记17--编译调试go源码
golang笔记17--编译调试go源码 前置条件编译源码在 fmt 包中加自定义函数说明 当前go语言越来越流行了,各大厂商都有加大go工程师的需求,作为go语言的学习者,我们除了要了解如何使用go语言外,也有必要了解一下如何编译、调试go源码…...
DailyPractice.2023.10.22
文章目录 1.[39. 组合总和]2.[22. 括号生成]3.[79. 单词搜索]4.[131. 分割回文串] 1.[39. 组合总和] 39. 组合总和 class Solution { public: vector<vector<int>> res; vector<int> path;void dfs(vector<int>& candidates,int target,int star…...
Go学习第四章——程序流程控制
Go学习第四章——程序流程控制 1 分支结构1.1 单分支1.2 双分支1.3 多分支1.4 switch分支 2 循环结构2.1 for循环2.2 while和dowhile的实现2.3 经典案例——打印金字塔2.4 经典案例——打印九九乘法表 3 跳转控制语句3.1 break3.2 continue3.3 goto3.4 return 流程控制的作用&a…...
通往通用智能的终极路线图(2024-2035关键里程碑白皮书):含7项核心能力演进指标与国家级AGI投入对比数据
第一章:AGI技术路线图:从当前AI到通用智能 2026奇点智能技术大会(https://ml-summit.org) 当前人工智能系统在特定任务上已展现出超越人类的性能,但其本质仍是窄域、静态、数据密集型的模式匹配工具。迈向通用人工智能(AGI&#…...
PHP SAAS 框架常见问题——配置问题——小程序配置提示“Failed to get authorizer_access_token“
小程序配置提示“Failed to get authorizer_access_token"问题:小程序配置提示“Failed to get authorizer_access_token: {"errcode":61023,"errmsg":"refresh_token is invalid rid: 695cca5d-18269c85-358123c2"}"原因&…...
Ubuntu 22.04 LTS下,手把手教你配置VSCode远程开发Python项目(含离线插件安装)
Ubuntu 22.04 LTS企业级VSCode远程Python开发全流程实战 在当今企业开发环境中,内网隔离与安全限制已成为常态。作为一名长期在企业环境下工作的全栈工程师,我深刻理解在内网环境中搭建高效开发工作流的痛点。本文将分享一套经过实战检验的完整解决方案…...
LeRobot开源机器人DIY终极指南:3步打造你的第一台智能机械臂
LeRobot开源机器人DIY终极指南:3步打造你的第一台智能机械臂 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 想亲手制作一台…...
终极戴尔G15散热控制指南:开源替代方案TCC-G15完全解析
终极戴尔G15散热控制指南:开源替代方案TCC-G15完全解析 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为戴尔G15笔记本的过热问题而烦恼…...
不用微软商店!5分钟搞定Win10 OpenSSH离线安装(附GitHub下载指南)
绕过微软商店:Win10 OpenSSH离线安装全攻略 每次在Windows 10的可选功能里尝试安装OpenSSH时,那个转圈圈进度条是不是总让你提心吊胆?微软商店的安装方式不仅速度慢,还经常莫名其妙失败。作为技术爱好者,我们完全有更…...
企业知识库构建新方案:StructBERT中文句向量工具在智能客服问答对匹配中的落地实践
企业知识库构建新方案:StructBERT中文句向量工具在智能客服问答对匹配中的落地实践 1. 项目背景与价值 在智能客服系统中,用户提问的方式千变万化,但核心意图往往相同。传统的关键词匹配方法经常遇到这样的问题:用户问"怎么…...
MySQLd Exporter社区贡献指南:从用户到开发者的转变
MySQLd Exporter社区贡献指南:从用户到开发者的转变 【免费下载链接】mysqld_exporter Exporter for MySQL server metrics 项目地址: https://gitcode.com/gh_mirrors/my/mysqld_exporter MySQLd Exporter作为Prometheus生态中重要的MySQL性能指标采集工具&…...
Applite:让Mac应用管理效率倍增的图形化工具终极指南
Applite:让Mac应用管理效率倍增的图形化工具终极指南 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 你是否还在为Mac上繁琐的软件安装和管理而烦恼?告…...
Audiveris终极指南:5分钟学会免费开源乐谱识别,轻松将纸质乐谱转为数字格式
Audiveris终极指南:5分钟学会免费开源乐谱识别,轻松将纸质乐谱转为数字格式 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris 你是否曾面对一堆纸质乐谱发愁&#…...
