当前位置: 首页 > news >正文

优惠卷业务超卖问题解决方案

问题背景

在在线教育业务中,因为功能的扩展刺激消费通常会有一个优惠卷的功能,当时这些优惠卷通常是限量的需要学员自助领取,在一些特定场景下会出现学员领取卷的总数量大于运营设置的卷的总数量,这就是超卖问题的现象,或许在这个创建下叫做“超领”可能更合适些。

产生原因

假设当前运营设置了10张优惠卷,前面9已经被抢完了,还是最后一张,但是此时有三个学员在相同时间下都做了领卷的操作,最终导致三个学员都领到卷了,导致领取总量大于发放总量。

解决方案

1.保证数据的原子性。添加发放总量 大于 以发放量的条件,保证多个在事务操作下数据的总量不会发生改变。

优点:代码改动量下,并且效果比较好,不会出现ABA的问题。(目前我们公司就是使用这个方案)

缺点:

  • 事务为了保证原子性,会在对这个优惠卷数据上行锁。
  • 在没有设置索引的时候可能会做全量扫描,效率上会变低。因此我们需要设置对应的有效索引防止走全表。
  • 在极端的情况下会更新失败,需要设置重试机制。当有多跟线程同时操作的时候,通过更新时回去行级锁来控制执行顺序,因为某些原因导致获取获取锁超时,最总导致更新失败。

2.悲观锁。通过synchronized对优惠卷id进行上锁,每次只有一个保证请求是串行的,执行速度比较慢,当时确实是最可靠的。

3.乐观锁。优点:保证了在请求的并行执行,在执行效率上是很高。

缺点:在请求大量的时候虽然都可以执行,但是最终只会有一个执行超过,在完成率上是比较低的。实现上通过版本号进行控制。在实现上是三者中最繁琐的。我们没有单独定义本号字段来做的,我们是使用更新时间做版本号的来实现的。

在极端情况下乐观锁会出现无法感知的超卖情况。但是对我们目前的业务场景不会造成影响。

极端的场景 (ABA):对总数不影响,导致可能会导致业务逻辑错误,保证数据的原子性就会存在这个问题。

时间线: 1. 线程A读到 version = 1, issued_count = 99 2. 线程B更新:issued_count = 100, version = 2 3. 线程C(退款)更新:issued_count = 99, version = 3 4. 线程A执行更新,version匹配成功!错误地认为数据没变
http://www.jsqmd.com/news/115299/

相关文章:

  • 采用DrissionPage批量采集抖音视频
  • 使用toaster开源库实现警告toast样式
  • 直接上干货。这次咱们聊聊怎么用Simulink搞个能打的单相逆变器双环控制模型。重点说几个实操细节,保准你照着做就能出波形
  • Caddy服务器入门自动HTTPS的现代Web服务器
  • 2025最新深圳到丽江、大理、海口、三亚搬家公司排行榜,附搬家费用明细 - 物流人
  • SSM校外实习管理平台6tu82(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • Open-AutoGLM部署性能提升300%的秘密:你不可不知的5项调优技术
  • 深圳到北京、天津、石家庄、唐山搬家公司排行榜,附搬家费用明细 - 物流人
  • NMN如何选择?2025 NMN权威榜:抗衰力与成分透明度双维PK,十大品牌谁登顶? - 资讯焦点
  • Open-AutoGLM requirements.txt 配置秘籍(仅限内部流传的3种高效写法)
  • ELK日志分析平台从零搭建到生产实践
  • 伺服驱动器中DSP与FPGA高效协同架构解析
  • 2025年12月最新汇总:全球主流激光雕刻机品牌性能评分与选购指南 - 资讯焦点
  • 2025最新深圳到郑州、济南、长沙、西安搬家公司排行榜,附搬家费用参考 - 物流人
  • requirements.txt配置踩坑实录,99%新手都会忽略的5个关键包
  • android studio2025.2.2汉化重大bug(附解决方案)
  • 交换机.路由器.防火墙-技术提升【7.8】
  • Home-Assistant智能家居平台搭建与远程控制
  • 我发现流加密处理慢后来才知道用crypto流式分块API
  • 成都到常州、温州、徐州、绍兴搬家公司排行榜,附搬家费用明细 - 物流人
  • 光伏板清关.轮胎反倾销清关.床垫清关.高尔夫球车清关 - 资讯焦点
  • 【Open-AutoGLM酒店比价实战】:揭秘AI驱动的实时价格监控系统核心技术
  • UI新手别踩坑!从6个案例读懂B端后台管理系统首页设计逻辑
  • 【稀缺实战资料】Open-AutoGLM对接vLLM全流程配置细节首次公开
  • PE重包装袋品牌口碑榜:这十款备受好评,目前PE重包装袋推荐排行榜单解决方案与实力解析 - 品牌推荐师
  • AI自动化新突破:Open-AutoGLM赋能外卖自动下单(全链路解析)
  • 五大高铁广告服务商横向评比:谁更值得选?机场广告/户外LED广告/公交站台广告/户外农村墙体/电梯门贴广告高铁广告公司推荐排行 - 品牌推荐师
  • 【稀缺技术曝光】:Open-AutoGLM量化压缩与内存复用的底层实现原理
  • Open-AutoGLM模型获取困局,一文破解Hugging Face下载权限与认证问题
  • 禁止过分投入2:夏日大排档 /Love Too Easily 2 Summer Pocha Build.20586137(6.9G) 免安装中文版游戏资源分享及攻略教程