关于分布式事务,目前处理的理论支撑是CAP理论:分布式系统在设计时只能在一致性(Consistency)、可用性(Availability)、
分区容忍性(Partition Tolerance)中满足两种,无法兼顾三种。
大家可以先去了解什么是CAP,在这里,我就是做一下浓缩的总结。首先,分布式事务的场景,什么情况下会涉及到分布式事务呢?这里一句话说清楚:当有一个比较复杂的业务要处理,一个大的事务里有多个小的事务,并且这些小的事务可能分布在不同的服务上,只要有一个小事务处理失败,整个事务团体全部都要回滚到事务执行前,这就是分布式事务涉及的问题场景。
面对此种问题场景,目前没有很简单的一步到位的插件或者api或者现成的方法可用的,总结一下,主要三种处理方案:
1.外层大事务映射数据库的分布式事务,通过XA协议,利用数据库的分布式事务机制来进行事务的一致性协调。
2.人为的为每个小事务设置一个状态,执行成功则返回一个成功状态给外层的总事务,一旦有一个返回失败状态,之前成功了的所有小事务再通过人工逻辑反写回去。
3.采用消息队列的一致性机制,把一个大的请求通过MQ释放出去分割成一个个小的请求,并通过手动ACK去返回每个小请求的提交状态,有一个失败则全体回滚。
个人觉得能否像Feign,Ribbon一样,搞个注解引入一下,就能实现分布式事务管理方案,应该是可行的…