Seata概述基础

news2024/9/23 7:21:12

分布式事务原因:

单体架构的spring事务不能跨机器,不能跨数据源

分布式事务的概念:

一个业务流程,在分布式系统(微服务)中,每个业务模块都是一个分支,保证每个业务分支一起成功,要么一起失败

CAP 理论:

当 分区(P)存在, 要么满足一致性(CP),要么满足 可用性(AP)

BASE 理论:

基本可用

软状态

最终一致

基于cap 理论和 base 理论提出了两个模式:

AP 模式:最终一致性----各个子事务分别执行和提交,中间软状态处理,达到最终一致性

CP 模式:强一致性------各个子事务分别执行后等待,同时提交或回滚,达到强一致

Seata 事务管理的角色:

XA 模式:CP 模式(强一致性)

两阶段提交:

第一阶段:每个子事务只执行sql,不提交,等待所有子事务执行完

第二阶段:每个子事务提交,由TC 判断结果成功或失败

缺点:等待每个子事务sql 执行完(sql 执行有快慢),等待过程就是资源浪费

AT 模式:AP 模式(最终一致性)(默认)

两阶段提交:

第一阶段:每个子事务执行sql 并提交,记录un_do.log 快照表

第二阶段:  TC 判断每个子事务提交结果成功或失败,删除或恢复快照表

优点:节省资源的浪费

TCC 模式:AP 模式(最终一致性)

两阶段提交:

第一阶段:try 写预留代码

第二阶段:confirm 提交成功事务编写代码

          Cancel  回滚失败事务编写代码

优点:性能更高

SAGA 模式

总结:

你项目中使用的是springcloud ,你怎么解决微服务模块间的事务问题?

我采用的是阿里第三方组件,seata。从官网下载这个组件服务。Seata 需要注册到nacos 上进行使用。

Seata 基于cap 理论和base 理论。有两种模式 ap 模式(最终一致性),cp 模式(强一直性)。

Seata 提供四种模式:XA ,AT,TCC,SAGA

Seata 角色:TC,TM,RM

我采用是AT 模式,它采用两阶段提交,第一阶段执行sql 并提交,第二阶段 TC 判断结果

Yml 配置下模式和加上注解@GloableTransactional就可以了

         

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

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

相关文章

ROS1 LTS版本安装教程

Abstract: "ROS is primarily targeted at the Ubuntu , though other Linux systems as well as Mac OS X, Android, and Windows are supported to varying degrees. " 一、系统要求 ROS版本系统版本长期支持ROS Kinetic KameWily: amd64、i386 Xenial: amd64、i…

JSP住宅小区物业管理系统(源代码+开题报告+论文+答辩PPT)科大云炬

小区物业管理毕业设计 (论文) 目 录 摘要--------------------------------------------------------------------------------------------1 ABSTRACT-----------------------------------------------------------------------------------2 第1章…

制作composer包提供sdk扩展

目录 1、初始化包 2、将代码推送到github远程仓库 3、为写好扩展包打上tag标签标记当前代码版本 4、将包发布到包管理平台 初始化包,生成 Creates a basic composer.json file in current directory composer init composer init 按照引导就可以生成了 , 详细的…

Python学习笔记 - 异常处理

前言 为了增强程序的健壮性,计算机程序的编写也需要考虑如何处理一些异常的情况,Python 语言提供了异常处理功能,本博文主要介绍 Python 异常处理机制。 一 异常处理举例 为了学习 Python 异常处理机制,首先看下面进行除法运算的…

MySQL的主从复制与读写分离详解

MySQL的主从复制与读写分离详解读写分离概述什么是读写分离为什么要读写分离什么时候要读写分离MySQL主从复制与读写分离主从复制的概念MySQL支持的复制类型主从复制的工作过程主从复制示例保证MySQL主从服务器时间同步主节点服务器配置从节点服务器设置验证MySQL读写分离MySQL…

Vue3 学习笔记 —— Hooks、全局函数和变量、Vue3 插件

目录 1. Hooks 1.1 Vue2 中的 mixins 1.1.1 mixins 是什么? 1.1.2 mixins 缺点? 1.2 Vue3 中的 Hooks 1.2.1 Vue3 Hooks 是什么? 1.2.2 Vue3 内置 hooks 举例 1.2.3 自定义 Hooks 2. 全局函数和全局变量 2.1 app.config.globalProp…

【深入设计模式】适配器模式—一切皆有可能

文章目录1. 适配器模式1.1 适配器模式简介1.2 适配器模式结构1.3 适配器模式示例2. 适配器模式在源码中的应用3. 总结适配器这个词来源于硬件领域,是一个独立的硬件设备接口,允许硬件或电子接口与其它硬件或电子接口相连,比如常见的电源适配器…

(附源码)SSM芜湖公共书房服务平台 毕业设计 250859

SSM芜湖公共书房服务平台 摘 要 一座有底蕴的城市,应该是一个阅读的城市;一个有魅力的城市,应该是一个散发着书香的城市,而全民阅读量逐年增加,是社会进步、文明程度提高的重要标志。各大城市启动“全民阅读”工作以来…

Redis缓存过期和和内存淘汰策略

目录 1、MaxMemory 2、Expire数据结构 3、删除策略 3.1、惰性删除 3.2、主动删除 3.3、缓存淘汰策略 ​​​​​​​3.4、缓存淘汰策略的选择 1、MaxMemory Redis作为DB使用时,为了保证数据的完整性,不允许淘汰任何键值对。Redis作为缓存使用时&…

汇编语言与微机原理 期末半开卷复习整理(上)

8086CPU寄存器 8086:16位,4.77MHz~10MHz,16根数据线,20根地址线 AX/AL:乘除法指令中用作累加器,IO指令中用作数据寄存器,可显式或隐含调用 AH:在LAHF用作目的寄存器,隐含调用。 AL:…

大数据必学Java基础(一百一十一):过滤器注解应用和开发案例

文章目录 过滤器注解应用和开发案例 一、过滤器注解应用 二、开发案例

Python学习日记-第三十八天-生成器(第二节)

系列文章目录 使用greenlet,gevent完成多任务一、使用greenlet,gevent完成多任务 这里要先在pycharm里面提前安装好greenlet和gevent的包 操作: 代码: from greenlet import greenlet import timedef test1():while True:prin…

Android入门第39天-系统设置Configuration类

简介 本节给大家介绍的Configuration类是用来描述手机设备的配置信息的,比如屏幕方向, 触摸屏的触摸方式等。 Configuration给我们提供的方法列表 densityDpi:屏幕密度fontScale:当前用户设置的字体的缩放因子hardKeyboardHidd…

[深度学习] python基础支持汇总

这个系列放一些看神经网络源码过程中的python语法现象 文章目录前言一、list操作://extends/append的区别1.引入2.细致场景再现前言 例如:这个系列放一些看神经网络源码过程中的python语法现象, 直接解析语法太干瘪无聊.希望用这个方式来巩固所学知识 一、list操作…

电商评论文本情感分类(中文文本分类+中文词云图)(第一部分-textcnn)

电商评论文本情感分类(中文文本分类中文词云图) 第一部分 第二部分Bert部分 本项目包含: 1.中文文本处理 2.中文词云图绘制 3.中文词嵌入 4.基于textcnn的中文文本分类(Test_Acc89.2000) 5.基于bert的中文文本分类(Test_Acc0.…

ServiceComb场景及其原理

文章目录Java-ChassisEnableServiceComb初始化SCBSPIServiceUtils自定义SPI加载器职责链管理器FilterChainsManager/ConsumerHandlerManagerRpcSchema注册服务如何保活?RpcReferencePropertySourcesPlaceholderConfigurerThreadPoolExecutorEx/LinkedBlockingQueueE…

深刻理解JAVA并发中的有序性问题和解决之道

问题 Java并发情况下总是会遇到各种意向不到的问题,比如下面的代码: int num 0;boolean ready false; // 线程1 执行此方法 public void actor1(I_Result r) {if(ready) {r.r1 num num;} else {r.r1 1;} } // 线程2 执行此方法 public void actor…

Clickhouse 使用DBeaver连接

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。 OLTP是传统的…

JavaWeb--JDBC核心技术

JavaWeb--JDBC核心技术JDBC核心技术第1章:JDBC概述1.1 数据的持久化1.2 Java中的数据存储技术1.3 JDBC介绍1.4 JDBC体系结构1.5 JDBC程序编写步骤第2章:获取数据库连接2.1 要素一:Driver接口实现类2.1.1 Driver接口介绍2.1.2 加载与注册JDBC驱…

Redis学习笔记(六)

哨兵 哨兵时一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master,并将所有slave连接到新的master哨兵的作用 监控 不断检查master和slave是否正常运行master存活检测、master与slave运行情况检测 通…