Seata概述基础

分布式事务原因:

单体架构的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就可以了

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20岁30年经验的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值