再聊分布式锁
[toc]
今天我们来聊聊分布式锁。
使用场景
首先,我们看这样一个场景:客户下单的时候,我们调用库存中心进行减库存,那我们一般的操作都是
update store set num = $num where id=$id
这种通过设置库存的修改方式,我们知道在并发量高的时候会存在数据库的丢失更新,比如a,b当前两个事务,查询出来的库存都是5,a买了3个单子要把库存设置为2,而b买了1个单子要把库存设置为4,那这个时候就会出现a会覆盖b的更新,所以我们更多的都是会加个条件
update store set num = $num where id=$id and num=$query_num
即乐观锁的方式来处理,当然也可以通过版本号来处理乐观锁,都是一样的,但是这是更新一个表,如果我们牵扯到多个表呢,我们希望和这个单子关联的所有的表同一时间只能被