一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现积分抢货功能的方法及系统与流程

2022-05-21 14:26:00 来源:中国专利 TAG:


1.本发明涉及电子商务技术领域,具体地说是一种实现积分抢货功能的方法及系统。


背景技术:

2.目前基于数据库实现的积分抢货功能,由于大量请求直接访问数据库,容易造成请求堆积将数据库链接占满,致使其他业务无法访问数据库而导致系统崩溃。


技术实现要素:

3.本发明的技术任务是针对以上不足之处,提供一种实现积分抢货功能的方法及系统,能够处理积分抢货业务中出现的数据访问高峰,解决数据库链接占用问题,减少积分抢货业务对整个系统的冲击。
4.本发明解决其技术问题所采用的技术方案是:
5.一种实现积分抢货功能的方法,使用缓存技术与队列技术实现用户使用在电子商务平台积攒的积分参与平台设置的兑换活动,包括活动设置、服务调用方设置、网关层设置和服务层设置;
6.所述活动设置,设置活动物料表,用于存放兑换活动中所使用的商品与库存信息,并随着活动结束而失效;活动规则信息存入活动规则表,根据规则表中的信息判断用户是否有参与资格;
7.服务调用方设置用于防止重复提交和前置判断;
8.网关层设置用于拦截、放行,以及对抢货接口的限流,处理异常问题时的熔断;
9.服务层设置包括根据条件判断是否满足抢货条件、扣减库存、扣减积分、更新兑换累加数量、订单生成和异常处理。
10.本方法使用缓存与队列技术降低积分抢货业务中出现的数据访问高峰,减少积分抢货业务对整个系统的冲击,同时提高积分兑换业务的稳定性和准确性,让整个业务平稳进行,数据有效落盘,客户及时获知兑换业务结果。
11.优选的,所述活动设置,在上架活动时,将活动所需商品详情及数量单独存入活动物料表,并将库存信息缓存入redis,设置为长期有效;
12.修库存时需要更新redis中的库存数;
13.活动下架后删除redis库存。
14.进一步的,活动物料表商品、库存与商品表、库存表信息不冲突,商品、库存表信息为普通销售过程所使用的商品与库存信息,物料表则为兑换活动中所使用的商品与库存信息,是临时性的,随着活动结束而失效。如果需要产生联系则可以在物料设置时在库存表扣减对应数量的库存,当活动结束时将没有卖完的库存量回退到库存表中,从而使活动物料表与商品表、库存表产生联系。
15.优选的,活动规则信息包括参与活动的限制性信息,如:活动开始结束时间、商品
兑换个数限制、参与者类型限制、参与者级别限制;
16.活动规则信息存入活动规则表,后续根据规则表中的信息判断用户是否有参与资格;
17.可通过添加用户商品兑换量累计表,大数据通过汇总业务表数据,得到用户活动商品周、月、总兑换量汇总数据,此类规则通过大数据汇总后回写mysql。
18.优选的,所述服务调用方设置包括:
19.页面静态化:把兑换商品详情页做成静态页面,把商品参数信息包括商品详情及价格全部放在静态页面里,然后上传到cdn上预热,这样大量的商品详情页访问请求不用访问源站;
20.防止重复提交:前端页面相关按钮点击后置灰,防止重复提交;根据接口返回的结果和活动规则判断是否让用户可以继续点击抢货;
21.前置判断:如果活动已经结束或库存为0则不再调用接口/限量。
22.优选的,所述网关层设置包括:
23.拦截:对黑名单ip/用户拦截;为防止前端恶意请求、攻击脚本,在网关层对接口按userid限制访问次数;
24.放行:根据抢货商品的库存数放行请求,超过库存个数的请求直接返回抢货失败;
25.限流:根据现有的服务集群估算能够处理的最大请求数,对抢货接口限流;
26.熔断:服务接口出现紧急问题无法正确提供服务时熔断,包括数据库长时间锁表、数据异常错误及流量攻击,处理完异常问题后恢复服务。
27.优选的,服务层设置包括:校验、扣减redis库存、扣减积分、更新兑换累加数量、订单生成和异常处理,
28.所述校验完成抢货所需判断,包括店铺相关内容、活动相关内容和兑换数量相关内容,根据条件判断,如果不满足条件则返回对应信息;
29.所述扣减redis库存,将库存数量预置进redis中,通过redis扣减库存,如redis库存扣完则返回库存不足;
30.先判断是否有key,如果有key先查询值,如果查询出来的值大于要扣减的数则执行扣减,完成后再查询扣减结果,扣减结果大于0流程继续,小于0则返回库存不足,然后加扣减值;
31.所述扣减积分,redis中扣减库存成功后扣减积分、写入积分明细;
32.所述更新兑换累加数量扣减积分完成后,更新用户单个商品周兑换量累加值、用户单个商品总兑换量累加值、用户全商品总兑换量累加值;成功后将订单信息放入mq异步消费,并向前端返回成功消息;扣减积分和兑换限制数量更新放到一个事务中;
33.所述订单生成,在缓存中库存、数据库中积分、兑换限制数量更新成功后,通过mq发送订单信息,并使消息平均分布在32个队列中,消费订单信息的服务通过单个写库或批量写库两种方式处理:
34.单个写库:消息消费端按照正常流程扣减库存,写入订单信息,单个消费可以写在一个事务中,如有问题可以单个回滚,补偿积分也比较方便;
35.批量写库:消费端取出消息后再次缓存,每隔1秒或者积攒100条订单信息批量写入数据库一次,计算生成订单的消息中需要扣减的库存数总和,使用总和扣减库存;
36.所述异常处理,若发生最终扣减库存失败的情况,需要跟踪是否为程序漏洞导致的扣减失败;异常情况下未能落单,进行积分和redis库存补偿,同时处理兑换限制数量,或者处理数据生成订单。
37.本发明还要求保护一种实现积分抢货功能的系统,包括活动设置模块、服务调用设置模块、网关层设置模块和服务层设置模块,
38.该系统实现上述的实现积分抢货功能的方法。
39.本发明还要求保护一种实现积分抢货功能的装置,包括:至少一个存储器和至少一个处理器;
40.所述至少一个存储器,用于存储机器可读程序;
41.所述至少一个处理器,用于调用所述机器可读程序,执行上述的实现积分抢货功能的方法。
42.本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的实现积分抢货功能的方法。
43.本发明的一种实现积分抢货功能的方法及系统与现有技术相比,具有以下有益效果:
44.本方法基于缓存与队列技术实现积分抢货功能,实现了客户流量的平稳消费,提高了抢货过程处理能力,降低了抢货业务对整个系统的冲击,同时用户更快获知抢货结果,减少了用户占用业务时长,提升用户体验。
附图说明
45.图1是本发明实施例提供的实现积分抢货功能的方法的流程示图;
46.图2是本发明实施例提供的活动设置中物料设置示图;
47.图3是本发明实施例提供的服务调用方设置示图;
48.图4是本发明实施例提供的服务层设置示图;
49.图5是本发明实施例提供的订单生成示图。
具体实施方式
50.本发明实施例提供一种实现积分抢货功能的方法,该方法使用缓存技术与队列技术实现用户使用在电子商务平台积攒的积分参与平台设置的兑换活动,包括活动设置、服务调用方设置、网关层设置和服务层设置;
51.所述活动设置,设置活动物料表,用于存放兑换活动中所使用的商品与库存信息,并随着活动结束而失效;活动规则信息存入活动规则表,根据规则表中的信息判断用户是否有参与资格;
52.服务调用方设置用于防止重复提交和前置判断;
53.网关层设置用于拦截、放行,以及对抢货接口的限流,处理异常问题时的熔断;
54.服务层设置包括根据条件判断是否满足抢货条件、扣减库存、扣减积分、更新兑换累加数量、订单生成和异常处理。
55.本方法的整体结构如图1所示。具体设置如下:
56.活动设置:
57.1、物料设置,
58.在上架活动时,将活动所需商品详情及数量单独存入活动物料表,并将库存信息缓存入redis,设置为长期有效;
59.修库存时需要更新redis中的库存数;
60.活动下架后删除redis库存。
61.活动物料表商品、库存与商品表、库存表信息不冲突,商品、库存表信息为普通销售过程所使用的商品与库存信息,物料表则为兑换活动中所使用的商品与库存信息,是临时性的,随着活动结束而失效。如果需要产生联系则可以在物料设置时在库存表扣减对应数量的库存,当活动结束时将没有卖完的库存量回退到库存表中,从而使活动物料表与商品表、库存表产生联系。
62.其架构图如图2所示。
63.2、规则设置,
64.设置活动规则信息,包括参与活动的限制性信息,如:活动开始结束时间、商品兑换个数限制、参与者类型限制、参与者级别限制;
65.活动规则信息存入活动规则表,后续根据规则表中的信息判断用户是否有参与资格;
66.兑换活动中如果存在判断周兑换量、总兑换量的过程,需要添加用户商品兑换量累计表,大数据通过汇总业务表数据,得到用户活动商品周、月、总兑换量汇总数据;如有类似规则都通过大数据汇总后回写mysql。
67.服务调用方:
68.1、页面静态化,
69.把兑换商品详情页做成静态页面,把商品详情、价格等参数信息全部放在静态页面里,然后上传到cdn上预热,这样大量的商品详情页访问请求不用访问源站。
70.2、防止重复提交,
71.前端页面相关按钮点击后置灰,防止重复提交;
72.根据接口返回的结果和活动规则判断是否让用户可以继续点击抢货。
73.3、前置判断,
74.如果活动已经结束或库存为0则不再调用接口/限量。
75.服务调用方设置如图3所示。
76.网关层:
77.1、拦截,
78.对黑名单ip/用户拦截;
79.为防止前端恶意请求、攻击脚本,在网关层对接口按userid限制访问次数。
80.2、放行,
81.根据抢货商品的库存数放行请求,超过库存个数的请求直接返回抢货失败。
82.3、限流,
83.根据现有的服务集群估算能够处理的最大请求数,对抢货接口限流。
84.4、熔断,
85.服务接口出现紧急问题无法正确提供服务时熔断,如数据库长时间锁表、数据异
常错误、流量攻击等,处理完异常问题后恢复服务。
86.服务层:
87.1、校验,
88.必要的校验过程在服务层执行,能合并查询的尽量合并查询。
89.抢货所需判断内容如下:
90.店铺相关,包括是否有效店铺、店铺积分状态、店铺诚信值、店铺是否有兑换资格、是否为银行特约用户、店铺是否有商城卡、店铺积分是否足够本次兑换等;
91.活动相关,包括活动是否过期、活动是否为发布状态等;
92.兑换数量相关,包括店铺商品兑换总量是否超过兑换总量限制、店铺单个商品周兑换量是否超过限制、店铺单个商品总兑换量是否超过限制等;
93.后续兑换量根据大数据汇总结果进行判断。
94.根据条件判断,如果不满足条件则返回对应信息。
95.2、扣减redis库存,
96.将库存数量预置进redis中,通过redis扣减库存,如redis库存扣完则返回库存不足。
97.先判断是否有key,如果有key先查询值,如果查询出来的值大于要扣减的数则执行扣减,完成后再查询扣减结果,扣减结果大于0流程继续,小于0返回库存不足,然后加扣减值。
98.在redis中可以通过decr命令扣减库存,incr/decr是原子性操作,在分布式环境下不会有并发问题。
99.需要考虑redis中库存丢失怎样恢复,因为是异步处理库存,如果mq中库存积压未处理完成直接根据数据库更新还是会存在库存误差。
100.3、扣减积分,
101.redis中扣减库存成功后扣减积分、写入积分明细。
102.4、更新兑换累加数量,
103.扣减积分完成后,更新用户单个商品周兑换量累加值、用户单个商品总兑换量累加值、用户全商品总兑换量累加值。
104.成功后将订单信息放入mq异步消费,并向前端返回成功消息。
105.扣减积分和兑换限制数量更新放到一个事务中。
106.5、订单生成,
107.缓存中库存、数据库中积分、兑换限制数量更新成功后,将通过mq发送订单信息,并使消息平均分布在32个队列中。消费订单信息的服务可以通过单个写库或者批量写库两种方式处理。(在数据库中扣减库存,需要再where条件中增加库存大于0的条件,避免库存被扣减为负值。)
108.单个写库:
109.消息消费端按照正常流程扣减库存,写入订单信息;单个消费可以写在一个事务中,如有问题可以单个回滚,补偿积分也比较方便。
110.批量写库:
111.消费端取出消息后再次缓存,每隔1秒或者积攒100条订单信息批量写入数据库一
次;
112.计算生成订单的消息中需要扣减的库存数总和,使用总和扣减库存;
113.批量处理如果涉及到回滚则需要回滚掉整个批量,后续处理比较麻烦。
114.如果在处理订单时遇到库存不足则说明redis没有控制住兑换量,需要对此异常情况进行应急处理。订单生成过程如图5所示。
115.消息体包括:扣减库存信息、积分兑换明细。
116.6、异常处理,
117.如果redis库存扣减控制正确,不应该发生最终扣减库存失败的情况。需要跟踪是否为程序漏洞导致的扣减失败。
118.异常情况下未能落单,进行积分和redis库存补偿,同时处理兑换限制数量,或者处理数据生成订单。
119.如图4所示为服务层设置结构图。
120.本方法使用缓存与队列技术降低积分抢货业务中出现的数据访问高峰,减少积分抢货业务对整个系统的冲击,同时提高积分兑换业务的稳定性和准确性,让整个业务平稳进行,数据有效落盘,客户及时获知兑换业务结果。
121.本发明实施例还提供了一种实现积分抢货功能的系统,包括活动设置模块、服务调用设置模块、网关层设置模块和服务层设置模块,
122.该系统实现本发明上述实施例中所述的实现积分抢货功能的方法。
123.本发明实施例还提供了一种实现积分抢货功能的装置,包括:至少一个存储器和至少一个处理器;
124.所述至少一个存储器,用于存储机器可读程序;
125.所述至少一个处理器,用于调用所述机器可读程序,执行本发明上述实施例中所述的实现积分抢货功能的方法。
126.本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明上述实施例中所述的实现积分抢货功能的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
127.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
128.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
129.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
130.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而
实现上述实施例中任一实施例的功能。
131.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献