CN113342498A - 并发请求处理方法、装置、服务器及存储介质 - Google Patents
并发请求处理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN113342498A CN113342498A CN202110724140.3A CN202110724140A CN113342498A CN 113342498 A CN113342498 A CN 113342498A CN 202110724140 A CN202110724140 A CN 202110724140A CN 113342498 A CN113342498 A CN 113342498A
- Authority
- CN
- China
- Prior art keywords
- requests
- request
- concurrent
- queue
- service type
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims description 29
- 230000002159 abnormal effect Effects 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 24
- 238000013507 mapping Methods 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
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
本发明涉及数据处理,揭露一种并发请求处理方法,包括:获取业务类型、IP地址、请求路径及服务类型对应的限流条件,将并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;为每个队列分配一个限流桶,限流桶用于以固定速率产生令牌;基于预设的队列优先级信息及各个队列中请求的顺序为并发请求分配令牌,若并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理指定请求。本发明还提供一种并发请求处理装置、服务器及存储介质。本发明实现了细粒度的限流、更合理的处理并发请求。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种并发请求处理方法、装置、服务器及存储介质。
背景技术
请求限流为限制同一时间或一定时间内请求的数量,目的是通过对同一时间或一个时间窗口内的大量请求进行限速以保护***。
现有的请求限流方案通常是针对整个***的,当请求量超过***预设的限流值时,其它请求需等待或被丢弃,而没有细粒度的限流方案,从而使得对请求的处理不够合理,例如,若一批并发请求中逻辑复杂的请求数量多,在按照预设的限流值限流后,仍可能出现***崩溃或运行缓慢的情况。因此,亟需一种并发请求处理方法,以细粒度的进行限流、合理处理并发请求。
发明内容
鉴于以上内容,有必要提供一种并发请求处理方法,旨在实现细粒度的限流,以合理处理并发请求。
本发明提供的并发请求处理方法,包括:
接收并发请求,获取所述并发请求中每个请求对应的业务类型、IP地址、请求路径及服务类型;
分别获取所述业务类型、IP地址、请求路径及服务类型对应的限流条件,将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;
为每个队列分配一个限流桶,所述限流桶用于以固定速率产生令牌;
获取预先设置的队列优先级信息,基于所述队列优先级信息及各个队列中请求的顺序为所述并发请求分配令牌,若所述并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求。
可选的,所述将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,包括:
判断所述并发请求中是否含有预设业务类型的请求,若有,获取所述预设业务类型对应的第一限流数量,按照时间戳顺序将所述并发请求中排序靠前的第一限流数量的预设业务类型的请求和其它业务类型的请求存储至第一队列;
根据IP地址判断所述并发请求中是否含有异常请求,若有,将所述并发请求中不是异常请求的请求按照时间戳顺序存储至第二队列;
根据请求路径确定所述并发请求中每个请求的复杂度等级,基于所述复杂度等级将所述并发请求存储至第三队列;
获取各个服务类型对应的第二限流数量,按照时间戳顺序将所述并发请求中各个服务类型对应的排序靠前的第二限流数量的请求存储至第四队列。
可选的,所述根据请求路径确定所述并发请求中每个请求的复杂度等级,包括:
获取第一时间段内每个请求路径对应的多个历史响应时间,基于所述多个历史响应时间计算每个请求路径对应的平均响应时间;
基于所述平均响应时间及预设的响应时间与复杂度等级的映射关系确定每个请求路径对应的复杂度等级。
可选的,所述基于所述复杂度等级将所述并发请求存储至第三队列,包括:
确定所述并发请求中各个复杂度等级的请求的数量;
根据所述数量及预先确定的各个复杂度等级对应的权重计算各个复杂度等级对应的第三限流数量;
按照时间戳顺序将所述并发请求中各个复杂度等级对应的排序靠前的第三限流数量的请求存储至第三队列。
可选的,在所述为每个队列分配一个限流桶之后,所述方法还包括:
获取所述服务器所属的服务器集群的空闲资源信息,基于所述空闲资源信息为每个限流桶配置令牌原始生成速率及原始最大令牌数量,基于所述令牌原始生成速率及原始最大令牌数量为每个限流桶生成令牌。
可选的,所述根据IP地址判断所述并发请求中是否含有异常请求,包括:
若某一指定IP地址在第二时间段内发送请求的数量大于预设阈值,则判断所述并发请求中所述指定IP地址发送的请求为异常请求。
可选的,在所述判断所述并发请求中是否含有预设业务类型的请求之后,所述方法还包括:
若判断所述并发请求中没有预设业务类型的请求,则删除第一队列;
在所述判断所述并发请求中是否含有异常请求之后,所述方法还包括:
若判断所述并发请求中没有异常请求,则删除第二队列。
为了解决上述问题,本发明还提供一种并发请求处理装置,所述装置包括:
获取模块,用于接收并发请求,获取所述并发请求中每个请求对应的业务类型、IP地址、请求路径及服务类型;
存储模块,用于分别获取所述业务类型、IP地址、请求路径及服务类型对应的限流条件,将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;
分配模块,用于为每个队列分配一个限流桶,所述限流桶用于以固定速率产生令牌;
处理模块,用于获取预先设置的队列优先级信息,基于所述队列优先级信息及各个队列中请求的顺序为所述并发请求分配令牌,若所述并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求。
为了解决上述问题,本发明还提供一种服务器,所述服务器包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的并发请求处理程序,所述并发请求处理程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述并发请求处理方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有并发请求处理程序,所述并发请求处理程序可被一个或者多个处理器执行,以实现上述并发请求处理方法。
相较现有技术,本发明首先获取业务类型、IP地址、请求路径及服务类型对应的限流条件,将并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;接着,为每个队列分配一个限流桶,限流桶用于以固定速率产生令牌;最后,基于队列优先级信息及各个队列中请求的顺序为并发请求分配令牌,若并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求,本发明实现了以业务类型、IP地址、请求路径及服务类型四个维度进行限流。因此,本发明实现了细粒度的限流、更合理的处理并发请求。
附图说明
图1为本发明一实施例提供的并发请求处理方法的流程示意图;
图2为本发明一实施例提供的并发请求处理装置的模块示意图;
图3为本发明一实施例提供的实现并发请求处理方法的服务器的结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种并发请求处理方法。参照图1所示,为本发明一实施例提供的并发请求处理方法的流程示意图。该方法可以由一个服务器执行,该服务器可以由软件和/或硬件实现。
本实施例中,并发请求处理方法包括:
S1、接收并发请求,获取所述并发请求中每个请求对应的业务类型、IP地址、请求路径及服务类型。
所述并发请求为***(***由服务器所属的服务器集群架设得到)在一个时间窗口内(例如,5秒内)接收到的请求。当一个时间窗口内的请求量过大时,为防止***崩溃或运行缓慢,需要对请求进行限流。
本实施例以***为购物平台为例进行说明,所述业务类型包括秒杀抢购、日常购物等,所述IP地址为请求发送端设备的IP地址,请求路径代表了***的业务逻辑,例如,请求路径http://120.0.0.1/nts-tcloud/queryUsers代表查询用户信息,请求路径http://120.0.0.1/nts-tcloud/queryMenus代表查询菜单信息。
所述服务类型包括用户服务、商品服务、订单服务等,用户服务包括用户注册及登录,商品服务包括商品录入及商品查询,订单服务包括订单生成、订单查询及订单打印。
S2、分别获取所述业务类型、IP地址、请求路径及服务类型对应的限流条件,将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列。
不同于现有技术以***为维度对整个***的所有请求进行限流,本实施例分别以业务类型、IP地址、请求路径及服务类型为维度进行更细粒度的限流。
每个维度对应一个限流条件,例如,对于业务类型维度,对其中特定业务类型进行限流;对于IP地址维度,对恶意用户的IP地址进行限流;对于请求路径维度,对其中逻辑复杂的请求路径进行限流;对于服务类型维度,根据服务类型对应的服务器能承受的请求数量对各种服务类型的请求进行限流。
获取到每个维度对应的限流条件后,将并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,所述时间戳可以是***收到请求的时间。存储至队列后,可能会出现一个请求出现在四个队列的情况,也可能出现一个请求仅出现在其中两个队列的情况。
所述将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,包括步骤A11-A14:
A11、判断所述并发请求中是否含有预设业务类型的请求,若有,获取所述预设业务类型对应的第一限流数量,按照时间戳顺序将所述并发请求中排序靠前的第一限流数量的预设业务类型的请求和其它业务类型的请求存储至第一队列;
本实施例中,所述预设业务类型为秒杀抢购,所述第一限流数量为秒杀抢购的物品的数量,若并发请求中共150个请求,其中秒杀抢购请求有100个,日常购物请求有50个,若只有60个商品被用来秒杀,则将100个秒杀抢购请求中时间戳在前面的60个请求和50个日常购物请求存储至第一队列中,第一队列中的请求以时间戳排序。
本实施例将超出秒杀抢购物品数量的秒杀抢购请求丢弃,以降低***压力。
A12、根据IP地址判断所述并发请求中是否含有异常请求,若有,将所述并发请求中不是异常请求的请求按照时间戳顺序存储至第二队列;
本实施例中,所述异常请求为恶意用户、爬虫机器人及自动发请求的机器人发送的请求,将并发请求中不属于异常请求的请求存储至第二队列,第二队列中的请求以时间戳顺序排序。
A13、根据请求路径确定所述并发请求中每个请求的复杂度等级,基于所述复杂度等级将所述并发请求存储至第三队列;
一个请求路径对应一个业务逻辑,业务逻辑复杂的请求运算的时间更久、耗费的资源更多,若并发请求中含有大量业务逻辑复杂的请求,则会压缩分配给其他请求的资源,可能会出现***崩溃或其他请求等待时间过久的情况,为平衡***资源,需要对复杂度高的请求进行限流。
所述根据请求路径确定所述并发请求中每个请求的复杂度等级,包括步骤B11-B12:
B11、获取第一时间段内每个请求路径对应的多个历史响应时间,基于所述多个历史响应时间计算每个请求路径对应的平均响应时间;
所述第二时间段可以是最近半年,可以获取最近半年内每个请求路径对应的多个历史响应时间,进而可计算得出每个请求路径对应的平均响应时间。
B12、基于所述平均响应时间及预设的响应时间与复杂度等级的映射关系确定每个请求路径对应的复杂度等级。
响应时间在一定程度上反映了请求的复杂度,复杂度越高,响应时间越长。
本实施例中,预设的响应时间与复杂度的映射关系可以如下所示:
响应时间大于5秒:高复杂度;
响应时间在1秒~5秒之间:中复杂度;
响应时间小于1秒:低复杂度。
所述基于所述复杂度等级将所述并发请求存储至第三队列,包括步骤C11-C13:
C11、确定所述并发请求中各个复杂度等级的请求的数量;
例如,若并发请求中共150个请求,根据上述响应时间与复杂度的映射关系可确定,其中高复杂度的请求有80个,中复杂度的请求有40个,低复杂度的请求有30个。
C12、根据所述数量及预先确定的各个复杂度等级对应的权重计算各个复杂度等级对应的第三限流数量;
若高复杂度、中复杂度及低复杂度对应的权重分别为10%、30%、60%,则高复杂度对应的第三限流数量为80*10%=8,中复杂度对应的第三限流数量为40*30%=12,低复杂度对应的第三限流数量为30*60%=18。
C13、按照时间戳顺序将所述并发请求中各个复杂度等级对应的排序靠前的第三限流数量的请求存储至第三队列。
将高复杂度请求中前8个请求、中复杂度请求中前12个请求及低复杂度请求中前18个请求存储至第三队列,第三队列中的38个请求以时间戳顺序排序。
A14、获取各个服务类型对应的第二限流数量,按照时间戳顺序将所述并发请求中各个服务类型对应的排序靠前的第二限流数量的请求存储至第四队列。
服务类型包括用户服务、商品服务及订单服务,不同的服务运行在服务器集群的不同服务器中,不同的服务器因资源不同,能处理的请求数量是不同的,所述第二限流数量为各个服务类型对应的服务器能处理的请求的数量。
例如,若用户服务、商品服务及订单服务对应的第二限流数量分部为100、40、35,并发请求中用户服务、商品服务及订单服务对应的请求数量分别为60、50、40,则将60个用户服务、时间戳在前的前40个商品服务及前35个订单服务对应的请求存储至第四队列,第四队列中的135个请求以时间戳顺序排序。
步骤A12中,所述根据IP地址判断所述并发请求中是否含有异常请求,包括:
若某一指定IP地址在第二时间段内发送请求的数量大于预设阈值,则判断所述并发请求中所述指定IP地址发送的请求为异常请求。
若某一IP地址在短时间内发送大量请求(也可以是在短时间内浏览了多个不同页面),则这个IP地址对应的用户属于恶意用户,该恶意用户可能使用爬虫机器人或自动发请求的机器人制造了大量请求,需要拒绝该类请求。
S3、为每个队列分配一个限流桶,所述限流桶用于以固定速率产生令牌。
本实施例中,所述限流桶为令牌桶,令牌桶以固定速率生成令牌,令牌桶中可存放的令牌数量是固定的,取得令牌的请求才能被处理,当令牌桶中存放的令牌满了,多余的令牌会被丢弃。因令牌桶生成令牌的速率是固定的,而请求获取令牌是没有速度限制的,故而,可在短时间内从令牌桶中取得大量令牌,即令牌桶更适用于瞬时大流量的情况。
在另一个实施例中,所述限流桶也可以是漏桶,每个请求被视为水滴放入漏桶进行存储,漏桶以固定速率向外漏出请求去处理,如果漏桶空了则停止漏水,如果漏桶满了则多余的水滴会被丢弃。因漏桶的出水速率是固定的,故而漏桶不适合瞬时大流量的情况。
在所述为每个队列分配一个限流桶之后,所述方法还包括:
获取所述服务器所属的服务器集群的空闲资源信息,基于所述空闲资源信息为每个限流桶配置令牌原始生成速率及原始最大令牌数量,基于所述令牌原始生成速率及原始最大令牌数量为每个限流桶生成令牌。
本实施例中,获取服务器集群当前空闲资源信息,根据预设的空闲资源与令牌生成速率及最大令牌数量的映射关系生成令牌原始生成速率及原始最大令牌数量,从而限流桶产生的令牌更符合当前资源情况。
另一个实施例中,在所述为每个队列分配一个限流桶之后,所述方法还包括:
生成限流桶配置界面,所述限流桶配置界面包括令牌生成速率配置框及最大令牌数量配置框,将所述限流桶配置界面发送到预设客户端,根据预设客户端的用户在所述限流桶配置界面配置的令牌生成速率及最大令牌数量为各个限流桶生成令牌。
现有技术中没有界面对限流桶的参数进行调整,通常需要修改程序中对应的参数,重启后再生效,修改过程复杂、费时,本实施例通过限流桶配置界面可实现快速、简单的调整限流桶的参数。
S4、获取预先设置的队列优先级信息,基于所述队列优先级信息及各个队列中请求的顺序为所述并发请求分配令牌,若所述并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求。
本实施例中,四个维度的队列的优先级顺序为:服务类型>请求路径>IP地址>业务类型,各个队列中的请求已按时间戳顺序排序,基于所述队列优先级顺序、各个队列中请求的顺序为请求分配令牌,若并发请求中某一指定请求从每个限流桶中都获得了令牌,执行该指定请求。
若某一请求从某一限流桶中未获取到令牌,则说明这个请求被这个限流桶限流,则不处理该请求。
本方案通过从服务类型、请求路径、IP地址及业务类型四个维度进行限流,实现了细粒度限流,可更合理的处理并发请求。
在所述判断所述并发请求中是否含有预设业务类型的请求之后,所述方法还包括:
若判断所述并发请求中没有预设业务类型的请求,则删除第一队列。
本实施例中,若并发请求中没有秒杀抢购类的请求,则没有必要以业务类型为维度进行限流。
在所述判断所述并发请求中是否含有异常请求之后,所述方法还包括:
若判断所述并发请求中没有异常请求,则删除第二队列。
本实施例中,若并发请求中没有异常请求(短时间内发送大量请求),则没有必要以IP地址为维度进行限流。
由上述实施例可知,本发明提出的并发请求处理方法,首先,获取业务类型、IP地址、请求路径及服务类型对应的限流条件,将并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;接着,为每个队列分配一个限流桶,限流桶用于以固定速率产生令牌;最后,基于队列优先级信息及各个队列中请求的顺序为并发请求分配令牌,若并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求,本发明实现了以业务类型、IP地址、请求路径及服务类型四个维度进行限流。因此,本发明实现了细粒度的限流、更合理的处理并发请求。
如图2所示,为本发明一实施例提供的并发请求处理装置的模块示意图。
本发明所述并发请求处理装置100可以安装于服务器中。根据实现的功能,所述并发请求处理装置100可以包括获取模块110、存储模块120、分配模块130及处理模块140。本发明所述模块也可以称之为单元,是指一种能够被服务器处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在服务器的存储器中。
在本实施例中,关于各模块/单元的功能如下:
获取模块110,用于接收并发请求,获取所述并发请求中每个请求对应的业务类型、IP地址、请求路径及服务类型。
存储模块120,用于分别获取所述业务类型、IP地址、请求路径及服务类型对应的限流条件,将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列。
所述将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,包括步骤A21-A24:
A21、判断所述并发请求中是否含有预设业务类型的请求,若有,获取所述预设业务类型对应的第一限流数量,按照时间戳顺序将所述并发请求中排序靠前的第一限流数量的预设业务类型的请求和其它业务类型的请求存储至第一队列;
A22、根据IP地址判断所述并发请求中是否含有异常请求,若有,将所述并发请求中不是异常请求的请求按照时间戳顺序存储至第二队列;
A23、根据请求路径确定所述并发请求中每个请求的复杂度等级,基于所述复杂度等级将所述并发请求存储至第三队列;
A24、获取各个服务类型对应的第二限流数量,按照时间戳顺序将所述并发请求中各个服务类型对应的排序靠前的第二限流数量的请求存储至第四队列。
所述根据请求路径确定所述并发请求中每个请求的复杂度等级,包括步骤B21-B22:
B21、获取第一时间段内每个请求路径对应的多个历史响应时间,基于所述多个历史响应时间计算每个请求路径对应的平均响应时间;
B22、基于所述平均响应时间及预设的响应时间与复杂度等级的映射关系确定每个请求路径对应的复杂度等级。
所述基于所述复杂度等级将所述并发请求存储至第三队列,包括步骤C21-C23:
C21、确定所述并发请求中各个复杂度等级的请求的数量;
C22、根据所述数量及预先确定的各个复杂度等级对应的权重计算各个复杂度等级对应的第三限流数量;
C23、按照时间戳顺序将所述并发请求中各个复杂度等级对应的排序靠前的第三限流数量的请求存储至第三队列。
所述根据IP地址判断所述并发请求中是否含有异常请求,包括:
若某一指定IP地址在第二时间段内发送请求的数量大于预设阈值,则判断所述并发请求中所述指定IP地址发送的请求为异常请求。
分配模块130,用于为每个队列分配一个限流桶,所述限流桶用于以固定速率产生令牌。
在所述为每个队列分配一个限流桶之后,所述分配模块130还用于:
获取所述服务器所属的服务器集群的空闲资源信息,基于所述空闲资源信息为每个限流桶配置令牌原始生成速率及原始最大令牌数量,基于所述令牌原始生成速率及原始最大令牌数量为每个限流桶生成令牌。
在所述为每个队列分配一个限流桶之后,所述分配模块130还用于:
生成限流桶配置界面,所述限流桶配置界面包括令牌生成速率配置框及最大令牌数量配置框,将所述限流桶配置界面发送到预设客户端,根据预设客户端的用户在所述限流桶配置界面配置的令牌生成速率及最大令牌数量为各个限流桶生成令牌。
处理模块140,用于获取预先设置的队列优先级信息,基于所述队列优先级信息及各个队列中请求的顺序为所述并发请求分配令牌,若所述并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求。
在所述判断所述并发请求中是否含有预设业务类型的请求之后,所述存储模块120还用于:
若判断所述并发请求中没有预设业务类型的请求,则删除第一队列。
在所述判断所述并发请求中是否含有异常请求之后,所述存储模块120还用于:
若判断所述并发请求中没有异常请求,则删除第二队列。
如图3所示,为本发明一实施例提供的实现并发请求处理方法的服务器的结构示意图。
所述服务器1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。
在本实施例中,服务器1包括,但不仅限于,可通过***总线相互通信连接的存储器11、处理器12、网络接口13,该存储器11中存储有并发请求处理程序10,所述并发请求处理程序10可被所述处理器12执行。图3仅示出了具有组件11-13以及并发请求处理程序10的服务器1,本领域技术人员可以理解的是,图3示出的结构并不构成对服务器1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
其中,存储器11包括内存及至少一种类型的可读存储介质。内存为服务器1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的存储介质。在一些实施例中,可读存储介质可以是服务器1的内部存储单元,例如该服务器1的硬盘;在另一些实施例中,该非易失性存储介质也可以是服务器1的外部存储设备,例如服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于服务器1的操作***和各类应用软件,例如存储本发明一实施例中的并发请求处理程序10的代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述服务器1的总体操作,例如执行与其他设备进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行并发请求处理程序10等。
网络接口13可包括无线网络接口或有线网络接口,该网络接口13用于在所述服务器1与客户端(图中未画出)之间建立通信连接。
可选的,所述服务器1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在服务器1中处理的信息以及用于显示可视化的用户界面。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述服务器1中的所述存储器11存储的并发请求处理程序10是多个指令的组合,在所述处理器12中运行时,可以实现上述并发请求处理方法,具体地,所述处理器12对上述并发请求处理程序10的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述服务器1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以是非易失性的,也可以是非易失性的。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
所述计算机可读存储介质上存储有并发请求处理程序10,所述并发请求处理程序10可被一个或者多个处理器执行,以实现上述并发请求处理方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。***权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种并发请求处理方法,应用于服务器,其特征在于,所述方法包括:
接收并发请求,获取所述并发请求中每个请求对应的业务类型、IP地址、请求路径及服务类型;
分别获取所述业务类型、IP地址、请求路径及服务类型对应的限流条件,将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;
为每个队列分配一个限流桶,所述限流桶用于以固定速率产生令牌;
获取预先设置的队列优先级信息,基于所述队列优先级信息及各个队列中请求的顺序为所述并发请求分配令牌,若所述并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求。
2.如权利要求1所述的并发请求处理方法,其特征在于,所述将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,包括:
判断所述并发请求中是否含有预设业务类型的请求,若有,获取所述预设业务类型对应的第一限流数量,按照时间戳顺序将所述并发请求中排序靠前的第一限流数量的预设业务类型的请求和其它业务类型的请求存储至第一队列;
根据IP地址判断所述并发请求中是否含有异常请求,若有,将所述并发请求中不是异常请求的请求按照时间戳顺序存储至第二队列;
根据请求路径确定所述并发请求中每个请求的复杂度等级,基于所述复杂度等级将所述并发请求存储至第三队列;
获取各个服务类型对应的第二限流数量,按照时间戳顺序将所述并发请求中各个服务类型对应的排序靠前的第二限流数量的请求存储至第四队列。
3.如权利要求2所述的并发请求处理方法,其特征在于,所述根据请求路径确定所述并发请求中每个请求的复杂度等级,包括:
获取第一时间段内每个请求路径对应的多个历史响应时间,基于所述多个历史响应时间计算每个请求路径对应的平均响应时间;
基于所述平均响应时间及预设的响应时间与复杂度等级的映射关系确定每个请求路径对应的复杂度等级。
4.如权利要求2所述的并发请求处理方法,其特征在于,所述基于所述复杂度等级将所述并发请求存储至第三队列,包括:
确定所述并发请求中各个复杂度等级的请求的数量;
根据所述数量及预先确定的各个复杂度等级对应的权重计算各个复杂度等级对应的第三限流数量;
按照时间戳顺序将所述并发请求中各个复杂度等级对应的排序靠前的第三限流数量的请求存储至第三队列。
5.如权利要求1所述的并发请求处理方法,其特征在于,在所述为每个队列分配一个限流桶之后,所述方法还包括:
获取所述服务器所属的服务器集群的空闲资源信息,基于所述空闲资源信息为每个限流桶配置令牌原始生成速率及原始最大令牌数量,基于所述令牌原始生成速率及原始最大令牌数量为每个限流桶生成令牌。
6.如权利要求2所述的并发请求处理方法,其特征在于,所述根据IP地址判断所述并发请求中是否含有异常请求,包括:
若某一指定IP地址在第二时间段内发送请求的数量大于预设阈值,则判断所述并发请求中所述指定IP地址发送的请求为异常请求。
7.如权利要求2所述的并发请求处理方法,其特征在于,在所述判断所述并发请求中是否含有预设业务类型的请求之后,所述方法还包括:
若判断所述并发请求中没有预设业务类型的请求,则删除第一队列;
在所述判断所述并发请求中是否含有异常请求之后,所述方法还包括:
若判断所述并发请求中没有异常请求,则删除第二队列。
8.一种并发请求处理装置,其特征在于,所述装置包括:
获取模块,用于接收并发请求,获取所述并发请求中每个请求对应的业务类型、IP地址、请求路径及服务类型;
存储模块,用于分别获取所述业务类型、IP地址、请求路径及服务类型对应的限流条件,将所述并发请求中符合对应限流条件的请求按照时间戳顺序存储至对应限流条件对应的队列中,得到多个队列;
分配模块,用于为每个队列分配一个限流桶,所述限流桶用于以固定速率产生令牌;
处理模块,用于获取预先设置的队列优先级信息,基于所述队列优先级信息及各个队列中请求的顺序为所述并发请求分配令牌,若所述并发请求中某一指定请求从每个限流桶中都获得了令牌,则处理所述指定请求。
9.一种服务器,其特征在于,所述服务器包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的并发请求处理程序,所述并发请求处理程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述的并发请求处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有并发请求处理程序,所述并发请求处理程序可被一个或者多个处理器执行,以实现如权利要求1至7任一项所述的并发请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110724140.3A CN113342498A (zh) | 2021-06-28 | 2021-06-28 | 并发请求处理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110724140.3A CN113342498A (zh) | 2021-06-28 | 2021-06-28 | 并发请求处理方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113342498A true CN113342498A (zh) | 2021-09-03 |
Family
ID=77481273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110724140.3A Pending CN113342498A (zh) | 2021-06-28 | 2021-06-28 | 并发请求处理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342498A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114021507A (zh) * | 2022-01-06 | 2022-02-08 | 苏州贝克微电子股份有限公司 | 一种自动化集成电路并行仿真方法 |
CN115037802A (zh) * | 2022-06-02 | 2022-09-09 | 北京百度网讯科技有限公司 | 一种请求处理方法、装置、电子设备和存储介质 |
CN115277854A (zh) * | 2022-07-21 | 2022-11-01 | 平安壹钱包电子商务有限公司 | 业务请求处理方法、装置、电子设备及存储介质 |
CN115396377A (zh) * | 2022-07-29 | 2022-11-25 | 天翼云科技有限公司 | 对象存储的服务质量优化方法、装置、设备及存储介质 |
CN115801688A (zh) * | 2022-10-27 | 2023-03-14 | 兴业银行股份有限公司 | 支持动态配置细粒度流控方法和*** |
CN115987902A (zh) * | 2022-12-20 | 2023-04-18 | 平安银行股份有限公司 | 一种服务限流方法、装置、计算机设备及存储介质 |
CN117742923A (zh) * | 2023-12-26 | 2024-03-22 | 上海数禾信息科技有限公司 | 分布式并发请求控制方法、装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045810A (zh) * | 2019-12-17 | 2020-04-21 | 浙江大华技术股份有限公司 | 一种任务调度处理方法及装置 |
CN111447150A (zh) * | 2020-02-29 | 2020-07-24 | 中国平安财产保险股份有限公司 | 访问请求限流方法、服务器及存储介质 |
CN111901249A (zh) * | 2020-07-31 | 2020-11-06 | 深圳前海微众银行股份有限公司 | 业务限流方法、装置、设备及存储介质 |
CN112769597A (zh) * | 2020-12-23 | 2021-05-07 | 杭州谐云科技有限公司 | 一种云边协同虚拟化场景的容器网络限流方法和*** |
CN112953840A (zh) * | 2021-01-27 | 2021-06-11 | 上海金仕达成括信息科技有限公司 | 一种限流控制方法、网关设备及限流控制*** |
CN113037862A (zh) * | 2021-03-30 | 2021-06-25 | 北京三快在线科技有限公司 | 业务请求的处理方法、装置、设备及存储介质 |
-
2021
- 2021-06-28 CN CN202110724140.3A patent/CN113342498A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045810A (zh) * | 2019-12-17 | 2020-04-21 | 浙江大华技术股份有限公司 | 一种任务调度处理方法及装置 |
CN111447150A (zh) * | 2020-02-29 | 2020-07-24 | 中国平安财产保险股份有限公司 | 访问请求限流方法、服务器及存储介质 |
CN111901249A (zh) * | 2020-07-31 | 2020-11-06 | 深圳前海微众银行股份有限公司 | 业务限流方法、装置、设备及存储介质 |
CN112769597A (zh) * | 2020-12-23 | 2021-05-07 | 杭州谐云科技有限公司 | 一种云边协同虚拟化场景的容器网络限流方法和*** |
CN112953840A (zh) * | 2021-01-27 | 2021-06-11 | 上海金仕达成括信息科技有限公司 | 一种限流控制方法、网关设备及限流控制*** |
CN113037862A (zh) * | 2021-03-30 | 2021-06-25 | 北京三快在线科技有限公司 | 业务请求的处理方法、装置、设备及存储介质 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114021507A (zh) * | 2022-01-06 | 2022-02-08 | 苏州贝克微电子股份有限公司 | 一种自动化集成电路并行仿真方法 |
CN115037802A (zh) * | 2022-06-02 | 2022-09-09 | 北京百度网讯科技有限公司 | 一种请求处理方法、装置、电子设备和存储介质 |
CN115037802B (zh) * | 2022-06-02 | 2024-03-08 | 北京百度网讯科技有限公司 | 一种请求处理方法、装置、电子设备和存储介质 |
CN115277854A (zh) * | 2022-07-21 | 2022-11-01 | 平安壹钱包电子商务有限公司 | 业务请求处理方法、装置、电子设备及存储介质 |
CN115396377A (zh) * | 2022-07-29 | 2022-11-25 | 天翼云科技有限公司 | 对象存储的服务质量优化方法、装置、设备及存储介质 |
CN115396377B (zh) * | 2022-07-29 | 2024-03-12 | 天翼云科技有限公司 | 对象存储的服务质量优化方法、装置、设备及存储介质 |
CN115801688A (zh) * | 2022-10-27 | 2023-03-14 | 兴业银行股份有限公司 | 支持动态配置细粒度流控方法和*** |
CN115987902A (zh) * | 2022-12-20 | 2023-04-18 | 平安银行股份有限公司 | 一种服务限流方法、装置、计算机设备及存储介质 |
CN117742923A (zh) * | 2023-12-26 | 2024-03-22 | 上海数禾信息科技有限公司 | 分布式并发请求控制方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113342498A (zh) | 并发请求处理方法、装置、服务器及存储介质 | |
CN111813513B (zh) | 基于分布式的实时任务调度方法、装置、设备及介质 | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
CN107729137B (zh) | 服务器、区块链验签解密的方法及存储介质 | |
CN112612607A (zh) | 基于消息队列的数据处理方法、装置、计算机设备和介质 | |
CN112860737B (zh) | 数据查询方法、装置、电子设备及可读存储介质 | |
CN112527599A (zh) | 智能监控方法、装置、电子设备及可读存储介质 | |
US9838332B1 (en) | Dynamically meeting slas without provisioning static capacity | |
CN112084486A (zh) | 用户信息验证方法、装置、电子设备及存储介质 | |
CN113419856B (zh) | 智能限流方法、装置、电子设备及存储介质 | |
CN111651667A (zh) | 数据推送分流控制方法、装置及计算机可读存储介质 | |
CN112733531A (zh) | 虚拟资源分配方法、装置、电子设备及计算机存储介质 | |
CN110597879B (zh) | 时序数据的处理方法和装置 | |
CN111858604B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN110569114B (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN114070847A (zh) | 服务器的限流方法、装置、设备及存储介质 | |
CN116647560A (zh) | 物联网计算机集群协调优化控制方法、装置、设备及介质 | |
CN113590703B (zh) | Es数据导入方法、装置、电子设备及可读存储介质 | |
CN111611243B (zh) | 数据处理方法及装置 | |
CN112685157B (zh) | 任务处理方法、装置、计算机设备及存储介质 | |
CN112612583B (zh) | 数据同步方法、装置、计算机设备和可读存储介质 | |
CN112612606A (zh) | 消息主题的处理方法、装置、计算机设备和可读存储介质 | |
CN114817408A (zh) | 调度资源识别方法、装置、电子设备及存储介质 | |
CN113918603A (zh) | 散列缓存生成方法、装置、电子设备及存储介质 | |
CN113553180A (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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20230915 |