分布式事务数据一致性解决方案

Base理论 Basically Available 基本可用 Soft state 软状态 Eventually consistent 最终一致性 三个短语的 缩写,通过牺牲强一致性来获取最终一致性,当出现故障时允许部分不可用但要保证核心功能可用,允许数据在一段时间内不一致,但最终达到一致状态,满足BASE理论的事物,称之为柔性事务。
(1)基本可用:分布式系统出现故障,允许损失部分可用功能,但是要保证核心功能可用,例如电商系统中,交易付款出现故障,但是商品依然可以正常浏览
(2)软状态:不要求强一致性,所以BASE允许出现中间状态(也叫软状态),如支付中、数据同步中等,等到数据最终一致后再将状态改为成功状态。
(3)最终一致:经过一段时间后,所有的分布式节点数据达到一致状态,如支付中变为支付成功或支付失败,但需要一定时间的延迟
 

一、2PC

将事务流程分为准备Prepare phase 提交commit phase两个阶段。整个事务过程分为事务管理器和事务参与者两部分,事务管理器决定整个分布式事务的提交和回滚,事务参与者负责自己本地事务的提交和回滚。大部分关系型数据库如Oracle、mysql均支持两阶段提交协议
      (1)准备阶段:事务管理器给各个事务参与者发送prepare消息,每个参与者在本地执行事务,并写本地的Undo/Redo log,此时事务并没有提交(undo log记录修改前数据用于回滚,redo log记录修改后数据,用户提交事务时写入数据文件)
      (2)提交阶段:若事务管理器收到某事务参与者执行失败的消息,直接给每个参与者发送回滚rollback 消息;否则,发送提交commit消息,参与者根据收到的事务管理器的指令执行提交或回滚操作,并释放在本地事务处理过程中占用的锁资源。

1.XA方案 

如注册用户送积分
       (1)应用程序AP持有用户库和积分库两个数据源
       (2)应用程序AP通过TM通知用户库RM新增用户信息,同时通知积分库RM为该用户新增积分,各RM此时并未提交事务,该用户和积分资源锁定
       (3)TM收到执行失败回复,则向其他RM发起通知回滚事务,回滚完毕,释放锁资源
       (4)收到全部执行成功回复,向各RM发出提交通知,提交完毕,释放锁资源

AP应用程序、TM事务管理器、RM资源管理器可以理解为事务参与者,DTP模型定义了TM和RM的接口通讯规范称为XA,简单理解为数据库基于XA协议来实现2PC称为XA方案。TM向AP提供应用程序编程接口,AP通过TM来提交或回滚事务;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值