15 分布式事务之TCC与SAGA
你好,我是周志明。
今天,我们接着上一节课的话题,继续讨论另外两种主流的分布式事务实现方式:TCC和SAGA。
TCC事务的实现过程
TCC(Try-Confirm-Cancel)是除可靠消息队列以外的另一种常见的分布式事务机制,它是由数据库专家帕特 · 赫兰德(Pat Helland)在2007年撰写的论文《Life beyond Distributed Transactions: An Apostate’s Opinion》中提出的。
在上一讲,我给你介绍了可靠消息队列的实现原理,虽然它也能保证最终的结果是相对可靠的,过程也足够简单(相对于TCC来说),但现在你已经知道,可靠消息队列的整个实现过程完全没有任何隔离性可言。
虽然在有些业务中,有没有隔离性不是很重要,比如说搜索系统。但在有些业务中,一旦缺乏了隔离性,就会带来许多麻烦。比如说前几讲,我一直引用的Fenix's Bookstore在线书店的场景事例中,如果缺乏了隔离性,就会带来一个显而易见的问题:超售。
事例场景:Fenix's Bookstore是一个在线书店。一份商品成功售出,需要确保以下三件事情被正确地处理:
- 用户的账号扣减相应的商品款项;
- 商品仓库中扣减库存,将商品标识为待配送状态;
- 商家的账号增加相应的商品款项。