超卖问题之“悲观锁” or “乐观锁”

1. 什么是悲观锁?

悲观锁是一种并发控制机制,假设并发访问会发生冲突,因此在访问共享资源之前先获取锁,阻塞其他线程的访问。它适用于对共享资源的读写操作频率较高、冲突概率较大的场景,但性能相对较低且可能导致死锁。

2. 什么是乐观锁?

乐观锁是一种并发控制机制,它假设并发访问不会发生冲突,因此不会阻塞其他线程的访问。在乐观锁中,线程在访问共享资源之前不会获取锁,而是在更新共享资源时进行检查,如果发现其他线程已经更新了该资源,则会进行相应的处理(如重试或回滚)。乐观锁适用于对共享资源的冲突概率较低、读操作频率较高的场景,它具有较高的并发性能,但需要处理并发冲突的情况。

3. 为什么会出现超卖问题?

  • 超卖问题在电商、票务等领域经常出现,其主要原因是并发操作下的资源竞争和不一致性。
  1. 并发操作:当多个用户同时进行购买或预订等操作时,系统需要对资源进行并发处理。这会导致多个操作同时读取资源的可用数量,而不是等待其他操作完成后再进行判断。

  2. 资源竞争:多个用户同时竞争有限的资源,如库存、座位等。如果没有合适的并发控制机制,多个用户可能会同时判断资源可用,从而导致资源被超卖。

  3. 不一致性:由于网络延迟、系统负载等原因,多个操作可能在不同的时间完成,而不是按照顺序执行。这可能导致某些操作在判断资源可用后,实际上资源已经被其他操作占用或销售。

  • 解决超卖问题的方法包括:
  1. 悲观锁:在购买或预订时使用悲观锁,即在访问资源前先获取锁,阻塞其他用户,确保同一时间只有一个用户可以操作资源。

  2. 乐观锁:在购买或预订时使用乐观锁,即在更新资源时进行冲突检测,如果发现资源已被占用,则进行相应处理,如重试或回滚,常用的乐观锁方案为版本号法和类版本号法。

  3. 限流控制:通过设置系统的并发访问限制,限制同时访问资源的用户数量,从而减少资源竞争和超卖问题。

  4. 库存预留:在用户下单或预订时,先将资源进行预留,只有在支付或确认后才真正扣减资源,避免多个用户同时判断资源可用导致超卖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kkuil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值