上一章我们经过本地事物的介绍,发现了本地事物的局限性,最后我们引发对分布式事物的思考,我们给出一个“事物管理器”的概念来管理事物,进而实现分布式事物的问题。那么这个想发到底能不能行呢?答案是肯定的,传统的分布式事物方案就是依赖于“事物管理器”。只是有一定的局限性而已,基本的需求方案是可以实现的。
全局事物(DTP模型)介绍,如图:
上图可知,事物管理器来管理事物,赋予事物跨服务跨资源的功能,从而解决分布式事物的问题。
那么既然有一套传统的方案能解决分布式事物的问题,为什么我们还要去深入研究呢?
因为这套方案也有很大的局限性的
全局事物的优点:
1:严格的ACID原则
2:基于本地事物思想,代码实现简单。
全局事物的缺点:
1:效率非常低,不适用微服务架构。全局事物方式下,全局事物管理器(TM)通过XA接口使用二阶段提交协议(2PC)与资源层进行交互.使用全局事物,数据被lock的时间跨度整个事物,直到全局事物结束
2:2PC是反可伸缩模式,在事物处理过程中,参与者需要一直持有资源直到结束,当业务规模变大,2PC的局限性会越来越明显,系统可伸缩性会变的很差
3:与本地事物相比,XA协议的系统开销相当大。
所以,他的缺点远大于优点,这套传统的分布式事物解决方案,对于我的支付系统,肯定是满足不了需求的。下面会带大家一起探讨三种柔性分布式事物的解决方案
最大努力通知型
最终消息一致性型
TCC型
/**
* ————————如果觉得本博文还行,别忘了推荐一下哦,谢谢!
* 作者:写程序的奥特曼
* 欢迎转载,请保留此段声明。
* 出处:https://my.oschina.net/u/2286631/blog/1504666
*/