Alibaba分布式事务组件Seata实战

Alibaba分布式事务组件Seata实战

事务

本地事务

  • 对于操作单一数据库的场景下的事务,ACIO特性是数据库直接支持的

分布式事务

  • 在分布式情况下,需要的操作资源分布在多个资源服务上,而应用需要保证对于多个资源服务器的数据操作要么全部成功要么全部失败,本质上是为了保证不同服务的数据一致性
    • 应用场景
      • 跨库事务
      • 分库分表
      • 跨服务调用
  • 如何实现分布式事务
    • 两阶段提交(2PC)
      • 将提交过程分为准备阶段和提交,全局事务的ACIO依赖于资源管理器
        • 第一阶段
          • 事务管理器™通知各个资源管理器(RM)准备提交各自的事务
        • 第二阶段
          • 事务管理器根据所有资源管理器的反馈情况来决定提交还是回滚,如果有一个没满足要求就通过所有资源管理器进行回滚
      • 存在的问题
        • 同步阻塞
          • 在准备阶段,第一时间收到通知的服务会锁定资源,直到提交才会释放
        • 单点故障
          • 一旦事务管理器出现故障,参与者都会阻塞下去,特别是提交阶段
        • 数据不一致
          • 如果提交阶段出现崩溃,会导致一部分服务事务已提交导致数据不一致

Seata

  • 阿里开源的分布式事务解决方案,提供了AT、TCC、SAGA和XA事务模式,AT模式首推

Seata的三大角色

  • 三大角色

    • TC(事务协调者)

      • 维护全局和分支事务的状态,驱动全局事务的提交或回滚
    • TM(事务管理器)

      • 开始全局事务、提交或回滚全局事务
    • RM(资源管理器)

      • 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚
  • 注意

    • TC为单独部署的服务端,TM和RM是嵌入应用的客户端

AT模式

  • AT模式的核心是对业务无侵入的,是一种改进后的2PC模式

  • 设计思路

    • 第一阶段
      • 业务数据和回滚日志会在同一本地事务种提交,释放本地锁和连接资源,核心在于对于业务sql的解析转化成undolog并同时入库
    • 第二阶段
      • 分布式事务操作成功之后,TC通知RM异步删除undolog
      • 分布式事务操作失败之后,TM向TC发送回滚请求,RM收到TC的请求后,通过XID和Branch ID找到对应的回滚日志记录,通过该记录生成反向更新SQL执行来完成回滚

XA模式

  • XA模式是一个强一致性的2PC模式
  • 当各个分支事务完成之后,不立即提交,而是等待各个分支事务将自己的事务状态反馈给TC,由TC根据所有分支事务的状态决定是提交还是回滚,每个事务的执行需要等待其他事务的执行结果,因此性能可能受到影响

TCC模式

  • TCC模式是一种侵入式的2PC模式,每个分支的事务都需要具备自己的两阶段,但是不依赖于数据库,适用于复杂业务场景下的分布式事务

SAGA模式

  • SAGA模式是基于状态机引擎的2PC模式,通过将长事务拆分为多个本地子事务以及相应的补偿操作来保证数据一致性

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

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

相关文章

Linux——缓冲区封装系统文件操作

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、FILE二、封装系统接口实现文件操作1、text.c2、mystdio.c3、mystdio.h 一、FILE 因为IO相…

Typora结合PicGo + 使用Github搭建个人免费图床

文章目录 一、国内图床比较二、使用Github搭建图床三、PicGo整合Github图床1、下载并安装PicGo2、设置图床3、整合jsDelivr具体配置介绍 4、测试5、附录 四、Typora整合PicGo实现自动上传 每次写博客时,我都会习惯在Typora写好,然后再复制粘贴到对应的网…

基于springboot+vue的校园社团信息管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

自定义搭建管理系统

最近使用自己搭建的脚手架写了一个简易管理系统,使用webpackreactantd,搭建脚手架参考: 使用Webpack5搭建项目(react篇)_babel-preset-react-app-CSDN博客 搭建的思路: 1. 基建布局,使用antd的…

代码随想录算法训练营第二十五天 | 216.组合总和III,17.电话号码的字母组合 [回溯篇]

代码随想录算法训练营第二十五天 LeetCode 216.组合总和III题目描述思路参考代码总结 LeetCode 17.电话号码的字母组合题目描述思路参考代码 LeetCode 216.组合总和III 题目链接:216.组合总和III 文章讲解:代码随想录#216.组合总和III 视频讲解&#xff…

Java零基础 - 字符串连接运算符

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

linux ubuntu 开发环境搭建 opencv fftw openvino

OpenCV 下载 opencv 源码:Releases - OpenCV 官方安装文档:https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html 详细的安装过程可以参考文章: 在 Linux 系统中编译安装 OpenCV - 知乎 安装依赖项: sudo apt-get …

ubuntu 22 安装 python3.11.7

ubuntu升级python到python3.11(可能是全网最靠谱的方法,亲测有效)_ubuntu python3.11-CSDN博客 在 Ubuntu 中升级 Python 到 3.11 版本可以通过编译源代码或者使用第三方工具来完成。请注意,在升级 Python 之前,请确保…

采用遗传算法搜索MAC效率最高的矩阵乘规模

如何采用遗传算法搜索MAC效率最高的矩阵乘规模 具体实现MAC效率评估代码(eval.py)遗传算法实现 本文介绍了采用遗传算法搜索MAC效率最高的矩阵乘规模 需求背景: 一些AI加速卡在做矩阵乘时,因硬件或软件的约束,并不是规模越大MAC效率越高在测试AI加卡的实际算力时,采用MAC效率最…

vue 子组件获取父组件

父组件vue <template><el-carousel indicator-position"outside"><el-carousel-item ><child /></el-carousel-item><el-carousel-item ><h3>{{ 2 }}</h3></el-carousel-item></el-carousel> </tem…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧&#xff0c;我们不再像单链表去用head去存头和尾&#xff0c;直接让r[0] 1,l[1] 0; idx 2.进行初始化&#xff0c; 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标&#xff0c; r[N]:表示指向下一个节点的下标。大家不用担心i…

皓学IT:WEB03_MySQL

今日内容介绍 Mysql数据库 SQL语句 一、数据库 1.1. 数据库概述 什么是数据库 数据库就是存储数据的仓库&#xff0c;其本质是一个文件系统&#xff0c;数据按照特定的格式将数据存储起来&#xff0c;用户可以对数据库中的数据进行增加&#xff0c;修改&#xff0c;删除及…

南京观海微电子---AXI总线技术简介——ZYNQ PS和PL的互联技术

1.AXI总线介绍 AXI全称Advanced Extensible Interface&#xff0c;是Xilinx从6系列的FPGA开始引入的一个接口协议&#xff0c;主要描述了主设备和从设备之间的数据传输方式。AXI协议在Xilinx的ZYNQ系列芯片中继续使用&#xff0c;协议版本是AXI4。 ZYNQ为Xilinx推出的首款将高…

解决vulhub漏洞环境下载慢卡死问题即解决docker-valhub漏洞环境下载慢的问题

解决vulhub环境下载慢/卡 当前环境为&#xff1a;ubuntu20 1.在 cd /etc/docker/目录下创建或修改daemon.json文件 sudo touch daemon.json编辑daemon.json文件 sudo vim daemon.json2.填写阿里云镜像地址&#xff1a; { "registry-mirrors":["https://6kx…

11-pytorch-使用自己的数据集测试

b站小土堆pytorch教程学习笔记 import torch import torchvision from PIL import Image from torch import nnimg_path ../imgs/dog.png imageImage.open(img_path) print(image) # imageimage.convert(RGB)transformtorchvision.transforms.Compose([torchvision.transforms.…

运维SRE-15 自动化批量管理-ansible1

## 1.什么是自动化批量管理重复性工作与内容: 思考如何自动化完成. 部署环境,批量查看信息,批量检查:自动化 一般步骤:1.如何手动实现2.如何自动化管理工具&#xff0c;批量实现3.注意事项&#xff1a;想要自动化一定要先标准化(所有环境&#xff0c;软件&#xff0c;目录一致)…

剑指offer面试题19 二叉树的镜像

考察点 树的遍历知识点 题目 分析 我们分析算法题目的思路基本上都是归纳法&#xff0c;即通过举一些普通的例子来推理出算法流程&#xff0c;而画图又是举例子的常用手段&#xff0c;比如针对树或者链表画画图&#xff0c;针对数字类的举一些数字的例子寻找规律&#xff0c…

《Docker极简教程》--Docker在生产环境的应用--Docker在生产环境的部署

一、准备工作 1.1 硬件和基础设施要求 硬件和基础设施要求是在部署 Docker 到生产环境之前需要认真考虑和准备的重要方面&#xff0c;以下是一般性的要求&#xff1a; 服务器硬件&#xff1a; CPU&#xff1a;建议使用多核处理器&#xff0c;以支持同时运行多个容器。内存&a…

复制策略深入探讨

在之前的博客中&#xff0c;我们讨论了复制最佳实践和不同类型的复制&#xff0c;例如批量、站点和存储桶。但是&#xff0c;随着所有这些不同类型的复制类型的出现&#xff0c;人们不得不想知道在哪里使用哪种复制策略&#xff1f;从现有 S3 兼容数据存储迁移数据时&#xff0…

在MFC对话框中嵌入web网页时事件失效问题

2010-04-20 日志 在MFC对话框中嵌入web网页时&#xff0c;网页初始化中添加事件无效 document.body.onkeydown function () {//onkeydown"keydownbody()" 不能激发alert(event.keyCode);if(event.keyCode 27)//VK_ESCAPE //String.fromcharcode(A);{if (external…