分布式事务 | 阿里巴巴Seata解决方案

本文介绍了事务的ACID特性,重点讲解了分布式事务的处理,包括两阶段提交(2PC)和三阶段提交(3PC)协议,以及其优缺点。并以订单和库存为例,说明了分布式事务确保数据一致性的关键。最后提到了Seata作为分布式事务协调者的解决方案。
摘要由CSDN通过智能技术生成

什么是事务?简单来说,即几个事要么都做,要么都不做。如产生订单和减库存。

事务的四个特性:ACID(原子性,一致性,隔离性,持久性),本质是通过锁实现一致性和隔离性。

分布式事务是指会涉及到操作多个数据库(服务)的事务。其实就是将对同一数据库(服务)事务的概念扩大到了对多个数据库(服务)的事务。目的是为了保证分布式系统中的数据一致性。

分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。

Begin Transaction:表示事务的开启标志。

采用@Transaction注解可实现:要么都执行,要么都不执行。

分布式事务解决方案:增加协调者(吃饭与看电影的情况都反馈给协调者,决定要么全部执行,要么全部回退)。

AP: 应用程序

TM:事务协调者,binlog可充当协调者。协调者根据返回结果决定commit或rollback。

RM:DB(资源管理器)

两阶段提交协议(2PC)保证了事务原子性。

2PC第一阶段:准备(投票)阶段:预备提交,将结果反馈给事务协调者。

第二阶段:执行Commit提交,保证了要么全执行,要么都不执行

回滚:返回no/协调者再规定时间内,没有收到所有参与者反馈,利用本地日志回滚。

2PC两阶段缺点:

1.如果事务协调者出错,事务会失败,

2.阻塞资源:占用数据库连接,性能低

3.数据不一致:两阶段出错,数据不一致。(比如某个系统挂了)

打个比方:我们从A地到B地,谁也无法保证一定能成功到达B地,可能在某一段程序执行时,系统挂了。

鸵鸟算法是一种忽略潜在问题的一种算法策略,类似鸵鸟遇到变化时,仍然埋头而置之不理。

三阶段提交协议(3PC):对两阶段协议进行了增强。

  1. can commit:事务协调者对服务进行“检查SQL”判断,再返回服务结果

abort commit:1.有参与者返回no,2,协调者等待超时,3,参与者没收到协调者指令

  1. pre commit:服务执行结果,反馈事务协调者

超时机制:协调者发出回滚指令

超时机制:参与者发出回滚指令(没有等到协调者发来的指令)

  1. do commit: 事务协调者返回可以执行或不允许执行,服务再执行commit提交。

 超时机制:协调者发生回滚指令

 超时机制:参与者发生commit指令提交,(最后一步没收到协调者指令,自作主张提交了),万一自己猜对了呢?三阶段一定程度提高了两阶段的准确性。

超时机制类似微服务的熔断降级,防止了系统雪崩,虽然三阶段应用较少,但这个理论值得注意。

以订单和库存为例:订单未生成,库存也对应不能减(@Trasactional)

分布式事务原理:引入第三方服务seata作为协调者。

Seata server(协调者)服务注册到eureka注册中心,并建立三张表。

在每个服务中引入一个seata依赖,再在代码中增加@GlobalTransactional注解(只需此两步,仅需在第一个服务(比如Order服务)上加@GlobalTransactional注解即可):

订单服务中增加@GlobalTransactional注解:

Eureka注册中心:

Seata server配置文件如下:

Register.conf内容:

File.conf指向seata数据库:

配置一个Seata 本地数据库:

最终实现:如果订单未生成,则库存也不减。

分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就分布 式系统架构中,事务是一个绕不过去的挑战!微服本质上就式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 式服务化架构,微的流行让分布事问题日益突出!尤其是在订单业、资金 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 业务等系统核心流程中,一定要有可靠的分布式解决方案来保证数据性 和准确性。 和准确性。 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 为了解决大家在实施分布式服务化架构过程中关于事问题的困扰,教将基 于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、于支付系统真实业务中的经典场景来对“ 可靠消息最终一致性方案”、TCCTCC 两阶段型方案” 两阶段型方案” 两阶段型方案” 两阶段型方案” 和“最大努力通知型方案”这 和“最大努力通知型方案”这 和“最大努力通知型方案”这 和“最大努力通知型方案”这 和“最大努力通知型方案”这 和“最大努力通知型方案”这 3种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。 种柔性事务解决方案进行具体设计实现和详细讲。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

国林哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值