采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
直接在请求抢分布式锁之前先进行判定,如果 前缀+用户id 没在缓存中,才可以抢分布式锁,并把用户存在缓存中设置有效期,这样一个用户只能在有效期内抢一次分布式锁,不需要令牌就可以防机器人刷票
我们的令牌还跟库存有相关,没令牌的就不能往后了。你这个设计的话,就算没票了,也一直可以有令牌,可以往后到抢票的逻辑里
那能不能直接用库存当令牌呢,先把所有库存量算出来,存到数据库,把库存用您说的令牌方式存到缓存中,然后一个人抢到锁后,可能买多个座位,成功购买后直接去修改缓存,买了多少座位就去减多少。然后设计一个策略,定期的去更新数据库,这样还可以保证票数的正确性,不会少卖
令牌没法做到精确,比如有些人下单了,排队中,但是后面取消排队了,这种情况就是消耗令牌,但没有出票,除非你再考虑各种不出票的情况,把令牌数再加回来。控制得越精确,消耗的计算就越多,性能就越差。
登录后可查看更多问答,登录/注册
最新版Spring3.0仿12306售票系统实战
1.0k 28
520 12
560 8
615 8
1.0k 7