背景:
随着微服务架构的流行,分布式事务作为必须要面对和解决的课题,业界也存在着多种解决方案。例如:两阶段提交、TCC(try、confirm、cancel)、借助于消息队列的等等。但这些要么不能很好地保证数据的一致性,要么就是实现起来复杂度比较高,还有就是业务的侵入性。
seata作为一个分布式事务框架,最开始吸引我的地方,就是他的AT模式,不但避免了业务的侵入性,降低开发的复杂度,而且它的异步提交策略(如果一阶段分支事务成功提交,则二阶段一开始,全局锁即被释放,否则,直到二阶段回滚完成才能释放全局锁)在保证数据一致性的前提下,尽可能的提高了分布式事务的效率。
关于原理性的内容可以参照githup(https://github.com/seata/seata),我就不多赘述了。
我主要采用了seata提供的AT模式,下面主要介绍一下,我在使用seata解决分布式事务时遇到的一些问题和怎么解决的。
我使用的是0.9.0版本,有些问题已经被新版本修复,下面会用加粗斜体标识,也建议大家去使用1.0版本,当然这里遇到的一些问题,也可以参考一下
==================================================================
首先贴出我的pom主要依赖: