CN114461308A - 一种减少网络api重复请求并发的方法及系统 - Google Patents
一种减少网络api重复请求并发的方法及系统 Download PDFInfo
- Publication number
- CN114461308A CN114461308A CN202210033262.2A CN202210033262A CN114461308A CN 114461308 A CN114461308 A CN 114461308A CN 202210033262 A CN202210033262 A CN 202210033262A CN 114461308 A CN114461308 A CN 114461308A
- Authority
- CN
- China
- Prior art keywords
- request
- reservation
- reservation request
- tokens
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/02—Reservations, e.g. for tickets, services or events
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Resources & Organizations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种减少网络API重复请求并发的方法及系统,所述方法包括如下步骤:利用车辆ID信息生成预约请求,所述预约请求从携带IP地址;判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:若是,则预约请求无效并提示信息;若否,则判断当前队列是否存在令牌:若当前队列中没有令牌,则预约请求无效并提示信息;若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效并提示信息;若否,则受理预约请求。有效解决后台接收到大量的预约请求而导致网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
Description
技术领域
本发明涉及机动车业务预约技术领域,尤其涉及一种减少网络API重复请求并发的方法及系统。
背景技术
现有车驾管微信小程序的预约业务中,有部分用户使用一人多手机或第三方工具等方法来进行预约,来创建同一车牌,车架号等车辆数据进入到预约业务界面进行预约抢号,导致后台短期内接收过高峰值网络API请求,导致网络卡顿,数据延迟,甚至接口出错导致程序崩溃。
发明内容
本发明的目的在于提出一种减少网络API重复请求并发的方法及系统,以解决后台短期内接收过高峰值网络API请求,导致网络卡顿,数据延迟,甚至接口出错导致程序崩溃的技术问题。
为达此目的,本发明采用以下技术方案:一种并发处理API请求的方法,所述方法包括如下步骤:
每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
利用车辆ID信息生成预约请求,所述预约请求从携带IP地址;
判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:
若是,则预约请求无效并提示信息;
若否,则判断当前队列是否存在令牌:
若当前队列中没有令牌,则预约请求无效并提示信息;
若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效并提示信息;若否,则受理预约请求。
一种可选的实施例,基于socket.io技术判断是否存在相同的车辆ID信息进行预约请求或处于预约过程。
一种可选的实施例,所述令牌为redis令牌。
一种可选的实施例,所述令牌的产生速度为每秒产生100~200个。
一种可选的实施例,所述预设值为100~200。
一种可选的实施例,所述预设时间为1~2分钟,所述最大请求数量为5~10。
本发明第二方面公开了一种并发处理API请求的系统,应用在本发明第一方面公开的一种并发处理API请求的方法,所述系统包括请求预约客户端、Node.js定时器和Node.js后台,所述请求预约客户端安装有weapp.socket.io,Node.js后台安装有socket.io,Node.js后台接收请求预约客户端的socket请求长连接;
Node.js定时器用于每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
请求预约客户端用于获取车辆ID信息,以车辆ID信息生成预约请求,并将预约请求发送至Node.js后台;
Node.js后台用于接收预约请求,预约请求接收后判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:若是,则预约请求无效,向请求预约客户端发出第一提示指令;若否,则判断当前队列是否存在令牌:若当前队列中没有令牌,则预约请求无效,向请求预约客户端发出第二提示指令;若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效,向请求预约客户端发出第三提示指令;若否,则受理预约请求;
请求预约客户端还用于接收第一提示指令、第二提示指令和第三提示指令以展示相应的提示信息。
与现有技术相比,本发明实施例具有以下有益效果:
在本发明的实施例中,在规定时间内产生令牌补充到队列中,使队列中能补充令牌数量,其中队列中的令牌数量作为预约请求的API峰值,当队列中的令牌数量为零,则没有得到令牌的预约请求均为无效请求,实现对预约请求进行分流。
其中,若出现多个用户以同样的车辆ID信息进行预约时,重复的车辆ID信息生成的预约请求便会直接判定为无效,无效的预约请求视为本次的预约请求终止,以阻碍多个用户以同一车辆ID信息同时预约申请抢号,实现一车只能一人进行预约,避免队列中令牌数量的浪费减少,使队列中的令牌数量能供其他车辆ID信息进行预约申请。
值得说明的是,通过消耗令牌写入预约请求所携带的IP地址后,判断该IP地址是否在预设时间内的请求次数超出最大请求数量,以避免相同的IP地址在短时间内重复申请,实现对该IP地址进行限制。
在本发明中,通过对预约请求进行分流,预约请求中的车辆ID信息唯一,以及IP地址符合请求要求的才能使预约请求有效并受理,有效解决后台接收到大量的预约请求而导致网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
附图说明
图1是本发明其中一个实施例的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
下面结合图1,描述本发明实施例的一种并发处理API请求的方法,所述方法包括如下步骤:
每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
利用车辆ID信息生成预约请求,所述预约请求从携带IP地址;其中,车辆ID信息可以是车牌号或车架号中的一种。
判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:
若是,则预约请求无效并提示信息;
若否,则判断当前队列是否存在令牌:
若当前队列中没有令牌,则预约请求无效并提示信息;
若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效并提示信息;若否,则受理预约请求。
在本发明的实施例中,在规定时间内产生令牌补充到队列中,使队列中能补充令牌数量,其中队列中的令牌数量作为预约请求的API峰值,当队列中的令牌数量为零,则没有得到令牌的预约请求均为无效请求,实现对预约请求进行分流。
其中,若出现多个用户以同样的车辆ID信息进行预约时,重复的车辆ID信息生成的预约请求便会直接判定为无效,无效的预约请求视为本次的预约请求终止,以阻碍多个用户以同一车辆ID信息同时预约申请抢号,实现一车只能一人进行预约,避免队列中令牌数量的浪费减少,使队列中的令牌数量能供其他车辆ID信息进行预约申请。
值得说明的是,通过消耗令牌写入预约请求所携带的IP地址后,判断该IP地址是否在预设时间内的请求次数超出最大请求数量,以避免相同的IP地址在短时间内重复申请,实现对该IP地址进行限制。
在本发明中,通过对预约请求进行分流,预约请求中的车辆ID信息唯一,以及IP地址符合请求要求的才能使预约请求有效并受理,有效解决后台接收到大量的预约请求而导致网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
具体地,基于socket.io技术判断是否存在相同的车辆ID信息进行预约请求或处于预约过程。
具体地,实现本实施例的系统中,包括请求预约客户端、Node.js定时器和Node.js后台,所述请求预约客户端安装有weapp.socket.io,Node.js后台安装有socket.io,Node.js后台接收请求预约客户端的socket请求长连接;如此,当相同的车辆ID信息用户向进入预约界面时,socket.io会发出错误信息并提示一车只能一人同时进行预约,以阻止用户进入预约界面。
具体地,所述令牌为redis令牌。
具体地,所述令牌的产生速度为每秒产生100~200个。
具体地,在本实施例中,令牌为redis令牌,通过Node.js定时器每秒产生100~200个令牌。当然令牌的产生速度可以按照后台的处理效率进行调整。
具体地,所述预设值为100~200。当然,预设值可以按照后台的处理效率进行调整。
具体地,所述预设时间为1~2分钟,所述最大请求数量为5~10。
本发明还公开了一种并发处理API请求的系统,包括请求预约客户端、Node.js定时器和Node.js后台,所述请求预约客户端安装有weapp.socket.io,Node.js后台安装有socket.io,Node.js后台接收请求预约客户端的socket请求长连接;优选地,本实施例中,请求预约客户端是车驾管小程序,用户在车驾管小程序上填入车辆ID信息进行预约取号。
Node.js定时器用于每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
请求预约客户端用于获取车辆ID信息,以车辆ID信息生成预约请求,并将预约请求发送至Node.js后台;
Node.js后台用于接收预约请求,预约请求接收后判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:若是,则预约请求无效,向请求预约客户端发出第一提示指令;若否,则判断当前队列是否存在令牌:若当前队列中没有令牌,则预约请求无效,向请求预约客户端发出第二提示指令;若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效,向请求预约客户端发出第三提示指令;若否,则受理预约请求;
请求预约客户端还用于接收第一提示指令、第二提示指令和第三提示指令以展示相应的提示信息。
在本发明的实施例中,Node.js定时器在规定时间内产生令牌补充到队列中,使队列中能补充令牌数量,其中队列中的令牌数量作为预约请求的API峰值,当队列中的令牌数量为零,则当前的预约请求为无效请求,实现对预约请求进行分流。
其中,若出现多个用户以同样的车辆ID信息进行预约时,Node.js后台对重复的车辆ID信息生成的预约请求直接判定为无效,无效的预约请求视为本次的预约请求终止,以阻碍多个用户以同一车辆ID信息同时预约申请抢号,实现一车只能一人进行预约,避免队列中令牌数量的浪费减少,使队列中的令牌数量能供其他车辆ID信息进行预约申请。
Node.js后台通过消耗令牌写入预约请求所携带的IP地址后,判断该IP地址是否在预设时间内的请求次数超出最大请求数量,以避免相同的IP地址在短时间内重复申请,实现对该IP地址进行限制,有效避免预约请求集中。
值得说明的是,请求预约客户端根据第一提示指令、第二提示指令和第三提示指令展示提示信息的内容不同,例如:请求预约客户端接收到第一提示指令时,请求预约客户端提示:一车只能一人预约请求,请勿重复。请求预约客户端接收到第二提示指令时,请求预约客户端提示:当前预约请求已满,请稍后再试。请求预约客户端接收到第三提示指令时,请求预约客户端提示:请勿频繁预约请求,请稍后再试。
在本发明中,通过对预约请求进行分流,预约请求中的车辆ID信息唯一,以及IP地址符合请求要求的才能使预约请求有效并受理,有效解决网络卡顿、数据延迟甚至接口出错导致程序崩溃的技术问题。
根据本发明实施例的一种减少网络API重复请求并发的方法及系统的其他构成等以及操作对于本领域普通技术人员而言都是已知的,这里不再详细描述。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (7)
1.一种并发处理API请求的方法,其特征在于:所述方法包括如下步骤:
每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
利用车辆ID信息生成预约请求,所述预约请求从携带IP地址;
判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:
若是,则预约请求无效并提示信息;
若否,则判断当前队列是否存在令牌:
若当前队列中没有令牌,则预约请求无效并提示信息;
若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效并提示信息;若否,则受理预约请求。
2.根据权利要求1所述的一种并发处理API请求的方法,其特征在于:基于socket.io技术判断是否存在相同的车辆ID信息进行预约请求或处于预约过程。
3.根据权利要求1所述的一种并发处理API请求的方法,其特征在于:所述令牌为redis令牌。
4.根据权利要求1所述的一种并发处理API请求的方法,其特征在于:所述令牌的产生速度为每秒产生100~200个。
5.根据权利要求1所述的一种并发处理API请求的方法,其特征在于:所述预设值为100~200。
6.根据权利要求1所述的一种并发处理API请求的方法,其特征在于:所述预设时间为1~2分钟,所述最大请求数量为5~10。
7.一种并发处理API请求的系统,其特征在于:应用在如权利要求1~6任一项所述的一种并发处理API请求的方法,所述系统包括请求预约客户端、Node.js定时器和Node.js后台,所述请求预约客户端安装有weapp.socket.io,Node.js后台安装有socket.io,Node.js后台接收请求预约客户端的socket请求长连接;
Node.js定时器用于每规定时间内产生规定数量的令牌加入队列,若队列中令牌数量超出预设值,则放弃多余的令牌;
请求预约客户端用于获取车辆ID信息,以车辆ID信息生成预约请求,并将预约请求发送至Node.js后台;
Node.js后台用于接收预约请求,预约请求接收后判断是否存在相同的车辆ID信息进行预约请求或处于预约过程:若是,则预约请求无效,向请求预约客户端发出第一提示指令;若否,则判断当前队列是否存在令牌:若当前队列中没有令牌,则预约请求无效,向请求预约客户端发出第二提示指令;若当前队列存在令牌,则消耗队列中的一个令牌以写入预约请求所携带的IP地址,判断该IP地址是否在预设时间内的请求次数超出最大请求数量:若是,则预约请求无效,向请求预约客户端发出第三提示指令;若否,则受理预约请求;
请求预约客户端还用于接收第一提示指令、第二提示指令和第三提示指令以展示相应的提示信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210033262.2A CN114461308A (zh) | 2022-01-12 | 2022-01-12 | 一种减少网络api重复请求并发的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210033262.2A CN114461308A (zh) | 2022-01-12 | 2022-01-12 | 一种减少网络api重复请求并发的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461308A true CN114461308A (zh) | 2022-05-10 |
Family
ID=81408744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210033262.2A Pending CN114461308A (zh) | 2022-01-12 | 2022-01-12 | 一种减少网络api重复请求并发的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461308A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115578099A (zh) * | 2022-12-09 | 2023-01-06 | 浙江保融科技股份有限公司 | 一种基于外汇牌价阻塞的预处理方法 |
-
2022
- 2022-01-12 CN CN202210033262.2A patent/CN114461308A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115578099A (zh) * | 2022-12-09 | 2023-01-06 | 浙江保融科技股份有限公司 | 一种基于外汇牌价阻塞的预处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019128535A1 (zh) | 消息管理方法、设备及存储介质 | |
CN111770157B (zh) | 一种业务处理方法、装置及电子设备和存储介质 | |
CN102668456A (zh) | 用于调整会话超时周期的方法及系统 | |
CN109766217B (zh) | 一种车机系统故障修复方法及装置 | |
CN114461308A (zh) | 一种减少网络api重复请求并发的方法及系统 | |
CN109040263B (zh) | 基于分布式系统的业务处理方法及装置 | |
CN110287146A (zh) | 应用下载的方法、设备和计算机存储介质 | |
CN110266703A (zh) | token刷新方法、装置、存储介质及控制终端 | |
CN108111337B (zh) | 分布式系统仲裁主节点的方法及设备 | |
US5946602A (en) | Reduction of queuing delays by multiple subgroup assignments | |
CN106991484B (zh) | 基于智能重复预定的二次资源预约方法 | |
CN107146123B (zh) | 一种订单分配方法及系统 | |
CN114217977A (zh) | 资源分配方法、装置、设备以及存储介质 | |
CN109743386B (zh) | 会话请求发送方法、装置、电子设备和存储介质 | |
CN112804163A (zh) | 流量数据处理方法、装置和设备 | |
US9894493B2 (en) | Telematics provisioning method | |
CN116319592A (zh) | 一种报文分配方法、装置、设备及存储介质 | |
CN114666615B (zh) | 资源调配方法、装置、服务器、程序和存储介质 | |
JP4238258B2 (ja) | 車載電子制御ユニットのタスク管理装置及びタスク管理方法 | |
CN1761361A (zh) | 通用分组无线服务的包数据协议激活方法 | |
US7904612B2 (en) | Ticket mechanism for sharing computer resources | |
CN115331349A (zh) | 银行网点的排队方法及装置 | |
CN109246387B (zh) | 一种远程会议账号资源转换计算方法、装置及存储介质 | |
CN112637121A (zh) | 数据端口的更新方法、装置、电子设备及可读存储介质 | |
CN114416326A (zh) | 大数据管控方法、装置、管控系统及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |