分布式事务处理PPT课件下载推荐.pptx
- 文档编号:14328256
- 上传时间:2022-10-22
- 格式:PPTX
- 页数:29
- 大小:208.95KB
分布式事务处理PPT课件下载推荐.pptx
《分布式事务处理PPT课件下载推荐.pptx》由会员分享,可在线阅读,更多相关《分布式事务处理PPT课件下载推荐.pptx(29页珍藏版)》请在冰豆网上搜索。
产生原因数据库分库分表应用SOA化常见方案基于XA协议的两阶段提交消息事务+最终一致性TCC编程模式,两阶段提交基本模型,事务协调者,参与者,参与者,1.准备,2.已准备,5.提交,6.完成,3.准备,4.已准备,7.提交,8.完成,事务协调者,参与者,参与者,1.准备,2.已准备,5.回滚,6.完成,3.准备,4.已准备,7.回滚,8.完成,分布式事务基本模型,XTS,发起者,参与者,1.开启主事务,2.已准备,5.提交,4.已准备,6.提交,7.完成,3.加入分支事务,XTS,发起者,参与者,1.开启主事务,2.已准备,5.回滚,4.已准备,6.回滚,7.完成,3.加入分支事务,分布式事务基本模型,协调者,参与者,发起者,主事务管理器,分支事务管理器,定时任务,注册主事务,事务提交,事务回查,恢复数据查询,注册分支事务,提交,回滚,同库和异库分布式事务,同库:
主事务和业务流水在一个db中,占用业务系统的db容量,但是减少了主事务注册的远程调用,性能有优势,对应用来说改动相对比较大。
异库:
主事务在xts系统中,所有的分布式事务都需要xts来主控,可能存在单点问题,比如db挂掉,应用挂掉。
未来对于主路径肯定是主推同库模式,异库模式也需要支持。
根据业务实际情况,采用异库的模式。
xts:
extendedtransactionservice,2,大纲,基本原理服务端设计应用改造方案典型业务场景接入方式,分布式事务主要模型,business_activity(主事务),business_action(分支事务),主事务状态机,NULL,初始化,确认提交状态,确认回滚状态,未知状态,未知状态:
是由协调者会查时发起者给的结果,理论上不应该出现,出现了可能需要人工介入了。
初始化状态:
发起方注册主事务。
回滚状态:
发起方本地事务回滚了,事务同步器回滚,提交状态:
发起方本地事务提交了,事务同步器提交到服务端,定时恢复,daemon,捞取主事务状态为I的记录,根据主事务id获取分支事务,捞取主事务的时候需要注意时间段,不能跨度太长导致db压力。
查询事务状态的时候只有在提交或者回滚的时候才需要恢复。
查询发起者事务状态,提交/回滚分支事务,loop,分布式定时任务,mutex_task字段说明,抢锁,捞取初始数据进行恢复,结束,Y,N,容量分析,分布式事务实现-正常调用,发起者,参与者,XTS,1.开启本地事务,2.注册一个远程事务(主事务),7.完成参与者业务,4.调用参与者,5.加入分支事务,8.本地事务提交,8.XTS根据本地事务结果commit/rollback,10.循环第2阶段commit/rollback,3.Business_activity增加一条的I的记录,6.Business_action增加一条记录,9.捞取Business_action记录,11.更新Business_activity状态,12.根据配置结果通知,分布式事务实现-恢复流程,发起者,参与者,XTS,2.查询事务状态,1.Business_activity捞取I,U的记录,3.根据事务id查询Business_action,5.更新Business_activity状态,mit/rollback,6.根据配置结果通知,3,大纲,基本原理服务端设计应用改造方案典型业务场景接入方式,事务改造-发起者,发起者在本地事务内开启。
只要负责开启事务,客户端会自动在本地事务管理器中注册事务同步器。
本地事务提交时,由事务同步器自动通知服务端进行事务回滚或者提交。
发起者在本地事务外开启。
应用可以选择在合适的时候绑定本地事务。
应用需要确保事务一定会提交或者回滚。
需要实现回查接口,数据要确保可重复读。
事务改造-参与者,在业务过程中需要显式的调用客户端把自己加入到分支事务中。
需要实现xts提供的二阶段提交/回滚服务。
事务状态需要保证幂等性(比如xts发起提交的时候,此时数据已经提交,也需要返回提交成功),参与者状态机改造的几种方案,一、在业务状态中带入分布式事务状态。
适用情况,状态机比较简单,加入后不会对业务流程造成很大影响。
二、业务流水表上新增一个分布式事务状态字段。
比如支付在充值完成后需要完成支付时,业务状态停在“已充值”,如果支付第1阶段成功,状态变成“已充值”-“预处理成功”,第2阶段提交成功后,业务状态和分布式事务状态一起变化。
在一条记录上,变更时天生带有事务性。
三、新增一个表,存放分布式事务相关的信息。
一阶段的时候把数据单独存起来,业务处理时要考虑到这个新增的表中数据。
二阶段提交时直接把数据移到主流水中,回滚则直接删除数据。
注意和主流水在一个事务里。
4,大纲,基本原理服务端设计应用改造方案典型业务场景接入方式,典型业务场景-充值,payment,account,XTS,2.开启本地事务,3.注册一个远程事务(主事务),6.完成充值,并冻结预处理,4.增加余额并冻结,5.加入分支事务,7.本地事务提交,8.XTS根据本地事务结果commit/rollback,第2阶段commit/rollback,如果发生回滚,支付能发起重试,1.银行支付完成,典型业务场景-提现,transcore,XTS,开启本地事务,payment,account,异步提现,开启分布式事务,转账,转到中间账户,加入分布式事务,XTS根据本地事务结果commit/rollback,银行提现,事务失败,payment能自动恢复,5,大纲,基本原理服务端设计应用改造方案典型业务场景接入方式,发起者配置,参与者接入,几个注意点,1.事务id传递有两种方式,一是在服务接口里直接传递,二是在dubbo上下文里获取。
2.由于同一笔业务可能发起多次调用,发起者应做好记录,防止在查询的时候查询不到流水。
3.context中可以存放业务流水,如果根据事务id无法查询到数据,可以通过业务流水查询状态。
4.参与者要做好状态控制,支持多次提交和回滚。
5.参与者要做好请求流水的幂等控制,xts只能保证单个事务的最终一致性,业务上的控制需要应用自行控制。
优缺点,一定程度降低了系统处理分布式事务一致性带来的复杂度,提供了最终一致性的保障。
整个设计是存储无关的,底层数据库可以采用任何一种数据库。
对性能的影响,因为是在本地事务重开启了分布式事务,单个事务的操作时间会很大程度受rpc响应时间影响,如果rpc时间过长,会影响单机的吞吐量。
Thanks,Q&
A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 事务处理
![提示](https://static.bdocx.com/images/bang_tan.gif)