TCC 原理图如下
分为如下几步
1.业务方调用各个微服务的try()方法,执行资源检查及预留操作
2.当所有try()方法均执行成功时,对全局事务进行提交,即由事务管理器调用每个微服务的confirm()方法
当任意一个方法try()失败(预留资源不足,抑或网络异常,代码异常等任何异常),由事物管理器调用每个微服务的cancle()方法对全局事务进行回滚
try(), confirm()和cancel()方法,都需要业务方自己实现
先看下TCC的示例samples
业务调用方,通过GlobalTransactional
注解开启事务,并调用各个服务提供方的try()方法
服务提供方
TwoPhaseBusinessAction注解标记这是个TCC接口,同时指定commitMethod,rollbackMethod的名称
BusinessActionContext是TCC事务中的上下文对象
BusinessActionContextParameter注解标记的参数会在上下文中传播,即能通过BusinessActionContext对象在commit方法及cancle方法中取到该参数值