场景:下订单功能,商品总数10个。总人数1000人。在同一时间秒杀这10个商品。(这里只是用这个案例来说问题,并不是真实案例)
最开始只有一个站点。所以在下单功能的地方通过lock 进行加锁,即可保证10个商品只被10个用户秒杀到。
现在由于访问量增加,需要将站点部署到2台服务器上面。通过Nginx来进行负载均衡。这样就会带来一个问题。因为锁只对单个程序起作用,不能跨程序进行锁的操作。这样就可以会造成两个程序抢到同一个商品。
请问类似这样的情况如何防止抢到商品的总人数,大于商品的总数。
分布式锁实现那么多,从db上模拟到redis到zookeeper,原生的,加装的都有。
用消息队列处理,并行转串行
问题既然都发现 —— 你把锁置前不就完了