知识卡片

TCC三阶段把数据库锁降为业务锁

普通读书笔记卡 · 1976.ae

内容

TCC把参与方分为主业务服务(发起)与从业务服务(执行),业务行为拆为Try(准备,检测并锁定/预留资源)、Confirm(提交,执行实际操作)、Cancel(补偿,释放Try预留资源)。Cancel像回滚但非回滚:Try不同步加锁,而是真正更改资源、只在业务接口上体现为锁定(支付Try冻结金额而非扣款,需给Account加frozenBalance)。其隔离性思想是通过业务改造,第一阶段后从数据库层加锁过渡为业务层加锁,释放底层锁、把锁粒度降到最细以提高并发。所有参与服务都需定义三阶段方法且幂等。发散:精髓是用业务态的冻结/预留替换数据库态的行锁。

参考来源

- 位置:《解构领域驱动设计》第18章《领域驱动设计的战略考量》18.4.3(源文件:_epub-src/OEBPS/031.xhtml) - 结论依据:原文定义TCC的Try/Confirm/Cancel三阶段与主从业务服务,引觉生观点说明其把数据库锁过渡为业务锁以提升并发。 - 原始内容:TCC模型的隔离性思想就是通过业务的改造,在第一阶段结束之后,从底层数据库资源层面的加锁过渡为上层业务层面的加锁,从而释放底层数据库锁资源……将锁的粒度降到最细,以最大限度提高业务并发性能。