Skip to content

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是一个在线书店。一份商品成功售出,需要确保以下三件事情被正确地处理:

  1. 用户的账号扣减相应的商品款项;
  2. 商品仓库中扣减库存,将商品标识为待配送状态;
  3. 商家的账号增加相应的商品款项。