分布式(二) -- 分布式事务

2020-10-15  本文已影响0人  OakesYa

本文参考什么是分布式事务分布式事务的四种解决方案分布式一致性关于分布式事务,XA协议的学习笔记

分布式事务是什么

我们知道数据库事务就是一组数据库操作序列。所以事务我们可以理解成是一组逻辑单元执行的操作,要么全成功,要么全失败。但是目前我们一般讲事务也都是单机数据库事务,有着ACID的特性,而我们现在服务基本都是多集群配置的分布式服务了,那么分布式事务是啥?
分布式事务可以理解成在分布式系统中保证不同节点数据一致性,提到分布式事务就不得不提XA分布式事务协议了,包含2PC(两阶段提交)和3PC(三阶段提交)两种实现。并且除了事务执行者(执行事务的机器)外需要增加一个事务协调者(进行协调执行的机器)进行协调。那我们就以分布式集群上Mysql数据为例讲解一下。

2PC

两阶段提交包含了Prepare阶段和Commit/RollBack阶段。我们分别看下两阶段的过程。

3PC

三阶段提交是在二阶段提交上的加入了超时机制,同时在协调者和参与者中都引入超时机制。并且将二阶段的准备阶段拆分为2个阶段,插入了一个preCommit阶段,以此来处理原先二阶段,参与者准备后,参与者发生崩溃或错误,导致参与者无法知晓是否提交或回滚的不确定状态所引起的延时问题。

缺点:
1:数据不一致问题依然存在,当在参与者收到 preCommit 请求后等待 do commite 指令时,此时如果协调者请求中断事务,而协调者无法与参与者正常通信,会导致参与者继续提交事务,造成数据不一致。

优化方案

优点:
1:性能提升:具体业务来实现控制资源锁的粒度变小,不会锁定整个资源。
2:数据最终一致性:基于 Confirm 和 Cancel 的幂等性,保证事务最终完成确认或者取消,保证数据的一致性。:
3:可靠性:解决了 XA 协议的协调者单点故障问题,由主业务方发起并控制整个业务活动,业务活动管理器也变成多点,引入集群。
缺点:
1:TCC 的 Try、Confirm 和 Cancel 操作功能要按具体业务来实现,业务耦合度较高,提高了开发成本。

总结:

当然看参考文章还有MQ事务,Saga事务等优化方案,暂时还未理解,后面会继续学习并丰富一下,首先先整理一下分布式事务的简单理解。

上一篇下一篇

猜你喜欢

热点阅读