一,TCC分布式事务管理器
ByteTCC
Himly
TCC-transaction
二,TCC事务管理器的实现思路
首先,理解一下下面2个名词:
中间状态字段:这里需要一个中间状态字段,也就是我们先用这个字段记录将要执行的操作。
目标字段:我们执行代码实际需要修改的字段。
然后,TCC事务管理器需要每个功能对应三个service,分别对应TCC的三个阶段。
service1:try阶段执行,功能就是更新数据库中间状态字段。
service2:confirm阶段执行,功能就是根据中间状态字段的值,更新目标字段,然后把中间状态字段的值置为初始值0。
service3:cancel阶段执行,功能就是把中间状态字段的值置为初始值0。
1,try
功能:执行service1,每个微服务更新中间状态字段的值。
在预提交阶段,直接更新这个中间状态字段,而不是直接更新目标字段,这是TCC的精髓。TCC补偿事务的概念,就是从这里来的。
这里需要注意,每个微服务都要设置一个中间状态,预提交阶段,每个微服务都只更新中间状态字段。
2,confirm
功能:TCC事务管理器如果发现每个微服务都正常执行结束,则通知每个微服务执行各自的service2,执行更新目标字段的逻辑。
3,cancel
功能:TCC事务管理器如果发现有微服务没有正常执行结束,则通知每个微服务执行各自的service3,执行回滚的逻辑。
这就是TCC事务管理器的具体实现逻辑。
网友评论