[发明专利]一种商品抢购请求分配方法有效
| 申请号: | 201910614812.8 | 申请日: | 2019-07-09 |
| 公开(公告)号: | CN110333951B | 公开(公告)日: | 2023-08-01 |
| 发明(设计)人: | 齐明;肖鹏 | 申请(专利权)人: | 北京首汽智行科技有限公司 |
| 主分类号: | G06F16/23 | 分类号: | G06F16/23;G06Q10/087;G06Q30/0601;G06F16/22;G06F9/50 |
| 代理公司: | 北京世誉鑫诚专利代理有限公司 11368 | 代理人: | 李世端 |
| 地址: | 100026 北京*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 商品 抢购 请求 分配 方法 | ||
本发明公开的商品抢购请求分配方法,涉及电子商务技术领域,通过根据商品的SKU,将商品库存拆分为多个商品单例并将多个商品单列分别以key‑value形式存储,从redis数据库中获取服务器的数量、各个商品单例的库存数量,计算各个服务器处理的商品抢购请求数量,根据商品抢购请求数量及服务器响应线程权重,为商品抢购请求重新分配服务器,避免了超卖及错卖的情况,保证了商品抢购的公平性,提升了用户体验。
技术领域
本发明属于电子商务技术领域,具体涉及一种商品抢购请求分配方法。
背景技术
目前,各个企业通过线上给客户发放优惠券,实现城市推广、渠道奖励、活动拉新、结算补偿等重要业务功能。优惠券作为一类商品,其抢购购买是重要的获取渠道,如何高效准确让用户获取优惠券成为程序设计需要重要解决的问题。
目前高并发下商品抢购场景解决办法如下:
对于高并发抢购场景库存超卖是首要解决的问题,基于悲观锁及队列可以解决但相对性能和并发能力有很大影响;基于redis的操作在高并发下频繁读写库存值容易导致服务器性能下降,降低系统并发处理能力;常规队列只能固定队列处理数量,不能对于业务场景配置,增大失败场景,降低了可用性及用户体验;基于多负载服务器的抢购处理逻辑由于应用在不同主机,导致用户请求存在数序不统一的问题,违背了先进先出的原则,使得抢购缺少公平性。
发明内容
针对现有技术存在的缺陷,本发明实施例提供了一种商品抢购请求分配方法,该方法包括以下步骤:
根据商品的库存量单位(Stock Keeping Unit,SKU),将商品库存拆分为多个商品单例并将所述多个商品单列分别以key-value形式存储;
从redis数据库中获取服务器的数量、各个商品单例的库存数量;
接收用户商品抢购请求,根据公式L=M÷N×K,计算各个服务器处理的商品抢购请求数量,其中,M为商品库存的数量、N为服务器的数量、K为服务器响应线程权重、L为服务器当前处理的商品抢购请求数量;
根据所述商品抢购请求数量及所述服务器响应线程权重,为所述商品抢购请求重新分配服务器。
优选地,在为所述商品抢购请求重新分配服务器之后,所述方法还包括:
利用jedis工具,对商品库存进行校验及销毁,以避免出现商品超卖及错卖的情况。
优选地,利用jedis工具,对商品库存进行校验及销毁包括:
根据被抢购商品单例的key值,确定redis分片的个数并根据redis的个数,计算被抢购商品单例的剩余库存数量;
根据先进先出原则并利用delete指令,逆向销毁被抢购商品单例的key值,使得能够更加有效地完成对商品库存的销毁。
优选地,商品单列的key值为5位补零整型字符编码。
其中,以固定长度保存的key值及value值的数据查询效率最高且可估算存储空间便于存储单元的扩展。
优选地,服务器响应线程权重为根据服务器的性能人为设定的,范围在0.1-1之间。
本发明实施例提供的商品抢购请求分配方法具有以下有益效果:
(1)基于百万日活用户商品抢购场景,保证了商品库存数量准确变化;
(2)基于百万日活用户商品抢购场景,在不同商品库存数量下以可变长度队列处理用户请求,提升了用户体验。
(3)基于百万日活用户商品抢购场景,在多负载服务器支持下,利用处理队列的先进先出属性,避免了超卖及错卖的情况,保证了商品抢购的公平性。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京首汽智行科技有限公司,未经北京首汽智行科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910614812.8/2.html,转载请声明来源钻瓜专利网。





