一种基于Swoole框架的秒杀方法及系统技术方案

技术编号:28841302 阅读:22 留言:0更新日期:2021-06-11 23:40
本发明专利技术公开了一种基于Swoole框架的秒杀方法,包括:S1、授权用户进入秒杀页面并缓存用户信息;S2、接受用户下单秒杀请求,检查用户秒杀memcached缓存,判断是否有缓存,如果是,将缓存中的秒杀结果返回给用户,如果否,则再查看库存,如果商品库存数量减去用户秒杀时秒杀库存小于0则返回,秒杀结束;S3、将秒杀数据打入redis队列进行消费;S4、等待消费结果,在延时后重新请求处理结果;(接口进行延时请求,设置接口延时多久,获取数据,设置的延时在2s)S5、获得处理结果后将处理结果同步返回给用户;S6、创建消费服务,消费服务后检查商品库存,判断是否消费成功,如果是,进行下单处理,如果否,则将秒杀失败的信息记录至用户秒杀memcached缓存中,秒杀结束。

【技术实现步骤摘要】
一种基于Swoole框架的秒杀方法及系统
本专利技术涉及网络开发
,具体来说,涉及一种基于Swoole框架的秒杀方法及系统。
技术介绍
随着电商的普及,在互联网平台购物已经成为了一种常见的现象,秒杀是一种以促销为目的的网上限时抢购的活动,允许多人实时在线抢购商品。目前主流的秒杀架构是“浏览器-站点-服务-数据”的模式,当大量的用户涌入站点时,网站的业务受到了大量并发的考验,而数据库的IO操作能力对于高并发量的数据请求操作时非常有限,因而这种操作存在技术瓶颈,因此很多系统会使用到消费队列来进行削锋异步处理来提高系统的性能,这样降低了系统的耦合性,但同时该系统的复杂性的增加和可用性的降低带来了数据传输的可靠性和一致性问题,因此如何正确有效地处理队列消费的数据结果是一个技术瓶颈。
技术实现思路
为解决现有技术中存在的问题,本专利技术提供一种基于Swoole框架的秒杀方法及系统,采用MicroSoft公司提供的OpenXml插件,基于Swoole框架的高性能异步并发协程的秒杀服务系统同时通过使用redis队列和memcached缓存技术来过滤掉大量请求数据,从而减少数据层的请求压力。为实现上述目的,本专利技术采用的技术方案是:一种基于Swoole框架的秒杀方法,包括以下步骤:S1、授权用户进入秒杀页面并缓存用户信息;S2、接受用户下单秒杀请求,检查用户秒杀memcached缓存,判断是否有缓存,如果是,将缓存中的秒杀结果返回给用户,如果否,则再查看库存,如果商品库存数量减去用户秒杀时秒杀库存小于0则返回,秒杀结束;S3、将秒杀数据打入redis队列进行消费;S4、等待消费结果,在延时后重新请求处理结果;S5、获得处理结果后将处理结果同步返回给用户;S6、创建消费服务,消费服务后检查商品库存,判断是否消费成功,如果是,进行下单处理,如果否,则将秒杀失败的信息记录至用户秒杀memcached缓存中,秒杀结束。在本技术方案中,检查用户秒杀memcached缓存进行加锁,目的是防止用户重复点击,进入到一个队列中;如果是,则代表用户对商品进行了秒杀下单;同一个商品,如果用户购买过,那么会在memcached缓存,就不再允许对此商品进行二次购买;将秒杀数据打入redis队列进行消费,滤掉大量请求数据,打入redis队列是因为redis读写很快,而不是通过接口请求来优化写入数据;创建消费服务,该服务的任务为不断地处理redis队列。该服务使用到了异步redis消费方式,即每一次的处理结果不会影响到下一次进行处理。客户端的处理和服务端的处理中,客户端是端口,服务端是服务模式,可以一直定时处理。在进一步的技术方案中,步骤S1包括:用户第一次授权进入秒杀页面时,将用户的地址信息记录至memcached缓存中。在本技术方案中,在memcached缓存,就不再允许对此商品进行二次购买。在进一步的技术方案中,步骤S2包括:根据用户秒杀memcached缓存是否有缓存判断用户是否对商品进行了秒杀下单。在本技术方案中,用户端接受用户下单秒杀请求,首先检查用户秒杀memcached缓存,防止用户重复点击;如果有缓存则代表用户对商品进行了秒杀下单,将缓存中的秒杀结果返回给用户,否则再查看库存,如果减去时秒杀库存小于0则返回秒杀结束。在进一步的技术方案中,步骤S3包括:所述秒杀数据为用户发起秒杀的申请数据;将秒杀数据打入redis队列进行消费后并存储至redis队列。在本技术方案中,不断地处理redis队列,每一次的处理结果不会影响到下一次进行处理。消费后检查商品库存,如果消费成功则进行下单处理,否则将秒杀失败的信息记录至用户秒杀memcached缓存中。在进一步的技术方案中,步骤S4包括:延时时间为2s。在本技术方案中,用户端进行等待,在延时2s后重新请求,获得处理结果后将结果同步返回给用户,接口进行延时请求,设置接口延时多在2s。在进一步的技术方案中,步骤S5包括:同步返回给用户后进行对比。在本技术方案中,将商品信息和库存提前加入memcached缓存中。在进一步的技术方案中,步骤S6包括:消费服务使用异步redis的消费方式。在本技术方案中,服务使用到了异步redis消费方式,即每一次的处理结果不会影响到下一次进行处理。本专利技术还提供了一种基于Swoole框架的秒杀系统,系统包括用户模块和服务模块,其中:用户模块,用于授权用户进入秒杀页面并缓存用户信息,用于接受用户下单秒杀请求;服务模块,用于处理大量用户秒杀请求,过滤掉不符合条件的请求,同时处理小部分秒杀成功的请求并进行下单处理。本技术方案的原理为:用户模块用于使用缓存数据向用户展示各种商品信息以及秒杀活动的入口或者秒杀结果;服务模块用于处理大量用户秒杀请求,过滤掉大量不符合条件的请求,同时处理小部分秒杀成功的请求并进行下单处理。在进一步的技术方案中,用户模块包括查看商品信息单元和下单参与秒杀单元,其中:查看商品信息单元,用于接受用户下单秒杀请求,检查用户秒杀memcached缓存,判断是否有缓存,如果是,将缓存中的秒杀结果返回给用户,如果否,则再查看库存,如果商品库存数量减去如果商品库存数量减去用户秒杀时秒杀库存小于0则返回,秒杀结束;下单参与秒杀单元,用于将秒杀数据打入redis队列进行消费。在本技术方案中,使用缓存,加快了接口访问速率,优化了用户端的用户使用体验。在进一步的技术方案中,服务模块包括Swoole服务运行单元、异步redis队列处理单元和memcached信息缓存单元,其中:Swoole服务运行单元,用于等待消费结果,在延时后重新请求处理结果;异步redis队列处理单元,用于获得处理结果后将处理结果同步返回给用户;memcached信息缓存单元,用于创建消费服务,消费服务后检查商品库存,判断是否消费成功,如果是,进行下单处理,如果否,则将秒杀失败的信息记录至用户秒杀memcached缓存中,秒杀结束。在本技术方案中,服务层服务器快速地处理了大量用户端的请求,同时减少了数据层服务器的CPU消耗,同时也达到了快速响应用户端请求的目的。本专利技术的有益效果是:(1)使用缓存,加快了接口访问速率,优化了用户端的用户使用体验;(2)服务层服务器快速地处理了大量用户端的请求,减少了数据层服务器的CPU消耗,达到了快速响应用户端请求的目的;(3)基于Swoole框架的高性能异步并发协程的秒杀服务系统,同时通过使用memcached高速缓存技术和swoole中的异步redis消费队列技术;(4)能够过滤掉大量请求数据,从而减少数据层的请求压力;(5)在异步消费队列中存在回调,该回调判断处理结果,如果出现异常则在处理回调中进行数据自动回滚,从而保证了数据传输处理的可靠性。附图说明图1是本专利技术所述的一种基于本文档来自技高网...

【技术保护点】
1.一种基于Swoole框架的秒杀方法,其特征在于,包括以下步骤:/nS1、授权用户进入秒杀页面并缓存用户信息;/nS2、接受用户下单秒杀请求,检查用户秒杀memcached缓存,判断是否有缓存,如果是,将缓存中的秒杀结果返回给用户,如果否,则再查看库存,如果商品库存数量减去用户秒杀时秒杀库存小于0则返回,秒杀结束;/nS3、将秒杀数据打入redis队列进行消费;/nS4、等待消费结果,在延时后重新请求处理结果;/nS5、获得处理结果后将处理结果同步返回给用户;/nS6、创建消费服务,消费服务后检查商品库存,判断是否消费成功,如果是,进行下单处理,如果否,则将秒杀失败的信息记录至用户秒杀memcached缓存中,秒杀结束。/n

【技术特征摘要】
1.一种基于Swoole框架的秒杀方法,其特征在于,包括以下步骤:
S1、授权用户进入秒杀页面并缓存用户信息;
S2、接受用户下单秒杀请求,检查用户秒杀memcached缓存,判断是否有缓存,如果是,将缓存中的秒杀结果返回给用户,如果否,则再查看库存,如果商品库存数量减去用户秒杀时秒杀库存小于0则返回,秒杀结束;
S3、将秒杀数据打入redis队列进行消费;
S4、等待消费结果,在延时后重新请求处理结果;
S5、获得处理结果后将处理结果同步返回给用户;
S6、创建消费服务,消费服务后检查商品库存,判断是否消费成功,如果是,进行下单处理,如果否,则将秒杀失败的信息记录至用户秒杀memcached缓存中,秒杀结束。


2.根据权利要求1所述的一种基于Swoole框架的秒杀方法,其特征在于,所述步骤S1包括:
用户第一次授权进入秒杀页面时,将用户的地址信息记录至memcached缓存中。


3.根据权利要求1所述的一种基于Swoole框架的秒杀方法,其特征在于,所述步骤S2包括:
根据用户秒杀memcached缓存是否有缓存判断用户是否对商品进行了秒杀下单。


4.根据权利要求1所述的一种基于Swoole框架的秒杀方法,其特征在于,所述步骤S3包括:
所述秒杀数据为用户发起秒杀的申请数据;
将秒杀数据打入redis队列进行消费后并存储至redis队列。


5.根据权利要求1所述的一种基于Swoole框架的秒杀方法,其特征在于,所述步骤S4包括:
延时时间为2s。


6.根据权利要求1所述的一种基于Swoole框架的秒杀方法,其特征在于,所述步骤S5包...

【专利技术属性】
技术研发人员:杨雨奇
申请(专利权)人:成都环宇知了科技有限公司
类型:发明
国别省市:四川;51

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

1