分布式事务解决方案

     在项目总结交流的时候,聊到了分布式事务的问题,大体上上系统的总结了分布式事务的相关内容,总结下。


1.分布式事务是什么?


参与事务的参与者/支持事务的服务器/资源服务器等分布式在不同的分布式的系统上。简单来讲,一个大的操作,由不同的小操作组成,这些小的操作分布式在不同的服务器上,并且属于不同的应用。分布式事务 保证这些小操作要么全都成功,要么全都失败。分布式事务本质上是保证,不同数据库数据的一致性。


二,为什么会有分布式事务


1.大数据量高并发情况下,需要分库分表,减轻数据库的压力,这样就由原来的一个数据库变成了多个数据库。某一操作,需要涉及到多个数据库,这时要用到分布式事务。

2.应用SOA化

业务的服务化,将原来的大系统查分为不同的业务服务,比如电商项目中,下订单时,需要添加订单,更新库存等,就会涉及到订单服务,商品服务等。对不同数据库的操作,就要引入分布式事务。

思维导图如下:



三,理论相关


1.ACP理论


AOP理论认为,在分布式系统部署环境下,有三个核心的需求,但是不能够完全保证这三点完全符合。

Consistency:一致性,这个和数据库ACID的一致性类似,但这里关注的所有数据节点上的数据一致性和正确性,而数据库的ACID关注的是在在一个事务内,对数据的一些约束。
Availability:可用性,关注的在某个结点的数据是否可用,可以认为某一个节点的系统是否可用,通信故障除外。
Partition Tolerance:分区容忍性,是否可以对数据进行分区。这是考虑到性能和可伸缩性。


2.Base理论


BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。接下来看一下BASE中的三要素:
1、基本可用
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性,比如性能上的损失,功能上的损失。

2.软状态

即允许系统在不同节点的数据副本之间进行数据同步的时候,存在延时。

3.最终一致性

它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态


 四,解决方案


1.强一致性


    2PC协议

二阶段提交协议是分布式系统中较为经典的处理数据一致性的解决方案。为了能够保证全局事务的ACID特性,需要引入一个协调组件(这里称之为TM)来控制所有服务参与者(这里称之为RM)的操作结果,根据所有参与者的反馈结果来决定整个分布式事务究竟是提交还是回滚的结果。


第一阶段:称为准备(prepare)阶段。事务协调者向各个服务应用发送prepare请求,服务应用在得到请求后做预处理操作,预处理可能是做预检查,也可能是把请求临时存储,可以理解为是一种试探性地提交。下面是一般的步骤:
a.事务协调者会问所有的参与者服务,是否可以提交操作。
b.各个参与者开始事务执行的准备工作:如资源上锁,预留资源,写回滚/重试的log。
c.参与者响应协调者,如果事务准备工作成功,则回应“可以提交”,否则回应拒绝提交。


第二阶段:称为提交(commit)/回滚(rollback)阶段。

是指事务真正提交或者回滚的阶段。如果事务协调者发现事务参与者有一个在prepare阶段出现失败,则会要求所有的参与者进行回滚。如果协调者发现所有的参与者都prepare操作都是成功,那么他将向所有的参与者发出提交请求,这时所有参与者才会正式提交。由此保证了要求全部提交成功,要么全部失败。下面是具体步骤:
a.如果所有的参与者都回应“可以提交”,那么协调者向所有参与者发送“正式提交”的命令。参与者完成正式提交,并释放所有资源,然后回应“完成”,协调者收集各个服务的“完成”回应后结束事务。
b.如果有一个参与者回应“拒绝提交”,那么协调者向所有的参与者发送“回滚操作”,并释放所有的资源,然后回应“回滚完成”,协调者收集各个服务应用的“回滚”返回后,取消整体的分布式事务。


3.缺点

两阶段提交解决的分布式下数据强一致性的问题,原理很简单,但是存在缺点 。(1)单点故障,协调者Tm非常重要,如果TM宕机,那么回影响这个分布式系统的运行。

(2)不同阻塞,在协调阶段,如果一个服务处于阻塞状态,那么这个事务都处于阻塞状态,影响效率。

4.改进方法

出现了三阶段提交,但是三阶段提交,大致上思想相同。


5.最终一致性

基于强一致的缺点,在大数据高并发情况下,可以采用Mq异步实现数据的同步,减少同步阻塞的情况,实现数据的最终一致性。

具体的Mq解决方案,下篇详细讲解。


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值