Seata 中封装了四种分布式事务模式,分别是: AT 模式, TCC 模式, Saga 模式, XA 模式,

文章目录

  • seata
    • 概述
    • Seata 中封装了四种分布式事务模式,分别是:
      • AT 模式,
      • TCC 模式,
      • Saga 模式,
      • XA 模式,

今天我们来聊聊seata

seata

概述

在微服务架构下,由于数据库和应用服务的拆分,导致原本一个事务单元中的多个 DML 操作,变成了跨进程或者跨数据库的多个事务单元的多个 DML 操作,

而传统的数据库事务无法解决这类的问题,所以就引出了分布式事务的概念。

分布式事务本质上要解决的就是跨网络节点的多个事务的数据一致性问题,业内常见的解决方法有两种

强一致性,就是所有的事务参与者要么全部成功,要么全部失败,全局事务协调 者需要知道每个事务参与者的执行状态,再根据状态来决定数据的提交或者回滚!

最终一致性,也叫弱一致性,也就是多个网络节点的数据允许出现不一致的情况, 但是在最终的某个时间点会达成数据一致。

基于 CAP 定理我们可以知道,强一致性方案对于应用的性能和可用性会有影响, 所以对于数据一致性要求不高的场景,就会采用最终一致性算法。

在分布式事务的实现上,对于强一致性,我们可以通过基于 XA 协议下的二阶段提交来实现,对于弱一致性,可以基于TCC 事务模型、可靠性消息模型等方案来实现。

市面上有很多针对这些理论模型实现的分布式事务框架,我们可以在应用中集成这些框架来实现分布式事务。

而 Seata 就是其中一种,它是阿里开源的分布式事务解决方案,提供了高性能且简单易用的分布式事务服务。

Seata 中封装了四种分布式事务模式,分别是:

AT 模式,

是一种基于本地事务+二阶段协议来实现的最终数据一致性方案,也是Seata 默认的解决方案
在这里插入图片描述

TCC 模式,

TCC 事务是 Try、Confirm、Cancel 三个词语的缩写,简单理解就是把一个完整的业务逻辑拆分成三个阶段,然后通过事务管理器在业务逻辑层面根据每个分支事务的执行情况分别调用该业务的 Confirm 或者 Cacel 方法。
在这里插入图片描述

Saga 模式,

Saga 模式是 SEATA 提供的长事务解决方案,在 Saga 模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者。
在这里插入图片描述

XA 模式,

XA 可以认为是一种强一致性的事务解决方法,它利用事务资源(数据库、消息服务等)对 XA 协议的支持,以 XA 协议的机制来管理分支事务的一种事务模式。

在这里插入图片描述
从这四种模型中不难看出,在不同的业务场景中,我们可以使用 Seata 的不同事务模型来解决不同业务场景中的分布式事务问题,因此我们可以认为 Seata 是一个一站式的分布式事务解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

echarts 柱状图

记录echarts 柱状图基础案例以及相关配置。 1.基础柱状图 const myChart this.$echarts.init(this.$refs.echartsZx);const option {title: {text: 本周考试记录},//提示框tooltip: {trigger: axis,axisPointer: {type: shadow}},xAxis: {type: category,data: [Mon, Tue, W…

spring、springmvc、springboot、springcloud简介

spring简介 spring是什么? spring: 春天spring: 轻量级的控制反转和面向切面编程的框架 历史 2002年,首次推出spring雏形,interface 21框架2004年,发布1.0版本Rod Johnson: 创始人,悉尼大学,音乐学博士…

配置vite项目打包控制台不显示console.log配置

可以看vite官方的配置文档:构建选项 | Vite 官方中文文档 主要是配置:但是terser需要vite3.0以后手动安装一下 build: {sourcemap: false,minify: terser,terserOptions: {compress: {drop_console: true,drop_debugger: true,},},}, 安装命令&#xff…

八种常见顺序存储的算法

目录 1、线性枚举 1)问题描述 2)动图演示 3)示例说明 4)算法描述 5)源码详解 2、前缀和差分 1)问题描述 2)动图演示 3)样例分析 4)算法描述 5)源码…

攻防世界—no-strings-attached

# 攻防世界—no-strings-attached 介绍下——IDA内置脚本 shiftF12 收获——要一个一个大致看出代码在干嘛 先运行一遍 int __cdecl main(int argc, const char **argv, const char **envp) { setlocale(6, &locale); banner(); prompt_authentication(); authenti…

3D展2D数学原理

今年早些时候,我为 MAKE 杂志写了一篇教程,介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理,并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub,但我在这里编写了对使这一…

vue多条数据渲染(带图片)

我在这用的为接口数据&#xff1a; 先调用接口获取需要的数据: 然后用&#xff1a;data绑定需要渲染的数据&#xff1b;&#xff08;记得包裹在<el-table>标签中&#xff09; 然后以此循环渲染数据&#xff1b;那怎么渲染出来图片呢&#xff1f; 在<el-table-column…

技术资讯:2023编程语言排行榜,出炉啦!

大家好&#xff0c;我是大澈&#xff01; 本文约2000字&#xff0c;整篇阅读大约需要4分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

PMCW体制雷达系列文章(2) - PMCW雷达与CDM

说明 多发多收(MIMO)体制下关于天线阵列有两个核心的问题&#xff1a;一是天线阵列怎么排布&#xff1b;二是这么多发射通道如何发射。这两点不管对于FMCW雷达还是PMCW雷达都同样适用。关于雷达的发射问题&#xff0c;我之前写过一篇博文&#xff1a;车载毫米波雷达MIMO阵列的天…

python如何读取被压缩的图像

读取压缩的图像数据&#xff1a; PackBits 压缩介绍&#xff1a; CCITT T.3 压缩介绍&#xff1a; 读取压缩的图像数据&#xff1a; 在做图像处理的时候&#xff0c;平时都是使用 函数io.imread() 或者是 函数cv2.imread( ) 函数来读取图像数据&#xff0c;很少用PIL.Image…

什么是 NLP (自然语言处理)

NLP&#xff08;自然语言处理&#xff09;到底是做什么&#xff1f; NLP 的全称是 Natural Language Processing&#xff0c;翻译成中文称作&#xff1a;自然语言处理。它是计算机和人工智能的一个重要领域。顾名思义&#xff0c;该领域研究如何处理自然语言。 自然语言就是我…

java设计模式学习之【迭代器模式】

文章目录 引言迭代器模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用迭代器示例代码地址 引言 想象一下&#xff0c;你在一个书店里浏览各种书籍。你可能会从头到尾查看每一本书&#xff0c;或者可能跳过一些不感兴趣的部分。在这个过程中&#xff0c;你实…

计算机操作系统(OS)——P1操作系统概述

1、操作系统的概念(定义) 1.1、什么是操作系统 __操作系统&#xff08;Operating System&#xff0c;OS&#xff09;&#xff1a;__是指控制和管理整个计算机系统的__硬件和软件__资源&#xff0c;并合理的组织调度计算机的工作和资源的分配&#xff1b;以__提供给用户和其它…

都2023年了还不了解?使用FileZilla搭建信息文件服务器(Windows7)

目录 前言&#xff1a; 一.FileZilla介绍 1.FileZilla介绍 2.FileZilla的优点以及不足 优点 不足 3.FileZilla应用场景 4.FileZilla的主要功能&#xff1a; 二.Windows7搭建FileZilla服务器&#xff0c;并且在本地访问 1.下载 2.FileZIlla安装 服务端安装 新建组 …

基于鸿蒙OS开发一个前端应用

创建JS工程&#xff1a;做鸿蒙应用开发到底学习些啥&#xff1f; 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择HarmonyOS模板库&#xff0c…

uniapp开发移动端遇到的问题记录

1. 键盘弹起时页面整体上移问题 很常见但我解决过程中遇到了很多问题 我的键盘没有遮盖到输入框&#xff0c;但手机键盘弹起后&#xff0c;form部分会整体上移一点&#xff0c;并且底部的操作也会弹到键盘上方 网上写得很复杂&#xff0c;什么动态赋值高度balabala。看到有一…

12.18构建哈夫曼树(优先队列),图的存储方式,一些细节(auto,pair用法,结构体指针)

为结构体自身时&#xff0c;用.调用成员变量&#xff1b;为结构体指针时&#xff0c;用->调用成员变量 所以存在结构体数组时&#xff0c;调用数组元素里的成员变量&#xff0c;就是要用. 结构体自身只有在new时才会创建出来&#xff0c;而其指针可以随意创建 在用new时&…

基于Java+SpringBoot+vue实现图书借阅管理系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 &#x1f345; 作者主页 程序设计 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringBootvue实现图书借阅和销售商城一体化…

【Unity动画系统】Unity动画系统Animation详解,参数细节你是否弄清?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

【Web网站测试流程及方法】给你一个网站,你如何来做自动化测试的?

我想大多数开始进行web端页面测试的人&#xff0c;一开始会的都是在页面上点点点&#xff0c;然后一看到页面上有什么图片失效啊&#xff0c;页面遮挡就觉得是找到了大bug&#xff1b;一开始我也是这样&#xff0c;尽管我很谨慎&#xff0c;很仔细&#xff0c;把页面上的每一个…