CN116361002A - 一种请求控制方法、装置、服务器和存储介质 - Google Patents

一种请求控制方法、装置、服务器和存储介质 Download PDF

Info

Publication number
CN116361002A
CN116361002A CN202310347618.4A CN202310347618A CN116361002A CN 116361002 A CN116361002 A CN 116361002A CN 202310347618 A CN202310347618 A CN 202310347618A CN 116361002 A CN116361002 A CN 116361002A
Authority
CN
China
Prior art keywords
request
service request
time
queue
determining
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
Application number
CN202310347618.4A
Other languages
English (en)
Inventor
窦卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN202310347618.4A priority Critical patent/CN116361002A/zh
Publication of CN116361002A publication Critical patent/CN116361002A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种请求控制方法、装置、服务器和存储介质,涉及计算机技术领域,该方法包括:基于切面类获取业务请求,确定业务请求的并发量和属性信息,其中,并发量表示业务请求在预设时间内的最大执行次数,属性信息包括信号量和计时队列;确定业务请求对应的请求线程获取到信号量且计时队列的存储状态为已满,根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间;将等待时间之后的目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。上述技术方案,保证预设时间内业务请求的执行次数不大于并发量对应的业务请求在预设时间内的最大执行次数,实现对业务请求的限流,同时,避免了业务请求丢失。

Description

一种请求控制方法、装置、服务器和存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种请求控制方法、装置、服务器和存储介质。
背景技术
出于对性能或监管的考虑,需要对业务系统中的业务请求进行限流。
现有技术中,可以通过限制上游业务系统发送请求实现请求限流,例如,可以基于计数限流、固定窗口限流、滑动窗口限流等限流算法对上游系统发出的请求进行限流。
然而,现有技术对请求进行限流时,通常会直接丢弃限流后的业务请求,此时环境为测试环境时,无法对请求进行重试,造成资源浪费。
发明内容
本发明提供一种请求控制方法、装置、服务器和存储介质,实现对业务请求的限流,进一步实现对业务请求的请求控制。
第一方面,本发明实施例提供了一种请求控制方法,该方法包括:
基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
本发明实施例的技术方案,提供一种请求控制方法,包括:基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。上述技术方案,首先,基于切面类获取需要进行限流的业务请求,同时确定用于确定当前环境下业务请求在预设时间内的最大执行次数的并发量,以及用于控制业务请求的在预设时间内的执行次数同时避免业务请求丢失的属性信息,其次,确定业务请求对应的请求线程是否获取到信号量,确定请求线程未获取到信号量,基于请求线程进行线程等待,直至获取到信号量,基于信号量实现的线程等待避免了业务请求的丢失,确定业务请求对应的请求线程获取到信号量,可以进一步确定计时队列的存储状态,确定计时队列的存储状态为未满,表明计时队列存在剩余存储空间,此时可以将当前时间插入计时队列,并基于请求线程执行业务请求,确定计时队列的存储状态为已满,表明计时队列不存在剩余存储空间,此时可以根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间,在等待时间之后,计时队列将存在剩余空间,因此,在等待时间之后的目标时间,可以将目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。计时队列基于并发量所确定的队列长度,使得仅在计时队列存在剩余存储空间时,基于请求线程执行业务请求,保证了预设时间内业务请求的执行次数不大于并发量对应的业务请求在预设时间内的最大执行次数,实现对业务请求的限流。
进一步地,确定所述业务请求的并发量和属性信息,包括:
根据所述业务请求的注解信息确定所述业务请求的并发量;
基于所述业务请求在请求和属性的对应关系表中进行查询,确定所述业务请求对应的属性信息。
进一步地,所述信号量表示最大同时执行线程数。
进一步地,所述计时队列的队列长度由所述业务请求的并发量确定。
进一步地,该方法还包括:
确定执行所述业务请求的请求线程未获取到所述信号量,基于所述请求线程进行线程等待,直至所述请求线程获取到所述信号量。
进一步地,该方法还包括:
确定所述计时队列的存储状态为未满,将当前时间插入所述计时队列并基于所述请求线程执行所述业务请求。
进一步地,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间,包括:
根据所述当前时间和所述计时队列中插入的队首时间的差值确定实际时间差;
根据所述实际时间差和所述计时队列的队列长度确定所述等待时间。
第二方面,本发明实施例还提供了一种请求控制装置,该装置包括:
获取模块,用于基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定模块,用于确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
执行模块,用于将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面中任一所述的请求控制方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面中任一所述的请求控制方法。
第五方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机上运行时,使得计算机执行如第一方面提供的请求控制方法。
需要说明的是,上述计算机指令可以全部或者部分存储在计算机可读存储介质上。其中,计算机可读存储介质可以与请求控制装置的处理器封装在一起的,也可以与请求控制装置的处理器单独封装,本申请对此不做限定。
本申请中第二方面、第三方面、第四方面以及第五方面的描述,可以参考第一方面的详细描述;并且,第二方面、第三方面、第四方面、以及第五方面的描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
在本申请中,上述请求控制装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种请求控制方法的流程图;
图2为本发明实施例提供的另一种请求控制方法的流程图;
图3为本发明实施例提供的另一种请求控制方法的实现流程图;
图4为本发明实施例提供的一种请求控制装置的结构示意图;
图5为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括其他没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
出于对性能或监管的考虑,需要对业务系统中的业务请求进行限流。不同环境对于限流的需求不同,例如,在业务系统的测试环境中,需要对限流后的业务请求进行重新请求,因此,不能丢弃限流后的业务请求,在业务系统的生产环境中,如果对网络异常导致的请求失败重新进行请求,可能导致重复请求,造成损失,因此,可以丢弃限流后的业务请求。而且,不同环境对于限流所需设定的请求阈值也不同。
现有技术中,可以通过限制上游业务系统发送请求实现请求限流,例如,可以基于计数限流、固定窗口限流、滑动窗口限流等限流算法对上游系统发出的请求进行限流,也可以通过限制下游业务接收请求实现请求限流,例如,可以基于中间件(nginx、消息队列等)对下游系统接收到的请求进行限流。一方面,通过限制上游业务系统发送请求进行请求限流时,现有技术仅可以基于流量的角度对上游系统发送至下游系统的批量请求进行限流,无法对具体的请求进行限流;另一方面,通过限制下游业务接收请求进行请求限流且中间件为nginx时,通常会直接丢弃限流后的业务请求,此时环境为测试环境时,无法对请求进行重试,造成资源浪费,通过限制下游业务接收请求进行请求限流且中间件为消息队列时,通常需要改造上下游系统接口,成本较高。
因此,本申请提出一种请求控制方法,可以确定业务请求,并对业务请求进行限流,实现对业务请求的请求控制,同时,不会造成请求丢失。
下面将结合示图和实施例对本申请提出的请求控制方法进行详细的描述。
图1为本发明实施例提供的一种请求控制方法的流程图,本实施例可适用于需要对业务请求进行限流的情况,该方法可以由请求控制装置来执行,如图1所示,该方法具体包括如下步骤:
步骤110、基于切面类获取业务请求,确定所述业务请求的并发量和属性信息。
切面类可以理解为面向切面编程(Aspect Oriented Programming,AOP),AOP可以通过预编译方式和运行期间动态代理实现程序功能的统一维护。
具体地,业务请求可以理解为可能需要进行限流的业务请求,可能需要进行限流的业务请求对应的代码往往存在注解信息。因此,可以基于AOP将业务代码中存在注解信息的代码片段对应的方法确定为业务请求。注解信息可以包括业务请求在测试环境和生产环境中的并发量,在获取到业务请求的同时,可以根据业务请求的注解信息以及当前环境确定业务请求的并发量,并发量表示业务请求在预设时间内的最大执行次数。
切面类中预先存储有各业务请求的属性信息,具体可以存储有各业务请求的信号量和计时队列。因此,在获取到业务请求后,还可以确定业务请求的属性信息,即可以确定业务请求的信号量和计时队列。
另外,信息量可以在多线程环境下使用,保证两个或多个代码段不被并发调用。本申请中,信息量可以理解为最大同时执行线程数。计时队列用于存储业务请求的执行时间,计时队列的队列长度由业务请求的并发量确定。
本发明实施例中,基于切面类实现获取需要进行限流的业务请求,同时还可以确定业务请求的并发量以及属性信息,并发量用于确定当前环境下业务请求在预设时间内的最大执行次数,属性信息用于控制业务请求的在预设时间内的执行次数且避免了业务请求的丢失。
步骤120、确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间。
请求线程用于执行对应的业务请求,请求线程的运行需要运行内存资源。因此,请求线程在执行业务请求之前,首先需要确定是否可以获取到信号量,以确定是否存在运行内存资源使得请求线程可以顺利运行。为了保证业务请求在预设时间内的执行次数小于业务请求的并发量所确定的最大执行次数,可以在队列长度由并发量确定的计时队列中存储业务请求的执行时间,在确定计时队列的存储状态为未满,即计时队列存在剩余存储空间时,确定可以执行业务请求,在确定计时队列的存储状态为已满,即计时队列不存在剩余存储空间时,确定无法执行业务请求。
具体地,确定业务请求对应的请求线程是否获取到信号量,如果请求线程未获取到信号量,表明运行内存资源难以支持请求线程顺利运行,此时请求线程可以进行线程等待,直至获取到信号量。如果请求线程获取到信号量,表明运行内存资源可以支持请求线程顺利运行,可以进一步确定计时队列的存储状态,如果计时队列的存储状态为未满,表明计时队列存在剩余存储空间可以插入时间,此时,可以将当前时间插入计时队列,同时基于请求线程执行业务请求。如果计时队列的存储状态为已满,表明计时队列不存在剩余存储空间,无法插入时间,此时,可以根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间,即可以根据预设时间、当前时间以及计时队列中插入的队首时间确定等待时间。该等待时间表明,在等待时间之后,计时队列将存在剩余空间,因此,等待时间之后可以执行业务请求。
步骤130、将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
具体地,等待时间之后,计时队列将存在剩余存储空间,可以执行业务请求。因此,可以将等待时间之后的目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。
仅在计时队列存在剩余存储空间时,基于请求线程执行业务请求,保证了预设时间内业务请求的执行次数不大于并发量对应的业务请求在预设时间内的最大执行次数,实现对业务请求的限流。
本发明实施例中,在业务请求对应的请求线程未获取到信号量时,基于请求线程进行线程等待,直至获取到信号量,基于信号量实现的线程等待避免了业务请求的丢失,确定业务请求对应的请求线程获取到信号量后,继续确定计时队列的存储状态,确定计时队列的存储状态为未满,则基于请求线程执行业务请求,确定计时队列的存储状态为已满,则根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间,并在等待时间之后的目标时间基于请求线程执行业务请求,基于并发量所确定的计时队列的队列长度可以控制业务请求在预设时间内的执行次数,实现对业务请求的限流。
本发明实施例提供的请求控制方法,包括:基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。上述技术方案,首先,基于切面类获取需要进行限流的业务请求,同时确定用于确定当前环境下业务请求在预设时间内的最大执行次数的并发量,以及用于控制业务请求的在预设时间内的执行次数同时避免业务请求丢失的属性信息,其次,确定业务请求对应的请求线程是否获取到信号量,确定请求线程未获取到信号量,基于请求线程进行线程等待,直至获取到信号量,基于信号量实现的线程等待避免了业务请求的丢失,确定业务请求对应的请求线程获取到信号量,可以进一步确定计时队列的存储状态,确定计时队列的存储状态为未满,表明计时队列存在剩余存储空间,此时可以将当前时间插入计时队列,并基于请求线程执行业务请求,确定计时队列的存储状态为已满,表明计时队列不存在剩余存储空间,此时可以根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间,在等待时间之后,计时队列将存在剩余空间,因此,在等待时间之后的目标时间,可以将目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。计时队列基于并发量所确定的队列长度,使得仅在计时队列存在剩余存储空间时,基于请求线程执行业务请求,保证了预设时间内业务请求的执行次数不大于并发量对应的业务请求在预设时间内的最大执行次数,实现对业务请求的限流。
图2为本发明实施例提供的另一种请求控制方法的流程图,本实施例是在上述实施例的基础上进行具体化。如图2所示,在本实施例中,该方法还可以包括:
步骤210、基于切面类获取业务请求。
具体地,切面类可以将业务代码内存在注解信息的代码片段对应的方法确定为业务请求。
注解信息可以包括业务请求在测试环境和生产环境中的并发量,例如,devLinitFrequency()表示业务请求在测试环境的并发量,prodLinitFrequency()表示业务请求在生产环境的并发量。并发量用于确定当前环境下业务请求在预设时间内的最大执行次数,并发量小于0,表明无需对该环境下的业务请求进行限流,此时可以直接基于请求线程执行业务请求,并发量大于0,表明需要对该环境下的业务请求进行限流。
本发明实施例中,实现确定可能需要进行限流的业务请求。
步骤220、确定所述业务请求的并发量和属性信息。
其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列。
一种实施方式中,步骤220具体可以包括:
根据所述业务请求的注解信息确定所述业务请求的并发量;基于所述业务请求在请求和属性的对应关系表中进行查询,确定所述业务请求对应的属性信息。
具体地,基于AOP获取到业务请求的同时,可以根据业务请求的注解信息以及当前环境确定业务请求的并发量,并发量表示业务请求在预设时间内的最大执行次数。并发量大于0,表明需要对该环境下的业务请求进行限流,因此,在确定并发量大于0后,表明需要对当前环境下的业务请求进行限流,因此,可以进一步确定用于对业务请求进行限流同时保证业务请求不会丢失的业务请求对应的属性信息。具体可以在对应存储有业务请求和属性信息的请求和属性的对应关系表中对业务请求进行查询,确定业务请求对应的属性信息。
在实际应用中,属性信息可以作为value值存储在并发哈希表(ConcurrentHashMap)中,key值可以为业务请求对应的方法全名,key值可以通过AOP的Signature获取。通过ConcurrentHashMap确定业务请求对应的属性信息,可以保证不同的业务请求之间互不干扰。
另外,属性信息包括信号量和计时队列,信号量表示最大同时执行线程数,计时队列的队列长度由业务请求的并发量确定。
本发明实施例中,获取到业务请求的同时可以确定业务请求的并发量以及属性信息,并发量用于确定当前环境下业务请求在预设时间内的最大执行次数,属性信息用于控制业务请求的在预设时间内的执行次数且避免了业务请求的丢失。
步骤230、确定执行所述业务请求的请求线程未获取到所述信号量,基于所述请求线程进行线程等待,直至所述请求线程获取到所述信号量。
具体地,请求线程用于执行对应的业务请求,请求线程的运行需要运行内存资源。因此,需要确定请求线程是否可以获取到信号量,以确定是否存在运行内存资源使得请求线程可以顺利运行。如果请求线程未获取到信号量,表明运行内存资源难以支持请求线程顺利运行,此时可以基于请求线程进行线程等待,直至请求线程获取到信号量。
本发明实施例中,在业务请求对应的请求线程未获取到信号量时,基于请求线程进行线程等待,直至获取到信号量,基于信号量实现的线程等待避免了业务请求的丢失。
步骤240、确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为未满,将当前时间插入所述计时队列并基于所述请求线程执行所述业务请求。
具体地,如果请求线程获取到信号量,表明运行内存资源可以支持请求线程顺利运行,此时可以进一步确定计时队列的存储状态。执行队列用于存储业务请求的执行时间,且执行队列的队列长度由并发量确定。为了保证业务请求在预设时间内的执行次数小于业务请求的并发量所确定的最大执行次数,可以确定执行队列的队列长度为并发量对应的预设时间。确定请求线程获取到信号量且确定计时队列的存储状态为未满,表明运行内存资源可以支持请求线程顺利运行且计时队列存在剩余存储空间可以插入时间,此时,可以将当前时间插入计时队列,同时基于请求线程执行业务请求。
本发明实施例中,确定业务请求对应的请求线程获取到信号量且计时队列的存储状态为未满,基于请求线程执行业务请求,实现业务请求的顺利执行。
步骤250、确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间。
具体地,如果计时队列的存储状态为已满,表明计时队列不存在剩余存储空间,无法插入时间。因此,业务请求需要睡眠等待,睡眠得到的等待时间可以根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定,即可以根据预设时间、当前时间以及计时队列中插入的队首时间确定等待时间。该等待时间表明,在等待时间之后,计时队列将存在剩余空间,因此,等待时间之后可以执行业务请求。
步骤260、将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
具体地,等待时间之后,计时队列将存在剩余存储空间,可以执行业务请求。因此,可以将等待时间之后的目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。
计时队列的队列长度为并发量对应的预设时间,相同业务请求的执行时间是相同的,因此,基于计时队列的剩余存储空间控制业务请求的执行,可以控制业务请求在预设时间内的执行次数小于业务请求的并发量所确定的在预设时间内的最大执行次数。
本发明实施例中,确定业务请求对应的请求线程获取到信号量且计时队列的存储状态为已满,根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间,并在等待时间之后的目标时间基于请求线程执行业务请求,基于并发量所确定的计时队列的队列长度可以控制业务请求在预设时间内的执行次数,实现对业务请求的限流。
本发明实施例提供的请求控制方法,包括:基于切面类获取业务请求;确定所述业务请求的并发量和属性信息;确定执行所述业务请求的请求线程未获取到所述信号量,基于所述请求线程进行线程等待,直至所述请求线程获取到所述信号量;确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求;确定所述计时队列的存储状态为未满,将当前时间插入所述计时队列并基于所述请求线程执行所述业务请求。上述技术方案,首先,基于切面类将存在注解信息的代码片段对应的方法确定为业务请求,同时确定业务请求的并发量和属性信息,当前环境下大于0的并发量用于确定当前环境下的业务请求在预设时间内的最大执行次数,属性信息用于控制业务请求的在预设时间内的执行次数同时避免业务请求丢失,其次,确定业务请求对应的请求线程是否获取到信号量,确定请求线程未获取到信号量,基于请求线程进行线程等待,直至获取到信号量,基于信号量实现的线程等待避免了业务请求的丢失,确定业务请求对应的请求线程获取到信号量,可以进一步确定计时队列的存储状态,确定计时队列的存储状态为未满,表明计时队列存在剩余存储空间,此时可以将当前时间插入计时队列,并基于请求线程执行业务请求,确定计时队列的存储状态为已满,表明计时队列不存在剩余存储空间,此时可以根据计时队列的队列长度、当前时间以及计时队列中插入的队首时间确定等待时间,在等待时间之后,计时队列将存在剩余空间,因此,在等待时间之后的目标时间,可以将目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。计时队列基于并发量所确定的队列长度,使得仅在计时队列存在剩余存储空间时,基于请求线程执行业务请求,保证了预设时间内业务请求的执行次数不大于并发量对应的业务请求在预设时间内的最大执行次数,实现对业务请求的限流。
图3为本发明实施例提供的另一种请求控制方法的实现流程图,示例性的给出了其中一种实现方式。如图3所示,包括:
步骤310、基于切面类获取业务请求。
步骤320、确定业务请求的并发量以及业务请求的信号量和计时队列。
步骤330、确定执行业务请求的请求线程是否获取到信号量。
确定执行业务请求的请求线程未获取到信号量,执行步骤340;否则,执行步骤350。
步骤340、基于请求线程进行线程等待,直至请求线程获取到信号量。
步骤350、确定计时队列的存储状态是否已满。
计时队列的存储状态为未满,执行步骤360;否则,执行步骤370。
步骤360、将当前时间插入计时队列并基于请求线程执行业务请求。
步骤370、根据预设时间、当前时间以及计时队列中插入的队首时间确定等待时间。
步骤380、将等待时间之后的目标时间插入计时队列,并在目标时间基于请求线程执行业务请求。
本发明实施例提供的请求控制方法的实现方式,具备执行请求控制方法相应的功能模块和有益效果。
图4为本发明实施例提供的一种请求控制装置的结构示意图,该装置可以适用于需要对业务请求进行限流的情况。该装置可以通过软件和/或硬件实现,并一般集成在服务器中。
如图4所示,该装置包括:
获取模块410,用于基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定模块420,用于确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
执行模块430,用于将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
本实施例提供的请求控制装置,
在上述实施例的基础上,获取模块410,具体用于:
基于切面类获取业务请求;根据所述业务请求的注解信息确定所述业务请求的并发量;基于所述业务请求在请求和属性的对应关系表中进行查询,确定所述业务请求对应的属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列。
一种实施方式中,所述信号量表示最大同时执行线程数。
一种实施方式中,所述计时队列的队列长度由所述业务请求的并发量确定。
在上述实施例的基础上,该装置还包括:
等待模块,用于确定执行所述业务请求的请求线程未获取到所述信号量,基于所述请求线程进行线程等待,直至所述请求线程获取到所述信号量。
在上述实施例的基础上,该装置还包括:
插入模块,用于确定所述计时队列的存储状态为未满,将当前时间插入所述计时队列并基于所述请求线程执行所述业务请求。
在上述实施例的基础上,确定模块420,具体用于:
确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满;根据所述当前时间和所述计时队列中插入的队首时间的差值确定实际时间差;根据所述实际时间差和所述计时队列的队列长度确定所述等待时间。
本发明实施例所提供的请求控制装置可执行本发明任意实施例所提供的请求控制方法,具备执行请求控制方法相应的功能模块和有益效果。
值得注意的是,上述请求控制装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
图5为本发明实施例提供的一种服务器的结构示意图。图5示出了适于用来实现本发明实施方式的示例性服务器5的框图。图5显示的服务器5仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,服务器5以通用计算电子设备的形式表现。服务器5的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
服务器5典型地包括多种计算机系统可读介质。这些介质可以是任何能够被服务器5访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。服务器5可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
服务器5也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该服务器5交互的设备通信,和/或与使得该服务器5能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,服务器5还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图5所示,网络适配器20通过总线18与服务器5的其它模块通信。应当明白,尽管图5中未示出,可以结合服务器5使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及页面显示,例如实现本发实施例所提供的请求控制方法,该方法包括:
基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的请求控制方法的技术方案。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现例如本发实施例所提供的请求控制方法,该方法包括:
基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
另外,本发明技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种请求控制方法,其特征在于,包括:
基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
2.根据权利要求1所述的请求控制方法,其特征在于,确定所述业务请求的并发量和属性信息,包括:
根据所述业务请求的注解信息确定所述业务请求的并发量;
基于所述业务请求在请求和属性的对应关系表中进行查询,确定所述业务请求对应的属性信息。
3.根据权利要求1所述的请求控制方法,其特征在于,所述信号量表示最大同时执行线程数。
4.根据权利要求1所述的请求控制方法,其特征在于,所述计时队列的队列长度由所述业务请求的并发量确定。
5.根据权利要求1所述的请求控制方法,其特征在于,还包括:
确定执行所述业务请求的请求线程未获取到所述信号量,基于所述请求线程进行线程等待,直至所述请求线程获取到所述信号量。
6.根据权利要求1所述的请求控制方法,其特征在于,还包括:
确定所述计时队列的存储状态为未满,将当前时间插入所述计时队列并基于所述请求线程执行所述业务请求。
7.根据权利要求1所述的请求控制方法,其特征在于,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间,包括:
根据所述当前时间和所述计时队列中插入的队首时间的差值确定实际时间差;
根据所述实际时间差和所述计时队列的队列长度确定所述等待时间。
8.一种请求控制装置,其特征在于,包括:
获取模块,用于基于切面类获取业务请求,确定所述业务请求的并发量和属性信息,其中,所述并发量表示所述业务请求在预设时间内的最大执行次数,所述属性信息包括信号量和计时队列;
确定模块,用于确定所述业务请求对应的请求线程获取到所述信号量且所述计时队列的存储状态为已满,根据所述计时队列的队列长度、当前时间以及所述计时队列中插入的队首时间确定等待时间;
执行模块,用于将所述等待时间之后的目标时间插入所述计时队列,并在所述目标时间基于所述请求线程执行所述业务请求。
9.一种服务器,其特征在于,所述服务器包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一所述的请求控制方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一所述的请求控制方法。
CN202310347618.4A 2023-04-03 2023-04-03 一种请求控制方法、装置、服务器和存储介质 Pending CN116361002A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310347618.4A CN116361002A (zh) 2023-04-03 2023-04-03 一种请求控制方法、装置、服务器和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310347618.4A CN116361002A (zh) 2023-04-03 2023-04-03 一种请求控制方法、装置、服务器和存储介质

Publications (1)

Publication Number Publication Date
CN116361002A true CN116361002A (zh) 2023-06-30

Family

ID=86904511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310347618.4A Pending CN116361002A (zh) 2023-04-03 2023-04-03 一种请求控制方法、装置、服务器和存储介质

Country Status (1)

Country Link
CN (1) CN116361002A (zh)

Similar Documents

Publication Publication Date Title
US11294714B2 (en) Method and apparatus for scheduling task, device and medium
CN108537543B (zh) 区块链数据的并行处理方法、装置、设备和存储介质
US9720740B2 (en) Resource management in MapReduce architecture and architectural system
CN109213611B (zh) 跨进程通讯方法、装置、终端及存储介质
CN109298901B (zh) 无人车中对象处理方法、装置、设备、存储介质和车辆
JP2011054161A (ja) マルチコア/スレッドのワークグループ計算スケジューラ
CN110865888A (zh) 一种资源加载方法、装置、服务器及存储介质
CN111367687A (zh) 进程间数据通信方法和装置
US10564889B2 (en) Method and apparatus for processing data based on physical host
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
CN109347899B (zh) 在分布式存储系统中写入日志数据的方法
CN109284108B (zh) 无人车数据存储方法、装置、电子设备及存储介质
US9703614B2 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
US8707449B2 (en) Acquiring access to a token controlled system resource
US10198784B2 (en) Capturing commands in a multi-engine graphics processing unit
US20180052700A1 (en) Facilitation of guest application display from host operating system
CN109032821B (zh) 自动驾驶主题消息处理方法、装置、设备及存储介质
CN116361002A (zh) 一种请求控制方法、装置、服务器和存储介质
CN115878333A (zh) 进程组间的一致性判断方法、装置及设备
CN114218000A (zh) 日志管理方法、装置、电子设备及计算机可读存储介质
CN111026463B (zh) 一种页面加载方法、装置、设备和存储介质
CN113778910A (zh) 一种数据缓存的处理方法及装置
US20130239113A1 (en) Information processing apparatus, computer product, and information processing method
US8661451B1 (en) Multi-programming-language service data optimization

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