大体思路是对事务进行代理,手动控制事务的开启提交。DataSource->Connect->Transaction @Transtaction注解也是Aop 自己编写事务注解zdyTranstaction实现Transtration里面的几个方法,Connect也是,对DataSource、Connect、Transaction编写切面。事务A中有start标志创建事务组,返回事务id。http/rcp调用其他服务把事务id传过去。每个服务(都有自定义注解)执行业务后(单独开个线程等待事务组通知提交事务),执行成功就添加commit事务,失败就添加rollback事务。等到D服务有end标志时事务结束。如果事务全都是commit。则会发送一个通知提交给各个事务(netty/tomcat等都可以)。然后线程被唤醒提交事务。反之,如果存在rollback则发送rollback的通知唤醒线程回滚。(2PC两阶段提交)
2、利用mq做,消息可以使用确认机制。对于失败的消息发往死信队列,手动处理
3、Tcc三阶段提交 结合三方框架如hmily使用