一款短时间高并发抢购场景运用的制作方法

文档序号:13513727阅读:1092来源:国知局

本发明涉及互联网技术领域,尤其涉及一种实现短时间高并发抢购运用法。

在目前的电商企业中,由于售后服务专员的考核指标主要通过工作量进行衡量,进而为了能够提高其自身的考核指标,售后服务专员会在售后服务系统中争抢售后服务申请数据进行审核和处理。在售后服务系统中,售后服务申请数据的领取属于一种抢占模式,这就要求售后服务系统的领取环节必须支持短时间高并发处理。

抢购太火爆有时引起站点打不开,崩溃了;还有就是卖出的数量比设置可购买的数量要多。我们可以试想一下抢购时哪些页面会请求最多。抢购之前人们通常会通常刷页面等待,一般在抢购开始前一点时间会频繁刷新抢购倒数的页面或购买详情页面。抢购开始以后前一段时间下单的人会很多。付款并发量相对较小,通常订单在下单后几小时内都能付款,缓解了并发压力。

现有技术中的缺陷表现在如下几个方面:

1在高并发的运用场景下,现有技术方案容易发生数据库死锁,如果死锁处理不好的话容易导致数据库崩溃,进而导致系统无法使用等严重后果;

2并发性能差,用户体验不好,往往在客户端发起领取请求后,要数秒之后才能返回结果。

本发明一款短时间高并发抢购场景运用主要采用以下技术方案:

1.引入redis做存,从所述redis缓存获取所述待处理数据,并对所述待处理数据进行处理,将处理后的结果数据发送到消息队列;监听所述消息队列,并从所述消息队列中获取所述结果数据,并将所接收的结果数据持久化到所述数据库;删除所述redis缓存中的所述待处理数据。

2.在用户抢购开始前频繁刷页面时,系统只从缓存中取商品数据,解耦了数据库查询的压力;用于进行所述数据信息和处理后的结果数据的存储;redis缓存,用于保存所述数据信息中的待处理数据;第一服务模块,用于接收客户端发送来的数据信息,创建数据库连接,并开启数据库事务,将所述数据信息持久化到所述数据库,将所述数据信息中的待处理数据写入所述redis缓存,之后提交数据库事务;数据处理模块,用于从所述redis缓存获取所述待处理数据,并对所述待处理数据进行处理,将处理后的结果数据发送到消息队列;第二服务模块,用于监听所述消息队列,并从所述消息队列中获取所述结果数据,并将所接收的结果数据持久化到所述数据库,之后删除所述redis缓存中的所述待处理数据。

3.用户下单时系统只把订单数据存入订单缓存队列后然后告诉用户你的订单正在处理。然后由redispub/sub服务通知web服务器,服务器把库存订单进行串行化处理,解耦数据库并发下单压力,保证库存可靠。将所述待处理数据写入redis缓存时,是将所述待处理数据写入所述存储队列list中;从所述redis缓存获取所述待处理数据,并对所述待处理数据进行处理时,是从所述存储队列list中取出所述待处理数据以进行处理,将处理后的结果数据转存到与所述list相对应的completelist中。然后由redispub/sub服务通知web服务器,服务器把库存订单进行串行化处理,解耦数据库并发下单压力,保证库存可靠。

本发明一款短时间高并发抢购场景运用有益效果:

抢购太火爆有时引起站点打不开,崩溃了;还有就是卖出的数量比设置可购买的数量要多。那么问题来了:我们如何在设计中如何解决。通常我们需要从设计中考虑以下问题:对高并发,我们如何解耦后端压力,特别是数据库的压力。何保障库存可靠。

1、当抢购时哪些页面会请求最多;抢购之前人们通常会通常刷页面等待,一般在抢购开始前一点时间会频繁刷新抢购倒数的页面或购买详情页面。抢购开始以后前一段时间下单的人会很多。付款并发量相对较小,通常订单在下单后几小时内都能付款,缓解了并发压力。针对以上问题及场景,我们做了以下处理,增加限时购缓存订单系统,去支持限时购高并发处理,并保持限时购业务的可靠性。

2、针对问题做了如下改进:

(1)引入redis做缓存;

(2)在用户抢购开始前频繁刷页面时,系统只从缓存中取商品数据,解耦了数据库查询的压力;

(3)用户下单时系统只把订单数据存入订单缓存队列后然后告诉用户你的订单正在处理。然后由redispub/sub服务通知web服务器,服务器把库存订单进行串行化处理,解耦数据库并发下单压力,保证库存可靠;

(4)支付功能保持原来实现不变。

本发明一款短时间高并发抢购场景运用的具体实施方式:

1、买家前端查询限时购商品数据时只走缓存;

2、卖家后台更新限时购或库存信息时需同步更新数据库及缓存;

3、系统为每个正在开卖的限时购商品库存创建锁,买家对某库存下单时锁住该库存的下单操作,每一个商品库存只允许一个会员下单,下单的订单数据直接加入订单缓存后告诉买家[您的订单正在处理,请稍等]。然后通过redispub/sub服务通知服务器处理订单,将订单按库存串行化处理,订单处理完成后,则更新限时购订单缓存的处理状态;

4、买家得知订单正在处理后,则不断查询缓存的订单处理状态。直到获取订单处理结果,下单成功则进行支付页面,失败则提示失败原因并引导买家重新下单;

5、最后就是在web服务启动时,需要对限时购订单缓存系统初始化,把商品数据加入缓存中,并处理上次未处理完成的订单。

一款短时间高并发抢购场景运用;对于整个的数据处理过程来说,一方面增强了数据的并发性处理,能够较快的完成数据的处理,不需要客户较长时间的等待,给客户带来良好的体验,另一方面,也避免了高并发情况下给数据库带来的瓶颈问题,避免数据库死锁的问题,也确保了数据的一致性和完整性。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。(一种数据处理方法和系统)。



技术特征:

技术总结
本发明公开了一款短时间高并发抢购场景运用,包括:1.引入Redis做存。2.在用户抢购开始前频繁刷页面时,系统只从缓存中取商品数据,解耦了数据库查询的压力。3.用户下单时系统只把订单数据存入订单缓存队列后然后告诉用户你的订单正在处理。然后由RedisPub/Sub服务通知Web服务器,服务器把库存订单进行串行化处理,解耦数据库并发下单压力,保证库存可靠。4.支付功能保持原来实现不变。本发明增强了数据的并发性处理,给客户带来良好的体验,避免了高并发情况下给数据库带来的瓶颈问题,避免数据库死锁的问题,确保了数据的一致性和完整性。

技术研发人员:杨治国
受保护的技术使用者:湖南易分销电子商务有限公司
技术研发日:2016.07.11
技术公布日:2018.01.19
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1