答:

1、XA:XA是基于二阶段事务实现的一种标准协议,目前主流数据库都已支持该协议。由于是二阶段提交,缺点很明显,不适合高并发场景。

2、补偿机制TCC:try,commit,cancel的缩写,try阶段进行检测,commit提交执行,只要try阶段成功了commit就一定会被执行,cancel业务出现错误时执行,回滚事务,释放资源。

3、消息中间件MQ:可以通过阿里的消息中间件RocketMQ来进行解决。RocketMQ支持带事务的消息,具体思路大概是这样的:

   (1)第一步:消息生产者向消息集群发送prepared消息,获取消息地址。

   (2)第二步:本地提交事务,并向集群发送确认消息。

   (3)第三步:通过第一步获取到的地址,访问消息并改变消息状态。