限购(一人一单)问题解剖及解决方案

news/2024/11/17 22:41:57/

目录

  • 限购问题
    • 问题:活动产品,每个用户购买不能超过1个?
    • 解决方案:Java锁(单机)
    • 解决方案:分布式锁(集群)
    • Redis实现分布式锁问题?
      • setnx
      • 锁超时释放
      • 使用 redisson 来实现分布式锁
  • 总结

限购问题

限购问题是生活中很常见的,如某某手机限购不能超过几台,商品搞活动时每人购买不能超过1件…
这种问题看似很简单,但一个处理不好,就会出现超买问题

问题:活动产品,每个用户购买不能超过1个?

在这里插入图片描述
线程1进来先校验A客户是否下单过,此时是没有,在还未来得及生成订单,线程2进来校验A客户是否下单过,由于线程1事务还未提交,所以线程2的校验是通过的,最终两个线程都能提交,导致超买了;

解决方案:Java锁(单机)

以客户和产品的维度来加锁,使校验和生成订单成为一个原子操作;

解决方案:分布式锁(集群)

分布式锁可以使用Redis、Zookeeper、数据库方式来实现;

Redis实现分布式锁问题?

setnx

设置redis锁时,避免程序挂了,使锁释放不了,需要设置过期时间;
为避免设置锁后还来不及设置过期时间就挂了,需要锁和过期时间同时设置;

锁超时释放

线程1获取锁后,执行的时间太久,锁提前失效了,线程2又获取到锁进来,之后线程1执行完了,释放锁,此时的锁是线程2的锁,由于线程1释放了锁,线程3又能进来了,此时需要判断是自己的锁才能释放;
由于线程2获取锁进来,线程1事务还没有提交,导致两个线程最终都能提交,此时需要判断是自己的锁才能释放并且提交事务,如果不是则进行回滚;

使用 redisson 来实现分布式锁

redisson解决的问题

  1. 可重入锁:在锁里面再上一次锁
  2. 重试获取锁:获取锁时设置一个超时时间,在这个时间内,如果锁被释放了,可以尝试再次获取
  3. 锁续时:业务执行时间过长时,锁自动续时
  4. 主从一致:redis在做主从时,从节点同步锁可能有点慢,主节点突然就挂了,由于从节点还未来得及同步锁,就被选为做主节点,其他线程再进来又能获取到锁;redisson多主多从机制解决,设置锁时向多主写,在加锁时需要每对主从节点都没有才能加锁成功

总结

限购问题需要先校验再生成一条新的数据,使用单纯的数据库乐观锁是解决不了的,这种场景就需要使用悲观锁来处理


http://www.ppmy.cn/news/440016.html

相关文章

住建部:享受经适房者禁购二套房

住建部:享受经适房者禁购二套房 核心提示:26日,住建部有关负责人表示将加强经适房管理。据悉,已享受经适房的家庭, 再购买其他住房须办理退出手续或补交价款取得完全产权;买卖、出租经适房须供住房保障部门出具的书面意…

天津再出新政 经适房限价房也可公积金贷款

2008年11月13日,本市公积金管理中心推出增加个人住房公积金贷款品种、放宽提取条件、推行住房公积金委托提取和简化业务办理手续四项新政,为购房者提供了更多便利。 新增两类贷款品种 从11月24日起,新增经济适用住房、限价商品住房两类住房公…

多城市近期将出台楼市限购细则 全面限购第三套

http://news.sohu.com/20110210/n279266702.shtml http://comment2.news.sohu.com/n279266702.html 搜狐手机网友 2011-02-10 16:55:10 149723958政策不知要怎样引导民众,农民进城不种地,现在农民不像农民种不来地,工人不像工人没稳定收入&…

上海成为50岁以上房东数量最多的中国城市,成都、青岛、重庆、杭州紧随其后...

北京2021年10月14日 /美通社/ -- 第七次全国人口普查数据显示,截至2020年,中国已有30个省份进入老龄化社会。中国老年人旅游消费金额已超过5000亿元。银发一族已成为不容忽视的消费主体,其中老年人旅游市场呈现一片蓝海。在中国,数…

限购设计

我们的限购是耦合在商品,当作商品和sku属性,而不是单独的限购模块。 限购需要在结算页及提交订单时进行校验。购物车和商品详情不校验历史,只校验当前加购数。 所以重点及难点在于下单,就以下单为例说明限购设计。 下单时&#xf…

青岛

(我们将只与选中的候选人联系,恕不一一通知) 地 址:青岛保税区北京路29号邮政编码:266555联 系 人:江女士电 话:(0532)86769686电子邮箱:qdcmhk263.net

青岛...

坐了一天一夜的火车,终于到了这座城市。看着火车上形形色色的人们,感觉到自己见识的浅薄,果然是行千里路,读万卷书啊。火车上有一群人好像是藏民,很黑,我不知道是不是紫外线的长久照射所造成的,…

购房新政:减免住房交易税 放宽还迁房上市条件

10月17日,国务院常务会议提出“加大保障性住房建设规模,降低住房交易税费,支持居民购房”的要求。为促进本市房地产市场健康发展,根据财政部、国家税务总局、中国人民银行有关文件精神,结合本市实际,经市政府同意,市建委、市国土房管局、市财政局、人民银行天津分行等部门,制定…