- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XTS 支付宝分布式事务学习指南
@潇桐 @柳成
支付宝-成都应用研发中心-创新支付工具组-卡券平台
V1.0.8
修订历史
版本号 修订人 内容提要 修订日期
1.0.0 @潇桐 初建文档,完成 XTS 实例分析和配置部分编写 2014-07-22
1.0.1 @柳成 增加 XTS 理论基础部分 2014-07-23
1.0.2 @柳成 1. 增加 XTS 源码浅析部分 2014-07-24
2. 完成排版
1.0.3 @潇桐 对文档细节提出疑问和修订,给出修改意见 2014-07-25
1.0.4 @柳成 针对修改意见完成细节修改 2014-07-25
1.0.5 @柳成 修正 2.4.2 中几处错误,感谢@宾雨 指正 2014-07-29
1.0.6 @柳成 对一种 recover 的特殊情况进行考虑,总结出答案并添 2014-07-30
加在 4.4,感谢@宾雨 的讨论
1.0.7 @柳成 重新绘制 2.4.2中异库模式下 recover回查情况的箭头指 2014-07-31
向,并作出说明,感谢@虞卿 指正
1.0.8 @柳成 重新绘制 2.4.2 中所有图中二阶段的流程 2014-08-30
I
目 录
1 概 述 1
2 XTS 分布式事务原理 2
2.1 分布式事务 2
2.2 为什么需要 XTS 2
2.3 支付宝分布式事务基础模型 2
2.3.1 X/Open DTP 模型 3
2.3.2 两阶段提交协议 3
2.3.3 最末参与者优化(LPO) 4
2.4 XTS 基本概念和分布式事务执行流程 4
2.4.1 事务发起者参与者 5
2.4.2 发起方参与者不同模式下执行流程 7
2.4.3 XTS 异常处理工作原理 14
2.5 小结 15
3 XTS 实例分析和配置使用 16
3.1 XTS 里的基本概念 16
3.2 同库模式 16
3.2.1 编写 Action 16
3.2.2 编写 Activity 18
3.3 异库模式 24
3.4 理解同库和异库模式 26
3.5 参与者的 local/remote 模式 28
3.6 嵌套事务 28
3.7 模式小结 29
3.8 详解配置(同库模式) 31
4 XTS 主要流程源码浅析 33
4.1 发起方流程(一阶段) 33
4.2 参与者流程(一阶段) 38
4.3 参与者提交/回滚过程(二阶段) 42
4.4 XTS 恢复机制执行流程 47
4.5 小结 53
II
1 概 述
1 概 述
XTS(eXtended Transaction Service)框架[1],是支付宝的一个极 技术
框架,在支付宝有广泛地使用,主要用于保证在账务、资金等操作的事务一致性,因此 XTS 框架足以称为
支付宝分布式事务框架。因为其应用场景和理论知识的复杂性,使得整个框架的配置和理解不那么简单和
易学,因此不少新同学在理解 XTS 和配置 XTS 上走了很多弯路。本文是作者在学习 XTS 的过程中思考和
总结的结果,主要对 XTS 的理论基础和基本概念(@柳成 整理)、XTS 的实例分析和配置使用方法(@潇
桐 整理)、XTS 源码浅析(@柳成 整理)这三个方面来对 XTS 进行一个较为全面的入门学习,希望能在
某些方面能够解答新人学习时的疑惑。
1
2 XTS 分布式事务原理
2 XTS 分布式事务原理
@柳成
XTS 分布式事务框架涉及了较多的分布式事务基本概念,但是最主要的概念是 (Two
Phase Commit)。本章将以它为目标阐述 XTS 用到的一些基本模型和理论,先对基础概念进行阐述,然后
再详细描述 XTS 发起方/参与者是如何构成整个 XTS 分布式事务的流程和逻辑,以及总结一下关于发起者/
参与者在几种模式下的不同行为。
2.1 分布式事务
事务的基本概念以及 ACID 原则:请看@潇桐 的文章[2]:点这里?
分布式事务的概念[3]:事务的参与者分布于网络环境中的不同的节点。也就是说可以将多个事务资源纳
入到一个单一的事务之中,并且这些事务资源可以分布到不同的机器上。这些承载分布式资源的机器可能
是出于同一个网络中,也可能处于不同的网络中。甚至说,某个事务资源本质上就是一个通过 HTTP 访问
的单纯的 Internet 资源。因此一个分布式事务的服务操作可能会访问不止一个事务资源(比如访问两个不同
的数据库服务器),也可能调用另一个服务。
更多关于分布式事务的概念请自行 Google。
2.2 为什么需要 XTS
传统事务是使用数据库自身的事务属性,而数据库自身的事务属性是局限于当前实例,不能实现跨库
事务,而对于大型的分布式系统,不仅有跨库事务的存在,还存在不同系统之间的 RPC 调用,这种调用往
往也需要保证一致性,因此
文档评论(0)