zoukankan      html  css  js  c++  java
  • SpringBoot 事务与锁不能并存的问题

    这两天写了一个逻辑,需求大概是这样的, 客户有硬件下单与小程序下单,此时需要保证下单原子性和库存一致,

    因为是个单体项目,所以简单处理直接在Service添加synchronized,这样的话每个设备下单都要等到其他设备下完单

    才可以下单,效率很低,后面,在内部维护了一个静态map,存储设备序列号,锁对象为设备序列号,这样控制每个设备串行下单,

    不同设备并行下单.后面想着如果分布式部署,又会出问题,干脆一步到位,直接分布式锁.lock4j.

    介绍完毕.

    下面说一下遇到的问题.

    Jmeter并发测试,库存对账失败.查阅资料,想起SB,是通过动态代理实现事务的.

    下面说明两种失效的分析

    1.添加synchronized在方法上或者代码块上

      加在方法上,动态代理后直接忽略synchronized,

      加在代码块上,释放锁与动态代理的事务提交先后不一致

    2.使用分布式锁

      加在代码块上,释放锁与动态代理的事务提交先后不一致

       
  • 相关阅读:
    链表操作
    51nod1085-----01背包
    51nod1046快速幂取余
    51nod贪心算法入门-----任务分配问题
    51nod动态规划-----矩阵取数
    51nod贪心算法入门-----独木舟问题
    POJ2255二叉树
    POJ1182并查集
    POJ1384完全背包问题
    20162313_苑洪铭_ 第7周学习总结
  • 原文地址:https://www.cnblogs.com/xyzxy/p/15528804.html
Copyright © 2011-2022 走看看