1.超卖
分布式锁:
入门级别:
问题:容易死锁;系统宕机,用trycatchfinally都解决不了。
加个超时expire?
还是有问题:expire+setnx
仍有问题:线程1可能把线程2的锁删了
问题:正准备判断是不是自己锁的时候,卡顿了一下
方法:最后两行原子性执行
源码:lua脚本
zokeeper:
过半的分布式锁同步成功了,客户端才会进行。
数据一致性比redis好。
redlock:
缓存数据库双写不一致问题
解决方法:
问题:线程2应该是正确的值,却被线程三3修改了。
解决方法:
延迟双删:
问题:一定程度上解决这个问题,也会降低吞吐量。
内存队列:
对同一个商品的增删该茶放到队列串行化?
问题:要开很多内存队列,进行路由。很复杂。
解决方法:
分布式锁: