秒杀事务高并发所产生的问题及解决方案
秒杀业务高并发产生的问题
问题一:超卖问题
解决方式一:采用乐观锁
采用乐观锁, watch 监视库存, 同时将秒杀操作采用事务管理,解决超卖问题,不过会存在库存遗留问题
缺点: 采用乐观锁方式会存在库存遗留问题
解决方式二: 采用LUA脚本
1.1 LUA脚本介绍
LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成redis事务性的操作,redis2.6以上版本可以使用,利用lua脚本淘汰用户,解决超卖问题,
1.2 特点
通过lua脚本解决争抢问题,实际上是redis利用其单线程的特性,用任务队列的方式解决多任务并发问题
问题二:由于有些连接等待时间过长会出现连接超时的问题
解决方案
通过pool2数据库连接池管理连接,解决连接等待超时的问题