简单的谈一谈分布式事务问题

目前,互联网行业的发展,使得系统由单体系统演变分布式系统,传统的集中式蜕变为分布式的。而在分布式系统架构的到来,好处特别多【自行网上搜集资料】,但也带来一个世界性的难题,即分布式事务问题。

何为分布式事务?

在此,举一个例子【本人开发过程中的经历】:

一个电商系统,采取spring+springMVC+mybatis做基础的技术架构,采用RPC框架做服务的远程调用【Dubbo+zookeeper】。

在订单服务中order-service,生成订单:1、先清空购物车【远程调用完成】;2、写order,ordergoods,orderAction【没有经过远程调用】。

这时,有一个问题,这两步无论操作的先后顺序,比如,第一步先操作,当第一步完成后,第二步操作失败。一般人都认为,这时数据库中的数据会回滚。回滚吗?答案不是的,操作两个服务,代表的是两个事物。

简单的谈一谈分布式事务问题_第1张图片

这就是一个分布式事务问题,分布式事务的本质在于:不在一个事务管理器里面。

 

简单的谈一谈分布式事务问题_第2张图片

简单的谈一谈分布式事务问题_第3张图片

简单的谈一谈分布式事务问题_第4张图片

 

事务控制原理

简单的谈一谈分布式事务问题_第5张图片

个人观点:事务控制原理,TxManager:全局事务管理器,一套完整的请求,需要经过controller--->service----->dao

在service业务模块与dao持久层之间,添加一个TxClient事务的客户端。这个TxClient有什么作用?基于什么原理制作的呢?

很简单的想到,他就是一个控制事务的拦截器,将一个请求中的所有事务都放到全局事务管理器中,一起开始和结束。可以结合springAop面向切面编程+拦截器的原理完成这种分布式事务处理的架构思想。

详情参考一下:LCN

 

你可能感兴趣的:(架构思想)