zoukankan      html  css  js  c++  java
  • 分布式事务

    订单服务下订单---------
    库存服务锁库存---------->分布式事务
    用户服务扣减积分-------/
    

      

    事务保证:

    1、订单服务异常,库存锁定不运行,全部回滚,撤销操作
    2、库存服务事务自治,锁定失败全部回滚,订单感受到,继续回滚
    3、库存服务锁定成功了,但是网络原因返回数据途中问题?
    4、库存服务锁定成功了,库存服务下面的逻辑发生故障,订单回滚了,怎么处理?

    利用消息队列实现最终一致

    库存服务锁定成功后发给消息队列消息(当前库存工作单),过段时间自动解锁,解锁时先查询订单的支付状态。解锁成功修改库存工作单详情项状态为已解锁

    1、远程服务假失败:远程服务其实成功了,由于网络故障等没有返回导致:订单回滚,库存却扣减
    2、远程服务执行完成,下面的其他方法出现问题导致:已执行的远程请求,肯定不能回滚
    事务传播问题中,传播后事务设置还是原来的,如果不想用原来设置,必须new事务

    注意同类中调用的话,被调用事务会失效,原因在于aop。事务基于代理,同对象的方法动态代理都是同一个。解决方案是使用代理对象调用。引用aop-starter后,使用aspectJ,开启AspectJ动态代理,原来默认使用的是jdk动态代理。

    使用@EnableAspectJAutoProxy(exposeProxy=true)后,就取代了jdk动态代理。它没有接口也可以创建动态代理。设置true是为了对外暴露代理对象。
    AopContext.currentProxy()然后强转就是当前代理对象。

    解决远程宕机

  • 相关阅读:
    tracteroute路由追踪
    搭建Weblogic服务器
    Logview_pro破解版
    Spring Boot 如何在类中应用配置文件
    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
    springboot 项目中控制台打印日志以及每天生成日志文件
    springboot输出日志到指定目录,简单粗暴,springboot输出mybatis日志
    spring boot 发布成包所需插件
    spring注解
    Multicast注册中心
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14595576.html
Copyright © 2011-2022 走看看