Seata 入门知识

目录

概述

工作流程

工作模式

AT模式

TCC模式


概述

     Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 AT模式是阿里首推的模式 ,阿里云上有商用版本的GTS(Global Transaction Service 全局事务服务),相关文档资料参考: Seata 是什么? | Apache Seata

Demo

   这里附上seata的学习代码demo,开箱即用。包含AT/TCC/XA等模式的使用案例https://download.csdn.net/download/lmj3732018/88864802

工作流程

在 Seata 的架构中,一共有三个角色:
TM :事务管理器,全称为 Transaction Manager,实际上指全局事务的发起者,定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM :资源管理器 全称为 Resource Manager,实际上一个全局事务中的各个本地事务,管理分支事务处理的资源,与TC交互以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

TC :事务协调者 ,全称为 Transaction Coordinator,实际上指Seata服务器,维护全局和分支事务的状态,驱动全局事务提交或回滚。
工作流程图如下:

 如上图所示,在 Seata 中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。 一个分布式事务的生命周期如下:

  1. TM 请求 TC 开启一个全局事务。TC 会生成一个 XID 作为该全局事务的编号。XID会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。
  2. RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。
  3. TM 请求 TC 告诉 XID 对应的全局事务是进行提交还是回滚。
  4. TC 驱动 RM 们将 XID 对应的自己的本地事务进行提交还是回滚。

工作模式

AT模式

Seata AT模式的设计思路
       Seata AT模式的核心是对业务无侵入,是一种改进后的两阶段提交。它本身依赖于数据库的事务实现,它也是 Seata 默认的工作模式。它的本质是在本地事务分支提交的同时,用一张数据库表记录对应的undo日志记录(此undo日志非mysql的undo日志)。在回滚阶段采用这条回滚日志记录进行反向补偿。
      其设计思路如下:
一阶段: 先要在各个本地事务相关的数据库中分别创建一张相同的undo日志记录表。在本地事务提交的同时记录本地事务操作对应的undo日志记录,同时还要释放本地锁和连接资源。
二阶段:事务协调者在通知各个资源管理器做相应的事务处理,具体表现为:如果事务是提交,则删除对应的undo记录即可。如果是回滚,则根据undo记录做相应的反向补偿操作。这个过程是异步进行的,效率较高。

TCC模式

      TCC 也是基于二阶段提交事务的实现,它的全称为 Try-Confirm-Cancel,即资源预留 (Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下:

  1. Try:对业务资源的检查并预留;
  2. Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功;
  3. Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。

      TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现,对业务系统有着非常大的入侵性,设计相对复杂,但优点是 TCC 完全不依赖数据库,能够实现跨数据库、跨应用资源管理,对这些不同数据访问通过侵入式的编码方式实现一个原子操作,更好地解决了在各种复杂业务场景下的分布式事务问题。它的特点即:复杂而灵活。

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

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

相关文章

CUDA C++ 编程指南

目录 1. Introduction1.1. The Benefits of Using GPUs1.2. CUDA: A General-Purpose Parallel Computing1.3. A Scalable Programming Model CUDA C Programming Guide 1. Introduction 1.1. The Benefits of Using GPUs 在相似的价格和功耗范围内,图形处理单…

9个最受欢迎的开源自动化测试框架盘点!

自动化测试框架可以帮助测试人员评估多个Web和移动应用程序的功能,安全性,可用性和可访问性。尽管团队可以自己构建复杂的自动化测试框架,但是当他们可以使用现有的开源工具,库和测试框架获得相同甚至更好的结果时,通常…

Github开源贡献者的狂欢——教你如何免费领取价值$200的Starknet空投

前言: 2024 又迎来了四年一度的 BTC 减半时刻,币圈仿佛一下又热闹了起来,这几天有一个新的基于 ETH 的项目诞生了:StarkNet,代号 STRK,凡是在前 5000 个开源项目贡献过至少 3 个 commit 的程序猿都会被空投…

dhtml图片白色区域透明

2011-3-15 关于透明色别人已经讲的很好了,这里记录了一个测试例子。 gif只支持索引色透明,比如规定#FFFFFF为透明,那么图片中所有白色区域都完全透明。 而png支持alpha透明,任何颜色都可以透明,而且有透明度这样一个…

Linux系统网络服务部分拓展练习

1)网关服务器:ens36:12.0.0.254/24,ens33:192.168.241.254/24;Server1:192.168.241.0/24;PC1和server2:自动获取IP;交换机无需配置。要求能够使用Xshell等远程…

MySQL - 事务日志

目录 1. redo日志 1.1 为什么需要REDO日志 1.2 REDO日志的好处、特点 1. 好处 2. 特点 1.3 redo的组成 1.4 redo的整体流程 1.5 redo log的刷盘策略 1.6 不同刷盘策略演示 1. 流程图 ​编辑2. 举例 1.7 写入redo log buffer 过程 1.8 redo log file 1. 相关参数…

matlab倒立摆小车LQR控制动画

1、内容简介 略 54-可以交流、咨询、答疑 2、内容说明 略 摆杆长度为 L,质量为 m 的单级倒立摆(摆杆的质心在杆的中心处),小车的质量为 M。在水平方向施加控制力 u,相对参考系产生位移为 y。为了简化问题并且保其实质不变,忽…

【SelectIO】bitslice原语学习记录

基本概念 在Ultrascale (plus)系列上的FPGA中,Xilinx引入了bitslice硬核,它取代了7系列上的IDELAYCTRL/IODELAY/IOSERDES/IODDR系列硬核,用于为HP(High Performance)类型Bank上的IO接口提供串并转化、信号延时、三态控…

【k8s资源调度-HPA(自动扩缩容)】

1、HPA可以做什么? 通过观察pod的cpu、内存使用率或自定义metrics指标进行自动的扩容或缩容pod的数量。通常用于Deployment,不适用于无法扩/缩容的对象,如DaemonSet。控制管理器每隔30s(可以通过-horizontal-pod-autoscaler–sync-period修改…

特征选择|一种提升预测模型性能的方法(原理及其优化实现,Matlab)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进 如今,生成的数据集呈指数级增长,这将产生具有大量特征和样本的数据集,而显然,某些特征是不相关/冗余的,它们…

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多,首先最简单的就是直接通过jedis类来连接,jedis类就相当于是redis的客户端表示。 但是因为现在比较常用的是:StringRedisTemplate和RedisTemplate,所以jedis只做简单的介绍。 一、Jedis…

powershell中安装git

以管理员权限打开 PowerShell。 在 PowerShell 中,你可以使用 winget 这个 Windows 的包管理器来安装 Git。下列命令会安装 Git: winget install --id Git.Git -e --source winget另一种方式是直接从 Git 官方网站下载安装程序,并运行它完…

Langchain-Chatchat部署总结

项目地址: https://github.com/chatchat-space/Langchain-Chatchat 整体安装比较方便,在阿里云购买云主机,购买的国外站点机器, 该项目运行最佳坏境为 Linux Ubuntu 22.04.5Python 版本 3.11.7CUDA 版本: 12.1torch2.1.2 使…

Spring的优点

1.方便解耦,简化开发 Spring就是一个容器,可以将所有对象创建和关系维护交给Spring管理。 2.AOP编程支持 面向切面编程,方便实现程序进行权限拦截,运行监控等功能。 3.声明式事务的支持 通过配置完成事务的管理,…

Vue全局事件防止重复点击(等待请求)【进阶版】

继《Vue全局指令防止重复点击(等待请求)》之后,感觉指令方式还是不太友好,而且嵌套闭包比较麻烦,于是想到了Vue的全局混入,利用混入,给组件绑定click事件。 一、实现原理 与指令方式大致一样&…

针对小型企业网络防护的免费防火墙软件

针对小型企业网络防护,以下是一些适合的防火墙软件/解决方案: pfSense:pfSense 是一款基于 FreeBSD 的开源防火墙和路由器软件,提供丰富的功能和灵活的配置选项,适合用于小型企业网络防护。它支持多种功能,…

代码随想录算法训练营第五十五天| 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 题目链接:. - 力扣(LeetCode) 解题思路:今天若买入,应当是前天积攒的利润减去当前股票 java: class Solution {public int maxProfit(int[] prices) {if (prices null |…

Linux 网络命令指南

目录 配置IP地址和子网掩码 网络接口的详细信息 测试与目标主机的连通性 下载文件或内容 远程登录,进行远程管理和协作 CentOS / Red Hat(使用 firewalld) 关闭防火墙 开启防火墙 配置TCP端口(假设使用3306端口&#xff…

最短路径算法总结(Dijkstra、Bellman-ford、SPFA和Floyd)

在最短路径算法中,常用的有Dijkstra、Bellman-ford、spfa、Floyd这四大算法 Dijkstra:迪克斯特拉算法Bellman-ford:贝尔曼-福特算法SPFA:Shortest Path Faster Algorithm算法Floyd:弗洛伊德算法 四大算法介绍 简介 …

一键获取电商平台商品信息,快速提高电商业务效率

阿里巴巴店铺所有商品API接口技术全解析 一、引言 在阿里巴巴这个全球领先的电商平台上,店铺所有商品API接口(item_search_shop)为开发者提供了一个便捷的途径,能够获取店铺的所有商品信息。通过这一接口,无论是数据…