CN111381988A - 一种请求限速方法、装置、电子设备及存储介质 - Google Patents
一种请求限速方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111381988A CN111381988A CN202010215327.6A CN202010215327A CN111381988A CN 111381988 A CN111381988 A CN 111381988A CN 202010215327 A CN202010215327 A CN 202010215327A CN 111381988 A CN111381988 A CN 111381988A
- Authority
- CN
- China
- Prior art keywords
- requests
- sent
- time period
- request
- cache
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种请求限速方法、装置、电子设备及存储介质,所述方法包括:接收终端发送的请求,所述请求携带时间戳;根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期互不相同;在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。通过本申请的请求限速方法,可以根据实际需求设置多个单位不同的时间周期,通过对各个时间周期内已发送到缓存队列的请求的数量进行监控,进而实现对接口的访问速率的灵活控制,尤其是在高并发请求下,能保证服务端正常服务于大部分用户的请求,避免系统瘫痪的状况。
Description
技术领域
本发明涉及系统维护技术领域,特别是涉及一种请求限速方法、装置、电子设备及存储介质。
背景技术
在开发高并发系统时,通常可以采用三种方式来保护系统,包括:缓存、降级以及限流。缓存的目的是提升系统访问速度且增大系统的吞吐量;降级的目的是当服务出现问题或者影响到核心流程的性能时,将出现问题的服务暂时屏蔽,等待用户访问高峰期过后或问题解决后再打开;限流的目的是通过对并发访问或请求进行限速,或者对一个时间窗口内的请求进行限速以保护系统,在达到限制速率时拒绝服务。然而,在一些高并发系统后端重要服务之间的调用场景中,无论是缓存、降级还是限流,均无法实现对系统接口的访问速率的灵活控制,因而无法较好地实现对系统的保护。
发明内容
本申请提供了一种请求限速方法、装置、电子设备及存储介质,旨在针对高并发系统中后端接口的比较重要或基础的接口,提供一种更灵活的请求限速方法。具体技术方案如下:
在本申请实施例第一方面,首先提供了一种请求限速方法,执行于服务器,包括:
接收终端发送的请求,所述请求携带时间戳;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期的单位互不相同;
在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
可选地,至少两个时间周期包括:以秒为单位的第一时间周期、以分钟为单位的第二时间周期、以小时为单位的第三时间周期;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,包括:
根据所述时间戳的秒值,获得在与所述秒值对应的一秒钟内已发送到缓存队列的请求的第一数量;
根据所述时间戳的分钟值,获得在与所述分钟值对应的一分钟内已发送到缓存队列的请求的第二数量;
根据所述时间戳的小时值,获得在与所述小时值对应的一小时内已发送到缓存队列的请求的第三数量;
在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略,包括:
在所述第一数量、第二数量以及第三数量中存在至少一个数量大于对应的预设阈值时,针对所述终端发送的请求执行限速策略。
可选地,所述方法还包括:
在所有时间周期内已发送到缓存队列的请求的数量均不大于所属时间周期对应的预设阈值时,将所述请求发送到所述缓存队列,并更新各个时间周期内已发送到缓存队列的请求的数量。
可选地,在接收终端发送的请求之前,所述方法还包括:
在本地为各时间周期分别创建对应的缓存对象,所述缓存对象的有效时长大于对应的时间周期的长度,所述缓存对象用于以键值对的形式存储下一次接收到的请求的时间戳,和在下一次接收到的请求的时间戳所属的各个时间周期内已发送到缓存队列的请求的数量;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,包括:
从所述时间戳所属的各个时间周期所对应的缓存对象中读取缓存的键值对;
从所述缓存的键值对中读取在各个时间周期内已发送到缓存队列的请求的数量。
可选地,所述键值对包括:属性和属性值,所述属性表示下一次接收到的请求的时间戳,所述属性值表示在所述键值对所对应的时间周期内已发送到缓存队列的请求的数量;所述属性值采用计数器对所对应的时间周期内已发送到缓存队列的请求的数量进行计数。
可选地,所述方法还包括:
针对各个时间周期,在进入下一个时间周期时,将对应的缓存对象中的计数器清零,以实现在下一个时间周期内对已发送到缓存队列的请求的数量进行计数。
可选地,针对所述终端发送的请求执行限速策略,包括:丢弃所述终端发送的请求,并向所述终端发送表示请求失败的响应信息。
在本申请实施例第二方面,还提供了一种请求限速装置,应用于服务器,包括:
接收模块,用于接收终端发送的请求,所述请求携带时间戳;
获得模块,用于根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期的单位互不相同;
执行模块,用于在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
可选地,至少两个时间周期包括:以秒为单位的第一时间周期、以分钟为单位的第二时间周期、以小时为单位的第三时间周期;
所述获得模块包括:
第一获得子模块,用于根据所述时间戳的秒值,获得在与所述秒值对应的一秒钟内已发送到缓存队列的请求的第一数量;
第二获得子模块,用于根据所述时间戳的分钟值,获得在与所述分钟值对应的一分钟内已发送到缓存队列的请求的第二数量;
第三获得子模块,用于根据所述时间戳的小时值,获得在与所述小时值对应的一小时内已发送到缓存队列的请求的第三数量;
所述执行模块包括:
执行子模块,用于在所述第一数量、第二数量以及第三数量中存在至少一个数量大于对应的预设阈值时,针对所述终端发送的请求执行限速策略。
可选地,所述装置还包括:
更新模块,用于在所有时间周期内已发送到缓存队列的请求的数量均不大于所属时间周期对应的预设阈值时,将所述请求发送到所述缓存队列,并更新各个时间周期内已发送到缓存队列的请求的数量。
可选地,所述装置还包括:
创建模块,用于在本地为各时间周期分别创建对应的缓存对象,所述缓存对象的有效时长大于对应的时间周期的长度,所述缓存对象用于以键值对的形式存储下一次接收到的请求的时间戳,和在下一次接收到的请求的时间戳所属的各个时间周期内已发送到缓存队列的请求的数量;
所述获得模块包括:
第四获得子模块,用于从所述时间戳所属的各个时间周期所对应的缓存对象中读取缓存的键值对;
第五获得子模块,用于从所述缓存的键值对中读取在各个时间周期内已发送到缓存队列的请求的数量。可选地,所述键值对包括:属性和属性值,所述属性表示下一次接收到的请求的时间戳,所述属性值表示在所述键值对所对应的时间周期内已发送到缓存队列的请求的数量;所述属性值采用计数器对所对应的时间周期内已发送到缓存队列的请求的数量进行计数。
可选地,所述装置还包括:
清零模块,用于针对各个时间周期,在进入下一个时间周期时,将对应的缓存对象中的计数器清零,以实现在下一个时间周期内对已发送到缓存队列的请求的数量进行计数。
可选地,所述执行模块包括:
发送模块,用于丢弃所述终端发送的请求,并向所述终端发送表示请求失败的响应信息。。
在本申请实施例第三方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的请求限速方法。
在本申请实施例第四方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的请求限速方法。
在本实施例中,服务端在接收终端发送的请求后,首先根据请求携带的时间戳获得在至少两个时间周期内已发送到缓存队列的请求的数量,该缓存队列用于缓存待处理的请求,且各时间周期的单位互不相同;然后判断各个时间周期内已发送到缓存队列的请求的数量是否大于所属时间周期对应的预设阈值,如果存在任意一个时间周期内已发送到缓存队列的请求的数量大于该时间周期对应的预设阈值,表示该时间周期内接收的请求的数量已达上限,无法继续处理该请求,因而针对该请求执行限速策略。本申请中可以根据实际需求设置多个单位不同的时间周期,通过对各个时间周期内已发送到缓存队列的请求的数量进行监控,进而实现对接口的访问速率的灵活控制,尤其是在后端接口高并发系统中,针对一些比较重要或比较基础的接口,采用本申请的请求限速方法能在高并发请求下保证服务端正常服务于大部分用户的请求,而不至于在用户访问量暴增的情况下出现系统瘫痪的状况。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例示出的一种实施环境的示意图;
图2是本申请一实施例示出的一种请求限速方法的流程图;
图3是本申请一实施例示出的一种请求限速方法的原理图;
图4是本申请一实施例示出的一种请求限速方法的整体过程示意图;
图5是本申请一实施例示出的一种请求限速装置的第一种结构框图;
图6是本申请一实施例示出的一种请求限速装置的第二种结构框图;
图7是本申请一实施例示出的一种请求限速装置的第三种结构框图;
图8是本申请一实施例示出的一种请求限速装置的第四种结构框图;
图9是本申请一实施例示出的一种请求限速装置的第五种结构框图;
图10是本申请一实施例示出的一种请求限速装置的第六种结构框图;
图11是本申请一实施例示出的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
传统的高并发系统采用的限速策略包括:缓存、降级以及限流,缓存的目的是提升系统的访问速度并增大系统的吞吐量;降级的目的是当某项服务出现问题时,将该服务暂时屏蔽,等待用户访问高峰过后,或者问题解决后再开启该服务;限流的目的是通过对一个时间窗口内的请求进行限速(服务器每接收到一个请求时,首先查看当前时间窗口内剩余的待处理的请求的数量,如果该数量不高于预设阈值,将该请求加入当前时间窗口内,否则返回请求失败或者请求错误的消息),一旦达到限制速率则拒绝服务。
在上述传统的限速策略中,缓存需要额外设置存储空间以临时存储暂时无法响应的请求,增加了存储开销和响应用户请求的延时;降级需要将出现问题的服务暂时屏蔽,影响服务器业务处理性能,降低用户的使用体验;而在进行限流时,仅根据当前时刻剩余的待处理的请求的数量实现接口访问速率的控制,控制方式单一,因而灵活性较差。
基于传统的限速策略中存在的问题,本申请提供了一种请求限速方法,采用的技术构思为:预先设置多个长度不同的时间周期,为每个时间周期设置对应的限速条件(一个时间周期的限速条件可以理解为:在该时间周期内已发送到缓存队列的请求的数量大于该时间周期对应的预设阈值),服务器每次接收到一个请求后,判断是否存在满足限速条件的时间周期,在存在任意一个满足限速条件的时间周期时,针对该次请求,执行限速策略,因而无需针对请求设置额外的存储空间,避免造成响应用户请求的延时,且保证服务器的业务处理性能的情况下,可实现对接口的访问速率的灵活控制。
基于上述技术构思,本申请提供了一种请求限速方法,应用于图1中的服务端。图1是本申请一实施例示出的一种实施环境的示意图。在该实施环境中,服务端与多个客户端(包括:客户端1、客户端2、……、客户端N)通信连接,接收并处理各个客户端发送的请求。
图2是本申请一实施例示出的一种请求限速方法的流程图。参照图2,本申请的请求限速方法包括以下步骤:
步骤S11:接收终端发送的请求,所述请求携带时间戳。
在本实施例中,终端可以是任意安装有客户端的联网设备,例如智能手机、PC、平板等,本申请对此不作具体限制。终端可以通过客户端向服务端发起请求。每一个请求均携带有时间戳,例如,终端在2020年10月1日10:01:05向服务端发送了一个HTTP(HyperTextTransfer Protocol,超文本传输协议)请求,那么该请求的时间戳可以是2020年10月1日10:01:05。
步骤S12:根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期的单位互不相同。
为便于各个实施例的陈述,本申请实施例中以T表示时间周期,且两个时间周期的单位不同,是指该两个时间周期的长度不同。例如,当时间周期T1的单位为1秒,时间周期T2的单位为1分时,时间周期T1与时间周期T2的长度不同。
在本实施例中,可以从任意时刻开始设置多个时间周期,多个时间周期的的起始时刻相同。示例地,起始时刻为2020年10月1日10:00:00,如果设置的时间周期T1、T2以及T3分别为1秒、10秒以及20秒,那么2020年10月1日10:00:00-2020年10月1日10:00:20对应时间周期T3,2020年10月1日10:00:00-2020年10月1日10:00:10,和2020年10月1日10:00:10-2020年10月1日10:00:20,对应时间周期T2,同理,2020年10月1日10:00:00-2020年10月1日10:00:20中的每一秒对应时间周期T1;如果在2020年10月1日10:00:00-2020年10月1日10:00:20这段时间中,存在任意一个时间周期满足限速条件,那么将确定满足限速条件的时刻重新确定为起始时刻,按照上述方式再次设置时间周期T1、T2以及T3;如果在2020年10月1日10:00:00-2020年10月1日10:00:20这段时间中,没有任意一个时间周期满足限速条件,那么对于T3,将进入下一个周期,执行与下一个周期相应的步骤(将在后文详细说明)。
在步骤S12中,已发送到缓存队列的请求的数量是指在当前时间周期内所有发送到缓存队列的请求的数量,包括在该时间周期内已经处理的请求的数量。示例地,服务器当前接收到一个请求X,根据该请求X携带的时间戳,例如2020年10月1日10:00:030,确定请求X所在的某一个时间周期为2020年10月1日10:00:00-2020年10月1日10:01:00,而在2020年10月1日10:00:00-2020年10月1日10:00:30这段时间内,服务器发送到到缓存队列的请求的总数量为200,在2020年10月1日10:00:030这一时刻缓存队列中的剩余的请求的数量为100(即:已经处理了100个请求),那么在接收到请求X时,获得的已发送到缓存队列的请求的数量应当为200。
在本实施例中,请求的发送时刻和接收时刻之间的差值忽略不计,因而,可以直接将请求中携带的时间戳作为访问接口时的时间戳;当然,也可以将服务器接收到请求的时刻作为访问接口时的时间戳,本申请对此不作具体限制。
步骤S13:在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
在本实施例中,在时间周期的数量是多个时,只要任意一个时间周期内已发送到缓存队列的请求的数量大于该时间周期设置的预设阈值,可以针对终端发送的请求执行限速策略。预设阈值表示在该时间周期内服务端所能接收的请求的上限值。
示例地,服务端设置的多个时间周期包括:T1、T2以及T3,且T1<T2<T3,其中,T1对应的预设阈值为NUM1,T2对应的预设阈值为NUM2,T3对应的预设阈值为NUM3,服务端在接收到请求X后,分别获得在以T1为时间周期的最近时间段内已发送到缓存队列的请求的数量S1,在以T2为时间周期的最近时间段内已发送到缓存队列的请求的数量S2,在以T3为时间周期的最近时间段内已发送到缓存队列的请求的数量S3,当S1>NUM1、S2>NUM2、S3>NUM3中的任意一个或多个条件成立,确定针对请求X需要执行限速策略。
图3是本申请一实施例示出的一种请求限速方法的原理图。下面将结合图3以一个具体的实施例对本申请的请求限速方法进行详细的说明。
示例地,在图3中带箭头的线条表示时间轴,时间轴的实现部分表示历史时间,时间轴的虚线部分表示未到来的时间,t时刻为2020年10月1日10:15:30,t1时刻为2020年10月1日10:15:00,t2时刻为2020年10月1日10:16:00,t3时刻为2020年10月1日10:10:00,t4时刻为2020年10月1日10:20:00,t5时刻为2020年10月1日10:00:00,t6时刻为2020年10月1日10:30:00;服务端设置的多个时间周期包括:T1、T2以及T3,T1为1分钟,对应的预设阈值NUM1为50,T2为10分钟,对应的预设阈值NUM2为400,T3为30分钟,对应的预设阈值NUM3为1000;T1对应的最新的时间段为2020年10月1日10:15:00-2020年10月1日10:16:00,对应图3中的t1-t2,T2对应的最新的时间段为2020年10月1日10:10:00-2020年10月1日10:20:00,对应图3中的t3-t4,T3对应的最新的时间段为2020年10月1日10:00:00-2020年10月1日10:30:00,对应图3中的t5-t6。假设当前接收到一个请求X,对应的时间戳为2020年10月1日10:15:30,那么依次获得在T1对应的最新的时间段(即:t1-t2)内已发送到缓存队列的请求的数量S1、在T2对应的最新的时间段(即:t3-t4)内已发送到缓存队列的请求的数量S2、以及在T3对应的最新的时间段(即:t5-t6)内已发送到缓存队列的请求的数量S3,例如在S1、S2以及S3分别为45、460、1100时,由于S3大于NUM3,因此,满足时间周期T3对应的限速条件,应当针对请求X执行限速策略。在上述过程中,如果S1、S2以及S3分别为45、460、980,那么时间周期T1、T2以及T3均不满足限速条件,因此无需对请求X执行限速策略。
在一种实施方式中,针对所述请求执行限速策略,具体可以是:
丢弃所述终端发送的请求,并向所述终端发送表示请求失败的响应信息。
在本实施例中,服务端在确定对一个请求执行限速策略后,向该请求发送表示请求失败或者请求错误的响应信息,终端在接收到该响应信息,可以再次向服务端发起请求,直到接收到请求成功的响应信息。其次,请求失败或者请求错误表示服务端丢弃该请求,即:不会将请求添加到缓存队列中。
在本实施例中,服务端在接收终端发送的请求后,首先根据请求携带的时间戳获得在至少两个时间周期内已发送到缓存队列的请求的数量,该缓存队列用于缓存待处理的请求,且各时间周期的单位互不相同,然后判断各个时间周期内已发送到缓存队列的请求的数量是否大于所属时间周期对应的预设阈值,如果存在任意一个时间周期内已发送到缓存队列的请求的数量大于该时间周期对应的预设阈值,表示该时间周期内接收的请求的数量已达上限,无法继续处理该请求,因而针对该请求执行限速策略。相较于相关技术中仅从当前时刻出发,根据当前时刻剩余的待处理的请求的数量实现接口访问速率的控制,本申请可以根据实际需求设置多个单位不同的时间周期,通过对各个时间周期内已发送到缓存队列的请求的数量进行监控,进而实现对接口的访问速率的灵活控制,尤其是在后端接口高并发系统中,针对一些比较重要或比较基础的接口,采用本申请的请求限速方法能在高并发请求下保证服务端正常服务于大部分用户的请求,而不至于在用户访问量暴增的情况下出现系统瘫痪的状况。
结合以上实施例,在一种实施方式中,至少两个时间周期包括:以秒为单位的第一时间周期、以分钟为单位的第二时间周期、以小时为单位的第三时间周期;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,包括:
根据所述时间戳的秒值,获得在与所述秒值对应的一秒钟内已发送到缓存队列的请求的第一数量;
根据所述时间戳的分钟值,获得在与所述分钟值对应的一分钟内已发送到缓存队列的请求的第二数量;
根据所述时间戳的小时值,获得在与所述小时值对应的一小时内已发送到缓存队列的请求的第三数量;
在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略,包括:
在所述第一数量、第二数量以及第三数量中存在至少一个数量大于对应的预设阈值时,针对所述终端发送的请求执行限速策略。
在本实施例中,在将任意一个时间周期内已发送到缓存队列的请求的数量与所属时间周期对应的预设阈值进行比较时,可以按照时间周期由小到大的顺序逐个比较,当某一个时间周期满足执行限速策略的条件时,直接执行限速策略,而不用继续对下一个时间周期是否满足执行限速策略的条件进行判断;也可以不按照时间周期的时间粒度的大小比较,而直接判断所有的时间周期是否满足执行限速策略的条件,在某一个时间周期满足执行限速策略的条件时,直接执行限速策略。
在本实施例中,服务端预先设置时间周期T1为1秒钟,对应的预设阈值为100,设置时间周期T2为1分钟,对应的预设阈值为500,设置时间周期T3为1小时,对应的预设阈值为25000。终端向服务端发送请求X,携带的时间戳为2020年10月1日10:01:05,服务端提取出时间戳中的秒值,是05,获得在这一秒钟内已发送到缓存队列的请求的第一数量是50,由于50不大于T1对应的预设阈值100,不满足执行限速策略的条件,继续提取出时间戳中的分钟值01,获得在这一分钟内已发送到缓存队列的请求的第二数量是450,由于450不大于T2对应的预设阈值500,不满足执行限速策略的条件,继续提取出时间戳中的小时值10,获得在这一小时内已发送到缓存队列的请求的第三数量是23000,由于23000不大于T3对应的预设阈值25000,不满足执行限速策略的条件,因而,针对该请求X不需要执行限速策略。
在上述过程中,如果在05这一秒钟内已发送到缓存队列的请求的第一数量为120,由于大于T1对应的预设阈值100,满足执行限速策略的条件,可以直接执行限速策略,而无需再提取分钟值和小时值再进一步判断是否满足执行限速策略的条件。其次,在上述过程中,还可以一次性提取出秒值05、分钟值01以及小时值10,分别获得在最近一秒钟内,最近一分钟内以及最近一小时内的已发送到缓存队列的请求的数量50、450以及23000,分别与T1、T2以及T3对应的预设阈值比较,由于比较结果没有一个数量值满足大于预设阈值的条件,因而无需执行限速策略。
当然,在本实施例中,时间周期的单位并不局限于1秒、1分或者1小时,还可以按照任意单位设置,例如,10分钟、2小时、30小时等,本申请对此不作具体限制。
在本实施例中,服务端设置多个单位不同的时间周期,从而将访问接口分等级限速,即:将访问接口按照秒级、分钟级以及小时级这三个等级进行限速,当任意一个等级满足限度条件时,执行限速策略,从而灵活控制接口的访问速率,保证服务端在高并发请求的情况下也能正常服务于大部分用户的请求,而不至于在用户访问量暴增的情况下出现系统瘫痪的状况。
结合以上实施例,在一种实施方式中,本申请的请求限速方法还可以包括如下步骤:
在所有时间周期内已发送到缓存队列的请求的数量均不大于所属时间周期对应的预设阈值时,将所述请求发送到所述缓存队列,并更新各个时间周期内已发送到缓存队列的请求的数量。
在本实施例中,如果所有时间周期内已发送到缓存队列的请求的数量均不大于所属时间周期对应的预设阈值,一方面将请求发送到缓存队列中等待处理,另一方面更新各个时间周期内已发送到缓存队列的请求的数量。同时,服务端还可以向终端发送请求成功的响应。
本实施例中在判断得到不需要执行限速策略时,对各个时间周期内已发送到缓存队列的请求的数量进行更新,以便于下一次限速策略的执行条件的判断,防止判断出错,提高控制服务端访问接口的访问速率的精准度。
结合以上实施例,在一种实施方式中,在接收终端发送的请求之前,本申请的请求限速方法还可以包括如下步骤:
在本地为各时间周期分别创建对应的缓存对象,所述缓存对象的有效时长大于对应的时间周期的长度,所述缓存对象用于以键值对的形式存储下一次接收到的请求的时间戳,和在下一次接收到的请求的时间戳所属的各个时间周期内已发送到缓存队列的请求的数量。
在一种实施方式中,所述键值对包括:属性和属性值,所述属性表示下一次接收到的请求的时间戳,所述属性值表示在所述键值对所对应的时间周期内已发送到缓存队列的请求的数量;所述属性值采用计数器对所对应的时间周期内已发送到缓存队列的请求的数量进行计数。
在本实施例中,可首先在服务端安装Guava Cache(谷歌开源的java框架下的一种java工具包,可用于实现本地缓存)组件和JDK(Java Development ToolKit,Java语言的软件开发工具包),其中,JDK优选1.6及以上版本,之后,服务器在本地创建与各个时间周期对应的缓存对象,由于缓存对象具有过期时间,因而为了保证能正常记录时间周期内已发送到缓存队列的请求的数量,缓存对象的过期时间应当大于时间周期。其中,缓存对象可以通过CACHE(高速缓冲存储器,一种位于计算机中央处理器与内存之间的容量较小但速度很高的存储器)存储器创建。在本实施例中,缓存对象以键值对的形式存储时间戳和该时间戳所属的时间周期内已发送到缓存队列的请求的数量。其中,键值对包括key(即:属性)和value(即:属性值),value可采用AtomicLong(长整形的原子计数器)计数器对在各个时间周期内已发送到缓存队列的请求的数量进行计数。
因此,更新各个时间周期内已发送到缓存队列的请求的数量,可以包括:
更新各个时间周期对应的缓存对象中缓存的键值对。
在本实施例中,如果确定某一个请求需要处理,则需要将所有的时间周期对应的缓存对象中缓存的键值对进行更新,具体对键值对中的value进行更新。
例如,时间周期T1为1秒,针对时间周期T1对应的缓存对象,服务器每接收到一个请求后,提取该请求的时间戳中的秒值,对key进行赋值,如果确定将该请求发送到缓存队列,则在value的原来的值的基础上加一,表示在这一秒内服务器又接收到一个新的请求。
相应地,根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,可以包括:
从所述时间戳所属的各个时间周期所对应的缓存对象中读取缓存的键值对;
从所述缓存的键值对中读取在各个时间周期内已发送到缓存队列的请求的数量。
示例地,服务端设置的时间周期包括T1、T2以及T3,且T1为1秒、T2为1分、T3为1小时,对应的缓存对象依次为:缓存对象1、缓存对象2以及缓存对象3;服务端接收到一个请求后,提取的时间戳的秒值为05,则到缓存对象1中获取与05相同的key所对应的value的值,将该value的值作为这一秒内已发送到缓存队列的请求的数量;如果提取的时间戳的分钟值为01,则到缓存对象2中获取与01相同的key所对应的value的值,将该value的值作为这一分钟内已发送到缓存队列的请求的数量;如果提取的时间戳的小时值为10,则到缓存对象3中获取与10相同的key所对应的value的值,将该value的值作为这一小时内已发送到缓存队列的请求的数量。本实施例中基于Guava Cache缓存策略实现请求限速,充分利用了该策略下数据读取效率高和支持不同过期时间策略等特性,能更好地实现本申请的请求限速方法,保护后端接口基础服务或者被调用的重要服务的可用性,防止在用户访问量暴增的情况下系统瘫痪。
在本实施例中,value可使用AtomicLong计数器对在各个时间周期内已发送到缓存队列的请求的数量进行计数,可利用AtomicLong计数器具有保证多线程的安全性的特点(当某个线程在读取某个AtomicLong计数器时,其它线程无法读取该AtomicLong计数器),保证本申请的请求限速方法的正常实施。
结合以上实施例,在一种实施方式中,本申请的请求限速方法还可以包括:
针对各个所述时间周期,在进入下一个周期时,将对应的缓存对象中的计数器清零,以实现在下一个周期内对已发送到缓存队列的请求的数量进行计数。
示例地,服务端设置的时间周期包括T1、T2以及T3,且T1为1秒、T2为1分、T3为1小时,假设服务端的当前系统时间为10:01:05,对于T1对应的计数器,在从10:01:05进入10:01:06时,需要将原有值清零,以记录在下一秒内已发送到缓存队列的请求的数量;对于T2对应的计数器,在从10:01:59进入10:02:00时,需要将原有值清零,以记录在下一分钟内已发送到缓存队列的请求的数量;对于T3对应的计数器,在从10:59:59进入11:00:00时,需要将原有值清零,以记录在下一小时内已发送到缓存队列的请求的数量。
本实施例中在每一时间周期结束后对计数器进行清零,以便于下一次限速策略的执行条件的准确判断,提高控制服务端访问接口的访问速率的精准度,进而保证本申请的请求限速方法的顺利实施。
图4是本申请一实施例示出的一种请求限速方法的整体过程示意图。下面将结合图4,对本申请的请求限速方法做一个整体说明。
在图4中,虚线框内的流程表示服务器内部的处理流程。服务器启动后,在本地创建与时间周期T对应的的缓存对象,设置该缓存对象的过期时间为Texp,且Texp>T,保证能记录时间周期T内的已接收到的请求的计数,缓存对象中采用AtomicLong计数器实现计数,同时设置时间周期T对应的限流数量,即时间周期T内接收的请求的个数的上限值Ntotal;客户端向服务器正常发起一个HTTP请求;服务器接收到该请求后,从本地缓存对象中获取当前时间戳对应的请求数量Nnow(当前时间戳位于最近的时间周期T内,因而Nnow表示最近的时间周期T的开始时刻与当前时间戳之间的时间段内已经接收到的请求的数量),如果Nnow为空或者Nnow<=Ntotal,表示没有超过预设限流数量,则将计数器的值加1,并将结果存储到缓存对象中,然后继续执行后续的接口逻辑(例如处理该请求,向客户端返回处理结果等),如果Nnow>Ntotal,表示超过预设限流数量,则不再执行后续的接口逻辑,直接返回请求失败或者其他的错误信息。
本实施例中利用Guava Cache的缓存原理实现服务端的访问接口的限流策略,例如限制某个接口每秒钟的调用量时,可以取请求的当前时间戳的秒数作为key,访问接口在该秒内的请求数量作为value,value可使用AtomicLong计数器对数值累加,每次调用该访问接口时,先读取缓存中的数值是否超过最大值,如果没有则将计数器的数值加1,如果超过最大值则返回错误信息,以此来限制访问接口的请求速率。
本实施例中可以同时设置多种单位不同的时间周期对请求进行限流,例如采用每秒钟、每分钟、每小时3种时间周期分级别进行限流,当限流数量不满足秒钟级别限流策略时,继续执行分钟级别限流策略,然后再执行小时级别限流策略,策略的执行按照时间粒度层层递进,3种策略分别对应不同的过期时间。也可以同时执行3种级别的限流策略,只要有任意一个级别的限流策略满足执行条件时,即可执行限流策略。具体采用何种方式,可根据实际需求设定,本申请对此不作限制。
本申请实施例在Guava Cache的基础上,将访问接口按照不同的单位分等级限速,例如按照秒、分钟、小时、天等时间单位限速,达到限制速率则拒绝提供服务,限流策略灵活多变;此外,充分利用了Guava Cache缓存策略读取数据效率高、支持不同过期时间策略等特性,能保证本申请的请求限速方法更好地实施;其次,采用AtomicLong作为计数器,可以保证多线程的安全性,保证本申请的请求限速方法的顺利实施。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
本申请实施例还提供了一种请求限速装置500,应用于服务器。图5是本申请一实施例示出的一种请求限速装置的第一种结构框图,参照图5,本申请的请求限速装置500包括:接收模块501,用于接收终端发送的请求,所述请求携带时间戳;
获得模块502,用于根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期的单位互不相同;
执行模块503,用于在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
可选地,至少两个时间周期包括:以秒为单位的第一时间周期、以分钟为单位的第二时间周期、以小时为单位的第三时间周期:
图6是本申请一实施例示出的一种请求限速装置的第二种结构框图。如图6所示,所述获得模块502包括:
第一获得子模块5021,用于根据所述时间戳的秒值,获得在与所述秒值对应的一秒钟内已发送到缓存队列的请求的第一数量;
第二获得子模块5022,用于根据所述时间戳的分钟值,获得在与所述分钟值对应的一分钟内已发送到缓存队列的请求的第二数量;
第三获得子模块5023,用于根据所述时间戳的小时值,获得在与所述小时值对应的一小时内已发送到缓存队列的请求的第三数量;
所述执行模块503包括:
执行子模块5031,用于在所述第一数量、第二数量以及第三数量中存在至少一个数量大于对应的预设阈值时,针对所述终端发送的请求执行限速策略。
图7是本申请一实施例示出的一种请求限速装置的第三种结构框图。如图7所示,可选地,所述装置500还包括:
更新模块504,用于在所有时间周期内已发送到缓存队列的请求的数量均不大于所属时间周期对应的预设阈值时,将所述请求发送到所述缓存队列,并更新各个时间周期内已发送到缓存队列的请求的数。
图8是本申请一实施例示出的一种请求限速装置的第四种结构框图。如图8所示,可选地,所述装置500还包括:
创建模块505,用于在本地为各时间周期分别创建对应的缓存对象,所述缓存对象的有效时长大于对应的时间周期的长度,所述缓存对象用于以键值对的形式存储下一次接收到的请求的时间戳,和在下一次接收到的请求的时间戳所属的各个时间周期内已发送到缓存队列的请求的数量;
所述获得模块502包括:
第四获得子模块5024,用于从所述时间戳所属的各个时间周期所对应的缓存对象中读取缓存的键值对;
第五获得子模块5025,用于从所述缓存的键值对中读取在各个时间周期内已发送到缓存队列的请求的数量。
可选地,所述键值对包括:属性和属性值,所述属性表示下一次接收到的请求的时间戳,所述属性值表示在所述键值对所对应的时间周期内已发送到缓存队列的请求的数量;所述属性值采用计数器对所对应的时间周期内已发送到缓存队列的请求的数量进行计数。
图9是本申请一实施例示出的一种请求限速装置的第五种结构框图。如图9所示,可选地,所述装置500还包括:
清零模块506,用于针对各个时间周期,在进入下一个时间周期时,将对应的缓存对象中的计数器清零,以实现在下一个时间周期内对已发送到缓存队列的请求的数量进行计数。
图10是本申请一实施例示出的一种请求限速装置的第六种结构框图,如图10所示,可选地,所述执行模503包括:
发送模块5032,用于丢弃所述终端发送的请求,并向所述终端发送表示请求失败的响应信息。
本发明实施例还提供了一种电子设备,如图11所示。图11是本申请一实施例示出的一种电子设备的结构示意图。该电子设备包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101,通信接口1102,存储器1103通过通信总线1104完成相互间的通信,
存储器1103,用于存放计算机程序;
处理器1101,用于执行存储器1103上所存放的程序时,实现如下步骤:
接收终端发送的请求,所述请求携带时间戳;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期互不相同;
在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
或者处理器1101在执行存储器1103上所存放的程序时,实现上述其他方法实施例中的步骤。
上述终端提到的通信总线可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的请求限速方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的请求限速方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种请求限速方法,其特征在于,执行于服务器,包括:
接收终端发送的请求,所述请求携带时间戳;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期的单位互不相同;
在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
2.根据权利要求1所述的方法,其特征在于,至少两个时间周期包括:以秒为单位的第一时间周期、以分钟为单位的第二时间周期、以小时为单位的第三时间周期;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,包括:
根据所述时间戳的秒值,获得在与所述秒值对应的一秒钟内已发送到缓存队列的请求的第一数量;
根据所述时间戳的分钟值,获得在与所述分钟值对应的一分钟内已发送到缓存队列的请求的第二数量;
根据所述时间戳的小时值,获得在与所述小时值对应的一小时内已发送到缓存队列的请求的第三数量;
在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略,包括:
在所述第一数量、第二数量以及第三数量中存在至少一个数量大于对应的预设阈值时,针对所述终端发送的请求执行限速策略。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所有时间周期内已发送到缓存队列的请求的数量均不大于所属时间周期对应的预设阈值时,将所述请求发送到所述缓存队列,并更新各个时间周期内已发送到缓存队列的请求的数量。
4.根据权利要求3所述的方法,其特征在于,在接收终端发送的请求之前,所述方法还包括:
在本地为各时间周期分别创建对应的缓存对象,所述缓存对象的有效时长大于对应的时间周期的长度,所述缓存对象用于以键值对的形式存储下一次接收到的请求的时间戳,和在下一次接收到的请求的时间戳所属的各个时间周期内已发送到缓存队列的请求的数量;
根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,包括:
从所述时间戳所属的各个时间周期所对应的缓存对象中读取缓存的键值对;
从所述缓存的键值对中读取在各个时间周期内已发送到缓存队列的请求的数量。
5.根据权利要求4所述的方法,其特征在于,所述键值对包括:属性和属性值,所述属性表示下一次接收到的请求的时间戳,所述属性值表示在所述键值对所对应的时间周期内已发送到缓存队列的请求的数量;所述属性值采用计数器对所对应的时间周期内已发送到缓存队列的请求的数量进行计数。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
针对各个时间周期,在进入下一个时间周期时,将对应的缓存对象中的计数器清零,以实现在下一个时间周期内对已发送到缓存队列的请求的数量进行计数。
7.根据权利要求1所述的方法,其特征在于,针对所述终端发送的请求执行限速策略,包括:
丢弃所述终端发送的请求,并向所述终端发送表示请求失败的响应信息。
8.一种请求限速装置,其特征在于,应用于服务器,包括:
接收模块,用于接收终端发送的请求,所述请求携带时间戳;
获得模块,用于根据所述时间戳,获得在至少两个时间周期内已发送到缓存队列的请求的数量,所述缓存队列用于缓存待处理的请求,各时间周期的单位互不相同;
执行模块,用于在任意时间周期内已发送到缓存队列的请求的数量大于所属时间周期对应的预设阈值时,针对所述终端发送的请求执行限速策略。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的请求限速方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的请求限速方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010215327.6A CN111381988A (zh) | 2020-03-24 | 2020-03-24 | 一种请求限速方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010215327.6A CN111381988A (zh) | 2020-03-24 | 2020-03-24 | 一种请求限速方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111381988A true CN111381988A (zh) | 2020-07-07 |
Family
ID=71218954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010215327.6A Pending CN111381988A (zh) | 2020-03-24 | 2020-03-24 | 一种请求限速方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381988A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076281A (zh) * | 2021-03-30 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种Ceph内核客户端进行通信的方法、系统、设备及介质 |
CN113438284A (zh) * | 2021-06-09 | 2021-09-24 | 北京京东振世信息技术有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN114143263A (zh) * | 2021-11-23 | 2022-03-04 | 浪潮通用软件有限公司 | 一种对用户请求进行限流的方法、设备及介质 |
CN116708315A (zh) * | 2023-07-17 | 2023-09-05 | 中移(苏州)软件技术有限公司 | 流量限速方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299049A (zh) * | 2018-10-11 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种文件访问请求的处理方法及装置 |
CN110417671A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 数据传输的限流方法和服务器 |
CN110719337A (zh) * | 2019-10-23 | 2020-01-21 | 北京悠易网际科技发展有限公司 | 业务系统、业务请求处理方法、装置及服务器 |
-
2020
- 2020-03-24 CN CN202010215327.6A patent/CN111381988A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299049A (zh) * | 2018-10-11 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种文件访问请求的处理方法及装置 |
CN110417671A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 数据传输的限流方法和服务器 |
CN110719337A (zh) * | 2019-10-23 | 2020-01-21 | 北京悠易网际科技发展有限公司 | 业务系统、业务请求处理方法、装置及服务器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076281A (zh) * | 2021-03-30 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种Ceph内核客户端进行通信的方法、系统、设备及介质 |
CN113076281B (zh) * | 2021-03-30 | 2022-11-04 | 山东英信计算机技术有限公司 | 一种Ceph内核客户端进行通信的方法、系统、设备及介质 |
CN113438284A (zh) * | 2021-06-09 | 2021-09-24 | 北京京东振世信息技术有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN113438284B (zh) * | 2021-06-09 | 2022-09-06 | 北京京东振世信息技术有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN114143263A (zh) * | 2021-11-23 | 2022-03-04 | 浪潮通用软件有限公司 | 一种对用户请求进行限流的方法、设备及介质 |
CN114143263B (zh) * | 2021-11-23 | 2023-06-20 | 浪潮通用软件有限公司 | 一种对用户请求进行限流的方法、设备及介质 |
CN116708315A (zh) * | 2023-07-17 | 2023-09-05 | 中移(苏州)软件技术有限公司 | 流量限速方法、装置、电子设备及存储介质 |
CN116708315B (zh) * | 2023-07-17 | 2023-11-03 | 中移(苏州)软件技术有限公司 | 流量限速方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381988A (zh) | 一种请求限速方法、装置、电子设备及存储介质 | |
US10637946B2 (en) | Subscription based event notifications | |
US9703980B2 (en) | Centralized throttling service | |
CN111510395B (zh) | 业务消息上报方法、装置、设备及介质 | |
CN109190070B (zh) | 一种数据处理方法、装置、系统及应用服务器 | |
CN111124819B (zh) | 全链路监控的方法和装置 | |
CN107301215B (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
CN109299144B (zh) | 一种数据处理方法、装置、系统及应用服务器 | |
WO2021068488A1 (zh) | 基于区块链的日志处理方法、装置、计算机设备及存储介质 | |
CN113595922B (zh) | 一种流量限制方法、装置、服务器及存储介质 | |
US10574730B2 (en) | Streaming media resource downloading method and apparatus, and terminal device | |
CN110309016B (zh) | 一种熔断恢复方法、装置及服务器 | |
CN111046310A (zh) | 页面处理方法、装置、服务器及计算机可读存储介质 | |
WO2021068205A1 (zh) | 访问控制方法、装置、服务器和计算机可读介质 | |
CN113687781A (zh) | 一种热数据的上拉方法、装置、设备及介质 | |
CN111277662A (zh) | 代理服务器的处理方法、电子设备及存储介质 | |
CN112653736B (zh) | 一种并行回源方法、装置及电子设备 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
CN112631963A (zh) | 缓存数据管理方法、装置、设备及存储介质 | |
CN114143263B (zh) | 一种对用户请求进行限流的方法、设备及介质 | |
CN109150819B (zh) | 一种攻击识别方法及其识别系统 | |
CN111736769B (zh) | 一种稀释缓存空间的方法、设备以及介质 | |
CN113821410A (zh) | 一种日志处理方法和装置 | |
CN114417200A (zh) | 网络数据的采集方法、装置及电子设备 | |
CN113835905A (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 |