分布式事务的几种实现方式

      写个笔记记录下工作中遇到的几种分布式事务实现的几种方式。

      1)接口放在同一个工程里面,避免分布式事务。

        比如之前我们认为account_credits是属于account工程的,credits_info是积分工程的。有个操作叫签到要求先插入credits_info表,然后更新account_credits表。为了避免分布式事务操作,我们直接都放在了积分工程里面。  弊端:本来就是服务拆分了,这样导致不同服务又耦合在一个工程里了。

      2) BASE(base avilable soft state eventually consistant)方案

        服务基本可用,软状态的意思是可以暂时数据不一致,最终数据达成一致性。技术方案主要包括两种第一种: 服务1做完后发送消息到mq,服务2消费mq继续做下面的操作。第二种:不是发mq是写db的形式,服务1做完插入一条记录到db,服务2消费db中的数据。  利弊:优点在于实现简单,对参与方系统侵入小,缺点在于只适用于幂等重试场景,不能对事务做回滚,另外缺乏对整个分布式事务链路的控制。

      3)天猫方案

      
      

      利弊:需要定时任务兜底,没有形成系统的框架。

      4) dts方案 参照链接

      
   

猜你喜欢

转载自labreeze.iteye.com/blog/2354676