阻塞队列
利用redis执行lua脚本完成库存余量,一人一单的判断
,完成抢单资格的判断
将能够下单的业务放入到阻塞队列中,利用独立线程进行异步下单。
(基于线程池创建新的线程)
阻塞队列实现的异步秒杀存在的问题
内存限制问题
阻塞队列基于jvm内存实现,有固定长度。
在高并发情况下容易内存溢出,
如果队列存储满,会造成新数据无法下单
数据安全问题
当系统崩溃,已经下单的队列还没有执行完成
,会造成数据丢失
。而且系统无法判定线程取出任务后是否执行成功
解耦很重要,可以提升效率