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

一种减少网络API重复请求并发的方法及系统与流程

2022-05-11 11:36:17 来源:中国专利 TAG:

一种减少网络api重复请求并发的方法及系统
技术领域
1.本发明涉及机动车业务预约技术领域,尤其涉及一种减少网络api重复请求并发的方法及系统。


背景技术:

2.现有车驾管微信小程序的预约业务中,有部分用户使用一人多手机或第三方工具等方法来进行预约,来创建同一车牌,车架号等车辆数据进入到预约业务界面进行预约抢号,导致后台短期内接收过高峰值网络api请求,导致网络卡顿,数据延迟,甚至接口出错导致程序崩溃。


技术实现要素:

3.本发明的目的在于提出一种减少网络api重复请求并发的方法及系统,以解决后台短期内接收过高峰值网络api请求,导致网络卡顿,数据延迟,甚至接口出错导致程序崩溃的技术问题。
4.为达此目的,本发明采用以下技术方案:一种并发处理api请求的方法,所述方法包括如下步骤:
5.每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
6.利用车辆id信息生成预约请求,所述预约请求从携带ip地址;
7.判断是否存在相同的车辆id信息进行预约请求或处于预约过程:
8.若是,则预约请求无效并提示信息;
9.若否,则判断当前队列是否存在令牌:
10.若当前队列中没有令牌,则预约请求无效并提示信息;
11.若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的ip地址,判断该ip地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效并提示信息;若否,则受理预约请求。
12.一种可选的实施例,基于socket.io技术判断是否存在相同的车辆id信息进行预约请求或处于预约过程。
13.一种可选的实施例,所述令牌为redis令牌。
14.一种可选的实施例,所述令牌的产生速度为每秒产生100~200个。
15.一种可选的实施例,所述预设值为100~200。
16.一种可选的实施例,所述预设时间为1~2分钟,所述最大请求数量为5~10。
17.本发明第二方面公开了一种并发处理api请求的系统,应用在本发明第一方面公开的一种并发处理api请求的方法,所述系统包括请求预约客户端、node.js定时器和node.js后台,所述请求预约客户端安装有weapp.socket.io,node.js后台安装有socket.io,node.js后台接收请求预约客户端的socket请求长连接;
18.node.js定时器用于每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
19.请求预约客户端用于获取车辆id信息,以车辆id信息生成预约请求,并将预约请求发送至node.js后台;
20.node.js后台用于接收预约请求,预约请求接收后判断是否存在相同的车辆id信息进行预约请求或处于预约过程:若是,则预约请求无效,向请求预约客户端发出第一提示指令;若否,则判断当前队列是否存在令牌:若当前队列中没有令牌,则预约请求无效,向请求预约客户端发出第二提示指令;若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的ip地址,判断该ip地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效,向请求预约客户端发出第三提示指令;若否,则受理预约请求;
21.请求预约客户端还用于接收第一提示指令、第二提示指令和第三提示指令以展示相应的提示信息。
22.与现有技术相比,本发明实施例具有以下有益效果:
23.在本发明的实施例中,在规定时间内产生令牌补充到队列中,使队列中能补充令牌数量,其中队列中的令牌数量作为预约请求的api峰值,当队列中的令牌数量为零,则没有得到令牌的预约请求均为无效请求,实现对预约请求进行分流。
24.其中,若出现多个用户以同样的车辆id信息进行预约时,重复的车辆id信息生成的预约请求便会直接判定为无效,无效的预约请求视为本次的预约请求终止,以阻碍多个用户以同一车辆id信息同时预约申请抢号,实现一车只能一人进行预约,避免队列中令牌数量的浪费减少,使队列中的令牌数量能供其他车辆id信息进行预约申请。
25.值得说明的是,通过消耗令牌写入预约请求所携带的ip地址后,判断该ip地址是否在预设时间内的请求次数超出最大请求数量,以避免相同的ip地址在短时间内重复申请,实现对该ip地址进行限制。
26.在本发明中,通过对预约请求进行分流,预约请求中的车辆id信息唯一,以及ip地址符合请求要求的才能使预约请求有效并受理,有效解决后台接收到大量的预约请求而导致网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
附图说明
27.图1是本发明其中一个实施例的流程图。
具体实施方式
28.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
29.下面结合图1,描述本发明实施例的一种并发处理api请求的方法,所述方法包括如下步骤:
30.每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
31.利用车辆id信息生成预约请求,所述预约请求从携带ip地址;其中,车辆id信息可
以是车牌号或车架号中的一种。
32.判断是否存在相同的车辆id信息进行预约请求或处于预约过程:
33.若是,则预约请求无效并提示信息;
34.若否,则判断当前队列是否存在令牌:
35.若当前队列中没有令牌,则预约请求无效并提示信息;
36.若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的ip地址,判断该ip地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效并提示信息;若否,则受理预约请求。
37.在本发明的实施例中,在规定时间内产生令牌补充到队列中,使队列中能补充令牌数量,其中队列中的令牌数量作为预约请求的api峰值,当队列中的令牌数量为零,则没有得到令牌的预约请求均为无效请求,实现对预约请求进行分流。
38.其中,若出现多个用户以同样的车辆id信息进行预约时,重复的车辆id信息生成的预约请求便会直接判定为无效,无效的预约请求视为本次的预约请求终止,以阻碍多个用户以同一车辆id信息同时预约申请抢号,实现一车只能一人进行预约,避免队列中令牌数量的浪费减少,使队列中的令牌数量能供其他车辆id信息进行预约申请。
39.值得说明的是,通过消耗令牌写入预约请求所携带的ip地址后,判断该ip地址是否在预设时间内的请求次数超出最大请求数量,以避免相同的ip地址在短时间内重复申请,实现对该ip地址进行限制。
40.在本发明中,通过对预约请求进行分流,预约请求中的车辆id信息唯一,以及ip地址符合请求要求的才能使预约请求有效并受理,有效解决后台接收到大量的预约请求而导致网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
41.具体地,基于socket.io技术判断是否存在相同的车辆id信息进行预约请求或处于预约过程。
42.具体地,实现本实施例的系统中,包括请求预约客户端、node.js定时器和node.js后台,所述请求预约客户端安装有weapp.socket.io,node.js后台安装有socket.io,node.js后台接收请求预约客户端的socket请求长连接;如此,当相同的车辆id信息用户向进入预约界面时,socket.io会发出错误信息并提示一车只能一人同时进行预约,以阻止用户进入预约界面。
43.具体地,所述令牌为redis令牌。
44.具体地,所述令牌的产生速度为每秒产生100~200个。
45.具体地,在本实施例中,令牌为redis令牌,通过node.js定时器每秒产生100~200个令牌。当然令牌的产生速度可以按照后台的处理效率进行调整。
46.具体地,所述预设值为100~200。当然,预设值可以按照后台的处理效率进行调整。
47.具体地,所述预设时间为1~2分钟,所述最大请求数量为5~10。
48.本发明还公开了一种并发处理api请求的系统,包括请求预约客户端、node.js定时器和node.js后台,所述请求预约客户端安装有weapp.socket.io,node.js后台安装有socket.io,node.js后台接收请求预约客户端的socket请求长连接;优选地,本实施例中,请求预约客户端是车驾管小程序,用户在车驾管小程序上填入车辆id信息进行预约取号。
49.node.js定时器用于每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
50.请求预约客户端用于获取车辆id信息,以车辆id信息生成预约请求,并将预约请求发送至node.js后台;
51.node.js后台用于接收预约请求,预约请求接收后判断是否存在相同的车辆id信息进行预约请求或处于预约过程:若是,则预约请求无效,向请求预约客户端发出第一提示指令;若否,则判断当前队列是否存在令牌:若当前队列中没有令牌,则预约请求无效,向请求预约客户端发出第二提示指令;若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的ip地址,判断该ip地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效,向请求预约客户端发出第三提示指令;若否,则受理预约请求;
52.请求预约客户端还用于接收第一提示指令、第二提示指令和第三提示指令以展示相应的提示信息。
53.在本发明的实施例中,node.js定时器在规定时间内产生令牌补充到队列中,使队列中能补充令牌数量,其中队列中的令牌数量作为预约请求的api峰值,当队列中的令牌数量为零,则当前的预约请求为无效请求,实现对预约请求进行分流。
54.其中,若出现多个用户以同样的车辆id信息进行预约时,node.js后台对重复的车辆id信息生成的预约请求直接判定为无效,无效的预约请求视为本次的预约请求终止,以阻碍多个用户以同一车辆id信息同时预约申请抢号,实现一车只能一人进行预约,避免队列中令牌数量的浪费减少,使队列中的令牌数量能供其他车辆id信息进行预约申请。
55.node.js后台通过消耗令牌写入预约请求所携带的ip地址后,判断该ip地址是否在预设时间内的请求次数超出最大请求数量,以避免相同的ip地址在短时间内重复申请,实现对该ip地址进行限制,有效避免预约请求集中。
56.值得说明的是,请求预约客户端根据第一提示指令、第二提示指令和第三提示指令展示提示信息的内容不同,例如:请求预约客户端接收到第一提示指令时,请求预约客户端提示:一车只能一人预约请求,请勿重复。请求预约客户端接收到第二提示指令时,请求预约客户端提示:当前预约请求已满,请稍后再试。请求预约客户端接收到第三提示指令时,请求预约客户端提示:请勿频繁预约请求,请稍后再试。
57.在本发明中,通过对预约请求进行分流,预约请求中的车辆id信息唯一,以及ip地址符合请求要求的才能使预约请求有效并受理,有效解决网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
58.根据本发明实施例的一种减少网络api重复请求并发的方法及系统的其他构成等以及操作对于本领域普通技术人员而言都是已知的,这里不再详细描述。
59.在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
60.尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
再多了解一些

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

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

相关文献