本文内容属于分布式事物处理范畴,强调强一致性与区块链倡导的共识一致性略有不同,主要是最近以太坊ico导致交易拥堵问题引起我的思考,是不是有可能利用已有的解决方案进行演变增加每个节点的提交时的一致性,简单来讲就是在p2p网络中实现部分强一致性,提升区块链交易性能,文中TCC就是一种演变思路,很受启发,希望有高人给予这方面的指点;本文是我寻找资料时发现的一篇不错的文章,当做扩展思路也是不错的。
国际开放标准组织Open Group定义了DTS(分布式事务处理模型),模型中包含4个角色:应用程序、事务管理器、资源管理器、通信资源管理器四部分。事务处理器是统管全局的管理者,资源处理器和通信资源处理器是事务的参与者。
下面我们就介绍两阶段提交协议、三阶段提交协议以及阿里巴巴提出的TCC,它们都是根据DTS这一思想演变出来的。
- 两阶段提交协议
两阶段提交协议把分布式事务分成两个过程,一个是准备阶段,一个是提交阶段,准备阶段和提交阶段都是由事务管理器发起的,为了接下来讲解方便,我们把事务管理器称为协调者,把资管管理器称为参与者。两阶段如下:
准备阶段:协调者向参与者发起指令,参与者评估自己的状态,如果参与者评估指令可以完成,参与者会写redo或者undo日志(这也是前面提起的Write-Ahead Log的一种),然后锁定资源,执行操作,但是并不提交。
提交阶段:如果每个参与者明确返回准备成功,也就是预留资源和执行操作成功,协调者向参与者发起提交指令,参与者提交资源变更的事务,释放锁定的资源;如果任何一个参与者明确返回准备失败,也