接口限流方法及装置与流程

专利2024-10-16  29


本申请涉及通信技术领域,尤其涉及一种接口限流方法及装置。



背景技术:

随着互联网技术的快速发展,互联网用户不断增加,而随着互联网用户数量的增加,用户向访问接口的发送的访问请求也呈现激增的趋势。鉴于服务器的物理和软件资源的限制,激增的访问请求会导致服务器的性能降低,影响服务器的正常运行。

因此,如何提供一种接口限流的技术方案,以保障服务器运行的稳定性,是目前本领域技术人员亟需解决的问题。



技术实现要素:

本发明所要解决的技术问题是提供一种接口限流方法,以保障服务器运行的稳定性。

本发明还提供了一种接口限流装置,用于保证上述方法在实际中的实现及应用。

一种接口限流方法,包括:

当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

获取所述访问接口的接口配置信息;

若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

若存在,则获取与所述请求地址对应的限流策略;

判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

上述的方法,可选的,还包括:

若所述接口配置信息中未包含限流配置信息,或所述限流配置信息中包含的限流地址集合中不存在与所述请求地址相匹配的地址信息,则使所述访问接口接收所述访问请求。

上述的方法,可选的,还包括:

若判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略,则为所述访问请求分配一个处理线程;

将与所述处理线程的线程标识对应的计数池确定为第一计数池;

对所述第一计数池的加锁计数加一,并使访问接口接收所述访问请求;

在所述访问请求访问结束后,对所述第一计数池的加锁计数减一。

上述的方法,可选的,若目标限流策略为第一限流策略,所述判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,包括:

确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

上述的方法,可选的,若目标限流策略为第二限流策略,所述判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,包括:

获取当前系统时间;

判断所述当前系统时间是否在所述目标限流策略中包含的限流时间段内;

若不在,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若在,则确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

一种接口限流装置,包括:

拦截单元,用于当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

第一获取单元,用于获取所述访问接口的接口配置信息;

第一判断单元,用于若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

第二获取单元,用于若存在,则获取与所述请求地址对应的限流策略;

第二判断单元,用于判断单元用于,判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

禁止单元,用于若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

上述的装置,可选的,还包括:

第一接收单元,用于若所述接口配置信息中未包含限流配置信息,或所述限流配置信息中包含的限流地址集合中不存在与所述请求地址相匹配的地址信息,则使所述访问接口接收所述访问请求。

上述的装置,可选的,还包括:

分配单元,用于若判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略,则为所述访问请求分配一个处理线程;

确定单元,用于将与所述处理线程的线程标识对应的计数池确定为第一计数池;

第二接收单元,用于对所述第一计数池的加锁计数加一,并使访问接口接收所述访问请求;

执行单元,用于在所述访问请求访问结束后,对所述第一计数池的加锁计数减一。

上述的装置,可选的,若目标限流策略为第一限流策略,所述第二判断单元执行判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,用于:

确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

上述的装置,可选的,若目标限流策略为第二限流策略,所述第二判断单元执行判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,用于:

获取当前系统时间;

判断所述当前系统时间是否在所述目标限流策略中包含的限流时间段内;

若不在,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若在,则确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的接口限流方法。

一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的接口限流方法。

与现有技术相比,本申请包括以下优点:

本申请提供了一种接口限流方法及装置,该方法包括:当检测到用户向访问接口发送访问请求时,在访问接口外拦截访问请求,获取访问请求的请求地址;获取访问接口的接口配置信息;若接口配置信息中包含限流配置信息,则判断限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;若存在,则获取与请求地址对应的限流策略;若判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量满足目标限流策略,则禁止访问接口接收访问请求;其中,目标限流策略为请求地址对应的限流策略。基于访问接口的接口配置信息,确定是否允许该访问接口接收访问请求,从而使所述访问接口接收或禁止接收该访问请求,实现对访问接口的限流,进而保障服务器运行的稳定性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请提供的一种接口限流方法的方法流程图;

图2为本申请提供的一种接口限流方法的又一方法流程图;

图3为本申请提供的一种接口限流方法的另一方法流程图;

图4为本申请提供的一种接口限流装置的结构示意图;

图5为本申请提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本申请实施例提供了一种接口限流方法,该方法可以应用在多种系统平台,其执行主体可以运行在计算机终端或各种移动设备的处理器,所述接口限流方法的方法流程图如图1所示,具体包括:

s101、当检测到用户向访问接口发送访问请求时,在访问接口外拦截访问请求,获取访问请求的请求地址。

实时检测是否有用户向访问接口发送访问请求,当检测到用户向访问接口发送访问请求时,在访问接口外拦截该访问请求,并获取访问请求的请求地址。

s102、获取访问接口的接口配置信息。

本申请实施例提供的方法中,获取访问接口的接口配置信息。

s103、判断接口配置信息中是否包含限流配置信息。

本申请实施例提供的方法中,预先为系统中的部分访问接口设置限流权限,生成限流配置信息,并将限流配置信息写入该访问接口的接口配置信息中,其中,限流配置信息包括限流地址集合、以及限流地址集合中的包含的每个地址信息对应的限流策略。

限流地址集合中包含多个被限流的地址信息,每个地址信息对应的限流策略用于指示对该地址信息对应的访问请求进行限流处理,也就是控制访问接口对该地址信息对应的访问请求的接收。

需要说明的是,只有设置限流权限的访问接口,该访问接口的接口配置信息中才包含限流配置信息。

若判断出接口配置信息中包含限流配置信息,则执行步骤s104,若判断出接口配置信息中不包含限流配置信息,则执行步骤s105。

s104、判断限流配置信息包含的限流地址集合中是否存在与该请求地址相匹配的地址信息。

基于请求地址,遍历限流配置信息包含的限流地址集合中的各个地址信息,判断限流地址集合中是否存在与请求地址相匹配的地址信息,若存在,则执行步骤s106,若不存在,则执行步骤s105。

s105、使访问接口接收访问请求。

若接口配置信息中不包含限流配置信息,或接口配置信息中包含限流配置信息,但是该限流配置信息包含的限流地址集合中不存在与请求地址相匹配的地址信息,则说明该请求地址为访问接口的非限流地址,并使访问接口接收访问请求,对访问请求进行响应。

s106、获取请求地址对应的限流策略。

若接口配置信息中包含限流配置信息,且限流配置信息包含的限流地址集合中存在与该请求地址相匹配的地址信息,则获取请求地址对应的限流策略;具体的,将限流地址集合中与请求地址对应的地址信息确定为目标地址信息,获取限流配置信息中与目标地址信息对应的限流策略,将与目标地址信息对应的限流策略确定为请求地址对应的限流策略。

可选的,限流策略包括第一限流策略和第二限流策略。

s107、判断访问接口当前接收的访问请求中与请求地址对应的访问请求的总量是否满足目标限流策略;其中,目标限流策略为请求地址对应的限流策略。

统计访问接口当前的访问请求中与请求地址对应的访问请求的总量,并判断访问接口当前的访问请求中与请求地址对应的访问请求的总量是否满足目标限流策略;其中,目标限流策略也为请求地址对应的限流策略,若访问接口当前接收的访问请求中与请求地址对应的访问请求的总量满足目标限流策略,则执行步骤s108,若访问接口当前接收的访问请求中与请求地址对应的访问请求的总量不满足目标限流策略,则执行步骤s109。

参阅图2,若目标限流策略为第一限流策略,判断访问接口当前接收的访问请求中与请求地址对应的访问请求的总量是否满足目标限流策略的过程,具体包括:

s201、确定预设的访问接口对应的各个计数池中带锁的计数池。

本申请实施例提供的方法中,预设访问接口对应的多个计数池,当访问接口接收一个访问请求时,对多个计数池中与访问请求对应的计数池进行加锁计数加一,并在访问结束后,对访问请求对应的计数池进行加锁计数减一。

获取所有预设的计数池,并下从各个计数池中确定带锁的计数池。

需要说明的是,所有带锁的计数池中的加锁计数总和用于表征访问接口当前接收的访问请求总量。

s202、确定带锁的计数池中,与请求地址相关的计数池,并将与请求地址相关的计数池确定为目标计数池。

从带锁的计数池中,查找与请求地址相关的所有计数池,具体的,获取每个带锁的计数池对应的标识集合,基于标识集合,判断标识集合中是否存在请求地址对应的标识,若存在,则将该标识集合对应的计数池确定为与请求地址相关的计数池。

将与请求地址相关的每个计数池确定为目标计数池。

s203、统计所有目标计数池内与请求地址对应的加锁计数的总和。

统计每个目标计数池内与请求地址对应的加锁计数之和,具体的,确定每个目标计数池对应的标识集合中与请求地址对应的标识,统计每个目标计数池对应的标识集合中与请求地址对应的标识之和。

将所有目标计数池对应的标识集合中与请求地址对应的标识之和进行累加,得到所有目标计数池内与请求地址对应的加锁计数的总和。

s204、判断与请求地址对应的加锁计数的总和是否大于目标限流策略中包含的请求地址对应的限流阈值。

本申请实施例提供的方法中,预先为限流地址集合中的每个地址信息,配置每个地址信息各自对应的限流阈值,并将限流阈值存储至限流策略中。

确定目标限流策略中包含的该请求地址对应的限流阈值,判断与请求地址对应的加锁计数的总和是否大于目标限流策略中包含的该请求地址对应的限流阈值,若与请求地址对应的加锁计数的总和不大于目标限流策略中包含的该请求地址对应的限流阈值,则执行步骤s205,若与请求地址对应的加锁计数的总和大于目标限流策略中包含的该请求地址对应的限流阈值,则执行步骤s206。

s205、判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量不满足目标限流策略。

若与请求地址对应的加锁计数的总和不大于目标限流策略中包含的该请求地址对应的限流阈值,则判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量不满足目标限流策略。

s206、判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略。

若与请求地址对应的加锁计数的总和大于目标限流策略中包含的该请求地址对应的限流阈值,则判断出访问接口当前接收的访问请求中与该请求地址对应的访问请求的总量不满足目标限流策略。

本申请实施例提供的方法中,若目标策略为第二限流策略,参阅图3,判断访问接口当前接收的访问请求中与请求地址对应的访问请求的总量是否满足目标限流策略的过程,具体包括:

s301、获取当前系统时间。

获取当前系统时间,其中,当前系统时间为系统当前的时间。

s302、判断当前系统时间是否在目标限流策略中包含的限流时间段内。

本申请实施例提供的方法中,预先为访问接口的限流地址集合中的每个地址信息对应的设置限流时间段。

判断当前系统时间是否在目标限流策略中包含的限流时间段内,若当前系统时间不在目标限流策略中包含的限流时间段内,则执行步骤s303,若当前系统时间在目标限流策略中包含的限流时间内,则执行步骤s304。

s303、判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量不满足目标限流策略。

若当前系统时间不在目标限流策略中包含的限流时间段内,或与请求地址对应的加锁计数的总和不大于目标限流策略中包含的该请求地址对应的限流阈值,则判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量不满足目标限流策略。

s304、确定预设的访问接口对应的各个计数池中带锁的计数池。

若当前系统时间在目标限流策略中包含的限流时间段内,则确定预设的访问接口对应的各个计数池中带锁的计数池,其中,确定预设的访问接口对应的各个计数池中带锁的计数池的具体过程同步骤s201类似,此处不再赘述。

s305、确定带锁的计数池中,与请求地址相关的计数池,并将与请求地址相关的计数池确定为目标计数池。

可选的,步骤s305的具体实现过程如步骤s202所述,此处不再赘述。

s306、统计所有目标计数池内与请求地址对应的加锁计数的总和。

可选的,步骤s306的具体实现过程如步骤s203所述,此处不再赘述。

s307、判断与请求地址对应的加锁计数的总和是否大于目标限流策略中包含的请求地址对应的限流阈值。

本申请实施例提供的方法中,预先为限流地址集合中的每个地址信息,配置每个地址信息各自对应的限流阈值,并将限流阈值存储至限流策略中。

确定目标限流策略中包含的该请求地址对应的限流阈值,判断与请求地址对应的加锁计数的总和是否大于目标限流策略中包含的该请求地址对应的限流阈值,若与请求地址对应的加锁计数的总和不大于目标限流策略中包含的该请求地址对应的限流阈值,则执行步骤s303,若与请求地址对应的加锁计数的总和大于目标限流策略中包含的该请求地址对应的限流阈值,则执行步骤s308。

s308、判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量满足目标限流策略。

若与请求地址对应的加锁计数的总和大于目标限流策略中包含的该请求地址对应的限流阈值,则判断出访问接口当前接收的访问请求中与该请求地址对应的访问请求的总量不满足目标限流策略。

s108、禁止访问接口接收访问请求。

若访问接口当前的访问请求中与请求地址对应的访问请求的总量满足目标限流策略,则说明该访问接口当前接收该请求地址对应的访问请求的数量已将达到上限,并禁止访问接口接收该请求地址对应的访问请求。

可选的,还可以生成服务繁忙的提示信息反馈给用户,提示用户当前访问人数过多,服务繁忙。

s109、为访问请求分配一个处理线程。

若访问接口当前的访问请求中与请求地址对应的访问请求的总量不满足目标限流策略,则说明访问接口当前接收该请求地址对应的访问请求的数量未达到上限,并为访问请求分配一个处理线程。

s110、将与处理线程的线程标识对应的计数池确定为第一计数池,并对第一计数池的加锁计数加一。

本申请实施例提供的方法中,预先为每个处理线程分配一个计数池,将处理线程的线程标识与计数池进行关联,从而实现基于处理线程的线程标识,能够确定与每个线程标识对应的计数池。

将与处理线程的线程标识对应的计数池确定为第一计数池,并对第一计数池进行加锁,以及对该第一计数池的加锁计数加一。需要说明的是,在对第一计数池进行加锁后,依据请求地址,对计数池当前的加锁进行标识,并将标识信息存储至计数池对应的标识集合中,以区分不同请求地址对应的加锁计数。

s111、使访问接口接收访问请求,并在访问请求访问结束后,对第一计数池的加锁计数减一。

本申请实施例提供的方法中,使访问接口接收访问请求,并对访问请求进行处理,当对访问请求处理完成后,即可认为访问请求访问结束,并在访问请求访问结束后,对第一计数池进行解锁,以及对该第一计数池的加锁计数减一。

本申请实施例提供的接口限流方法,当检测到用户向访问接口发送访问请求时,在访问接口外拦截访问请求,获取访问请求的请求地址;获取访问接口的接口配置信息;若接口配置信息中包含限流配置信息,则判断限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;若存在,则获取与请求地址对应的限流策略;若判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量满足目标限流策略,则禁止访问接口接收访问请求;其中,目标限流策略为请求地址对应的限流策略。基于访问接口的接口配置信息,确定是否允许该访问接口接收访问请求,从而使所述访问接口接收或禁止接收该访问请求,实现对访问接口的限流,进而保障服务器运行的稳定性。

与图1所述的方法相对应,本申请实施例还提供了一种接口限流装置,用于对图1中方法的具体实现,其结构示意图如图4所示,具体包括:

拦截单元401,用于当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

第一获取单元402,用于获取所述访问接口的接口配置信息;

第一判断单元403,用于若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

第二获取单元404,用于若存在,则获取与所述请求地址对应的限流策略;

第二判断单元405,用于判断单元用于,判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

禁止单元406,用于若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

本申请实施例提供的接口限流装置,当检测到用户向访问接口发送访问请求时,在访问接口外拦截访问请求,获取访问请求的请求地址;获取访问接口的接口配置信息;若接口配置信息中包含限流配置信息,则判断限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;若存在,则获取与请求地址对应的限流策略;若判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量满足目标限流策略,则禁止访问接口接收访问请求;其中,目标限流策略为请求地址对应的限流策略。基于访问接口的接口配置信息,确定是否允许该访问接口接收访问请求,从而使所述访问接口接收或禁止接收该访问请求,实现对访问接口的限流,进而保障服务器运行的稳定性。

在本申请的一个实施例中,基于前述方案,还可以配置为:

第一接收单元,用于若所述接口配置信息中未包含限流配置信息,或所述限流配置信息中包含的限流地址集合中不存在与所述请求地址相匹配的地址信息,则使所述访问接口接收所述访问请求。

在本申请的一个实施例中,基于前述方案,还可以配置为:

分配单元,用于若判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略,则为所述访问请求分配一个处理线程;

确定单元,用于将与所述处理线程的线程标识对应的计数池确定为第一计数池;

第二接收单元,用于对所述第一计数池的加锁计数加一,并使访问接口接收所述访问请求;

执行单元,用于在所述访问请求访问结束后,对所述第一计数池的加锁计数减一。

在本申请的一个实施例中,基于前述方案,若目标限流策略为第一限流策略,所述第二判断单元执行判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,用于:

确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

在本申请的一个实施例中,基于前述方案,若目标限流策略为第二限流策略,所述第二判断单元执行判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,用于:

获取当前系统时间;

判断所述当前系统时间是否在所述目标限流策略中包含的限流时间段内;

若不在,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若在,则确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

本申请实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行以下操作:

当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

获取所述访问接口的接口配置信息;

若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

若存在,则获取与所述请求地址对应的限流策略;

判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

本申请实施例还提供了一种电子设备,其结构示意图如图5所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令602进行以下操作:

当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

获取所述访问接口的接口配置信息;

若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

若存在,则获取与所述请求地址对应的限流策略;

判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上系统时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

以上对本申请所提供的一种接口限流方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。


技术特征:

1.一种接口限流方法,其特征在于,包括:

当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

获取所述访问接口的接口配置信息;

若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

若存在,则获取与所述请求地址对应的限流策略;

判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

2.根据权利要求1所述的方法,其特征在于,还包括:

若所述接口配置信息中未包含限流配置信息,或所述限流配置信息中包含的限流地址集合中不存在与所述请求地址相匹配的地址信息,则使所述访问接口接收所述访问请求。

3.根据权利要1所述的方法,其特征在于,还包括:

若判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略,则为所述访问请求分配一个处理线程;

将与所述处理线程的线程标识对应的计数池确定为第一计数池;

对所述第一计数池的加锁计数加一,并使访问接口接收所述访问请求;

在所述访问请求访问结束后,对所述第一计数池的加锁计数减一。

4.根据权利要求3所述的方法,其特征在于,若目标限流策略为第一限流策略,所述判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,包括:

确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

5.根据权利要求3所述的方法,其特征在于,若目标限流策略为第二限流策略,所述判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,包括:

获取当前系统时间;

判断所述当前系统时间是否在所述目标限流策略中包含的限流时间段内;

若不在,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若在,则确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

6.一种接口限流装置,其特征在于,包括:

拦截单元,用于当检测到用户向访问接口发送访问请求时,在所述访问接口外拦截所述访问请求,获取所述访问请求的请求地址;

第一获取单元,用于获取所述访问接口的接口配置信息;

第一判断单元,用于若所述接口配置信息中包含限流配置信息,则判断所述限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;所述限流配置信息包括所述限流地址集合,以及与所述限流地址集合中包含的每个地址信息对应的限流策略;

第二获取单元,用于若存在,则获取与所述请求地址对应的限流策略;

第二判断单元,用于判断单元用于,判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略;

禁止单元,用于若判断出所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足目标限流策略,则禁止所述访问接口接收所述访问请求;其中,所述目标限流策略为所述请求地址对应的限流策略。

7.根据权利要求6所述的装置,其特征在于,还包括:

第一接收单元,用于若所述接口配置信息中未包含限流配置信息,或所述限流配置信息中包含的限流地址集合中不存在与所述请求地址相匹配的地址信息,则使所述访问接口接收所述访问请求。

8.根据权利要7所述的装置,其特征在于,还包括:

分配单元,用于若判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略,则为所述访问请求分配一个处理线程;

确定单元,用于将与所述处理线程的线程标识对应的计数池确定为第一计数池;

第二接收单元,用于对所述第一计数池的加锁计数加一,并使访问接口接收所述访问请求;

执行单元,用于在所述访问请求访问结束后,对所述第一计数池的加锁计数减一。

9.根据权利要求8所述的装置,其特征在于,若目标限流策略为第一限流策略,所述第二判断单元执行判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,用于:

确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

10.根据权利要求8所述的装置,其特征在于,若目标限流策略为第二限流策略,所述第二判断单元执行判断所述访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量是否满足目标限流策略,用于:

获取当前系统时间;

判断所述当前系统时间是否在所述目标限流策略中包含的限流时间段内;

若不在,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若在,则确定预设的所述访问接口对应的各个计数池中带锁的计数池;其中,所有带锁的计数池中的加锁计数总和用于表征所述访问接口当前接收的访问请求的总量;

确定带锁的计数池中,与所述请求地址相关的计数池,并将与所述请求地址相关的计数池确定为目标计数池;

统计所有目标计数池内与所述请求地址对应的加锁计数的总和;

判断与所述请求地址对应的加锁计数的总和是否大于所述目标限流策略中包含的所述请求地址对应的限流阈值;

若不大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量不满足所述目标限流策略;

若大于,则判断出访问接口当前接收的访问请求中与所述请求地址对应的访问请求的总量满足所述目标限流策略。

技术总结
本申请提供了一种接口限流方法及装置,该方法包括:当检测到用户向访问接口发送访问请求时,在访问接口外拦截访问请求,获取访问请求的请求地址;获取访问接口的接口配置信息;若接口配置信息中包含限流配置信息,则判断限流配置信息包含的限流地址集合中是否存在与所述请求地址相匹配的地址信息;若存在,则获取与请求地址对应的限流策略;若判断出访问接口当前接收的访问请求中与请求地址对应的访问请求的总量满足目请求地址对应的限流策略,则禁止访问接口接收访问请求。基于访问接口的接口配置信息,确定是否允许该访问接口接收访问请求,从而使所述访问接口接收或禁止接收该访问请求,实现对访问接口的限流,进而保障服务器运行的稳定性。

技术研发人员:侯艳军
受保护的技术使用者:北京房天下嘉居网络技术有限公司
技术研发日:2020.12.10
技术公布日:2021.04.06

转载请注明原文地址:https://xbbs.6miu.com/read-21837.html