乐观锁的幂等性方案

那么为了使用乐观锁,我们首先修改t_goods表,增加一个version字段,数据默认version值为1

 

 

乐观锁方案

借鉴数据库的乐观锁机制,如:
 update t_goods set count = count -1 , version = version + 1 where good_id=#{id} and version = 1

 

根据version版本,也就是在操作库存前先获取当前商品的version版本号,然后操作的时候带上此version号。我们梳理下,我们第一次操作库存时,得到version为1,调用库存服务version变成了2;但返回给订单服务出现了问题,订单服务又一次发起调用库存服务,当订单服务传如的version还是1,再执行上面的sql语句时,就不会执行;因为version已经变为2了,where条件就不成立。这样就保证了不管调用几次,只会真正的处理一次。
posted @ 2019-11-25 09:12  不死码农  阅读(999)  评论(0编辑  收藏  举报