一种处理高并发秒杀活动的方法技术

技术编号:20797053 阅读:78 留言:0更新日期:2019-04-06 10:39
一种处理高并发秒杀活动的方法,具体步骤如下:步骤一:在高并发系统进行初始化时,从数据库中查询出秒杀活动的数据,加载到Redis缓存中;步骤二:选择性响应秒杀请求并发;步骤三:预减库存,当高并发系统收到秒杀请求时,减少Redis缓存中秒杀活动的数据,当秒杀活动的数据量减少到0时,直接返回秒杀结束的信息;步骤四:高并发系统判断商品是否已经秒杀成功,若是,则返回不能重复秒杀的信息;若不是,则将秒杀请求进入RabbitMQ消息队列,进行异步下单,并立即返回秒杀活动的排队队列中;步骤五:秒杀请求从RabbitMQ消息队列中出来,并生成商品订单并更新秒杀活动的数据。本发明专利技术的减少对数据库的访问,从而减轻数据库的压力,实现系统对高并发的支持。

A Method for Handling High Concurrent Secondkill Activities

A method for dealing with high concurrent secondkill activity is as follows: step 1: query the data of high concurrent system when initializing, and load it into Redis cache; step 2: selectively respond to concurrent secondkill request; step 3: pre-reduce inventory, reduce the data of secondkill activity in Redis cache when high concurrent system receives secondkill request Step 4: High concurrent system determines whether the product has succeeded in killing seconds, and if not, it returns information that cannot be repeated; if not, it enters the Rabbit MQ message queue, orders asynchronously, and immediately returns to the queue of killing seconds; Step 5: Secondary killing request. Out of the RabbitMQ message queue, generate merchandise orders and update the secondkill activity data. The invention reduces the access to the database, thereby reducing the pressure of the database and realizing the support of the system for high concurrency.

【技术实现步骤摘要】
一种处理高并发秒杀活动的方法
本专利技术涉及计算机技术及软件领域,尤其涉及一种处理高并发秒杀活动的方法。
技术介绍
高并发是目前电商网站常见的营销手段,当大量用户同一时间同时进行抢购时,会导致网站瞬间的并发量非常大,进而使得业务逻辑非常简单的秒杀活动在技术层面上面临着巨大的考验。而最大的瓶颈在于数据库的IO操作,数据处理并发的能力有限,在应对大量并发请求时,数据库无法支撑巨大的压力。
技术实现思路
本专利技术的目的在于针对
技术介绍
中的缺陷,提出一种处理高并发秒杀活动的方法,通过使用redis缓存和RabbitMQ消息队列,来减少对数据库的访问,从而减轻数据库的压力,实现系统对高并发的支持。为达此目的,本专利技术采用以下技术方案:一种处理高并发秒杀活动的方法,具体步骤如下:步骤一:在高并发系统进行初始化的时候,从数据库中查询出秒杀活动的数据,并加载到Redis缓存中;步骤二:进行内存标记,选择性响应秒杀请求并发;步骤三:预减库存,当高并发系统收到秒杀请求时,减少Redis缓存中秒杀活动的数据,当秒杀活动的数据量减少到0时,直接返回秒杀结束的信息;步骤四:高并发系统判断商品是否已经秒杀成功,若是,则返回不能重复秒杀的信息;若不是,则将秒杀请求进入RabbitMQ消息队列,进行异步下单,并立即返回秒杀活动的排队队列中;步骤五:秒杀请求从RabbitMQ消息队列中出来,并生成商品订单并更新秒杀活动的数据。优选的,在所述步骤一中,高并发系统初始化时,将秒杀活动的数据,加载到Redis缓存中,秒杀活动数据包括但不限于秒杀商品的库存数据,秒杀请求直接访问Redis缓存但不访问数据库。优选的,在所述步骤二中,存在大量的秒杀请求并发时,高并发系统选择部分秒杀请求并发进行响应,对于没有响应的秒杀请求并发,返回秒杀失败的信息。优选的,在所述步骤三中,高并发系统收到秒杀请求时,首先减少Redis缓存中的秒杀活动数据,秒杀活动数据包括但不限于秒杀商品的库存数据,当Redis缓存中的秒杀活动数据减少至0时,将秒杀活动的数据同步到数据库中,并返回秒杀结束的信息。优选的,在所述步骤四中,使用RabbitMQ消息队列进行异步下单,当Redis缓存中的秒杀活动数据减少至0时,秒杀请求进入RabbitMQ消息队列,并返回秒杀活动的排队队列中。有益效果:1、使用Redis缓存和RabbitMQ消息队列,减少对数据库的访问,从而减轻数据库压力,实现系统对高并发的支持;2、通过将Redis缓存中的数据同步到数据库中,保证数据的正确性,并减少对Redis缓存的访问;3、通过RabbitMQ消息队列同步数据到数据库,不直接更新数据库,并立即返回用户信息,无须等待数据库处理完成后再返回处理结果,极大提升用户体验度。附图说明图1是本专利技术的流程图。具体实施方式下面结合附图并通过具体实施方式来进一步说明本专利技术的技术方案。本实施例的一种处理高并发秒杀活动的方法,具体步骤如下:如图1中的S1所示,步骤一:在高并发系统进行初始化的时候,从数据库中查询出秒杀活动的数据,并加载到Redis缓存中;在所述步骤一中,高并发系统初始化时,将秒杀活动的数据,加载到Redis缓存中,秒杀活动数据包括但不限于秒杀商品的库存数据,秒杀请求直接访问Redis缓存但不访问数据库。在初始化的时候,将秒杀活动的数据加载到Redis缓存中,但不是全部的秒杀活动的数据,在本实施例中,秒杀活动的数据包括但不限于秒杀商品的库存数据,由于Redis缓存的运算速度比数据库快,因此秒杀请求可以直接访问Redis缓存并进行库存的判断等操作,秒杀请求并不会去访问数据库,从而极大提升高并发系统的并发性能,减少对数据库的访问,减轻数据库的压力。如图1中的S2所示,步骤二:进行内存标记,选择性响应秒杀请求并发;在所述步骤二中,存在大量的秒杀请求并发时,高并发系统选择部分秒杀请求并发进行响应,对于没有响应的秒杀请求并发,返回秒杀失败的信息。通过判断商品是否已经秒杀结束,来减少对Redis的访问,过滤掉后续无用的秒杀请求,例如例如10个商品已经秒杀结束,后续所有请求将直接返回秒杀失败,不再进行后续操作,减少对网络的开销,同时并不是所有的秒杀请求并发,高并发系统都会一一响应,只会选择性的响应一部分,对于其他不响应的秒杀请求并发,则会返回秒杀失败的信息,大大减少了对Redis缓存的访问。如图1中的S3所示,步骤三:预减库存,当高并发系统收到秒杀请求时,减少Redis缓存中秒杀活动的数据,当秒杀活动的数据量减少到0时,直接返回秒杀结束的信息;在所述步骤三中,高并发系统收到秒杀请求时,首先减少Redis缓存中的秒杀活动数据,秒杀活动数据包括但不限于秒杀商品的库存数据,当Redis缓存中的秒杀活动数据减少至0时,将秒杀活动的数据同步到数据库中,并返回秒杀结束的信息。当高并发系统受到秒杀请求后,是先减少Redis缓存中的秒杀活动的数据,在本实施例中,秒杀活动的数据包括秒杀商品的库存数据,当库存数据减少到0时,Redis缓存将数据同步到数据库中,保证实际数据在数据库中,而不能保存在Redis缓存中,但由于数据库运算速度太慢,支持不了秒杀活动,因此选择将秒杀活动在Redis缓存中进行,后续再将数据同步到数据库中。如图1中的S4所示,步骤四:高并发系统判断商品是否已经秒杀成功,若是,则返回不能重复秒杀的信息;若不是,则将秒杀请求进入RabbitMQ消息队列,进行异步下单,并立即返回秒杀活动的排队队列中;在所述步骤四中,使用RabbitMQ消息队列进行异步下单,当Redis缓存中的秒杀活动数据减少至0时,秒杀请求进入RabbitMQ消息队列,并返回秒杀活动的排队队列中。在步骤三中,由于当Redis缓存中的秒杀活动数据减少到0时,会将数据同步到数据库中,便是采用步骤四的RabbitMQ消息队列进行同步,使用RabbitMQ消息队列进行异步下单,当Redis缓存的库存数据扣减成功后,秒杀请求进入RabbitMQ消息队列,返回前端排队中,而不是直接更新数据库的操作。此做法的优点在于用户点击秒杀按钮后能立即收到响应,然后再进行数据库读写操作,而无须等待数据库处理完成后再返回处理结果,极大提升用户体验度。如图1中的S5所示,步骤五:秒杀请求从RabbitMQ消息队列中出来,并生成商品订单并更新秒杀活动的数据。同时的,由于RabbitMQ消息队列同步数据到数据库需要时间,因此采用异步下单的方式,即用户看到秒杀成功的提升后,但是在订单中却看不到该秒杀成功的订单,要过一段时间,等RabbitMQ消息队列同步数据成功后,才能看到订单。以上结合具体实施例描述了本专利技术的技术原理。这些描述只是为了解释本专利技术的原理,而不能以任何方式解释为对本专利技术保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本专利技术的其它具体实施方式,这些方式都将落入本专利技术的保护范围之内。本文档来自技高网...

【技术保护点】
1.一种处理高并发秒杀活动的方法,其特征在于:具体步骤如下:步骤一:在高并发系统进行初始化的时候,从数据库中查询出秒杀活动的数据,并加载到Redis缓存中;步骤二:进行内存标记,选择性响应秒杀请求并发;步骤三:预减库存,当高并发系统收到秒杀请求时,减少Redis缓存中秒杀活动的数据,当秒杀活动的数据量减少到0时,直接返回秒杀结束的信息;步骤四:高并发系统判断商品是否已经秒杀成功,若是,则返回不能重复秒杀的信息;若不是,则将秒杀请求进入RabbitMQ消息队列,进行异步下单,并立即返回秒杀活动的排队队列中;步骤五:秒杀请求从RabbitMQ消息队列中出来,并生成商品订单并更新秒杀活动的数据。

【技术特征摘要】
1.一种处理高并发秒杀活动的方法,其特征在于:具体步骤如下:步骤一:在高并发系统进行初始化的时候,从数据库中查询出秒杀活动的数据,并加载到Redis缓存中;步骤二:进行内存标记,选择性响应秒杀请求并发;步骤三:预减库存,当高并发系统收到秒杀请求时,减少Redis缓存中秒杀活动的数据,当秒杀活动的数据量减少到0时,直接返回秒杀结束的信息;步骤四:高并发系统判断商品是否已经秒杀成功,若是,则返回不能重复秒杀的信息;若不是,则将秒杀请求进入RabbitMQ消息队列,进行异步下单,并立即返回秒杀活动的排队队列中;步骤五:秒杀请求从RabbitMQ消息队列中出来,并生成商品订单并更新秒杀活动的数据。2.根据权利要求1所述一种处理高并发秒杀活动的方法,其特征在于:在所述步骤一中,高并发系统初始化时,将秒杀活动的数据,加载到Redis缓存中,秒杀活动数据包括但不限于秒杀商品...

【专利技术属性】
技术研发人员:黄伟基吴金军王长江曹景成陈伟杰黄俊杰
申请(专利权)人:广东鸭梨科技集团股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1