CN116489090B - 流量控制方法、装置、***、电子设备及存储介质 - Google Patents
流量控制方法、装置、***、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116489090B CN116489090B CN202310717340.5A CN202310717340A CN116489090B CN 116489090 B CN116489090 B CN 116489090B CN 202310717340 A CN202310717340 A CN 202310717340A CN 116489090 B CN116489090 B CN 116489090B
- Authority
- CN
- China
- Prior art keywords
- task
- total amount
- flow control
- target
- concurrent tasks
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 177
- 230000001360 synchronised effect Effects 0.000 claims description 14
- 238000009825 accumulation Methods 0.000 claims description 13
- 238000012423 maintenance Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000004590 computer program Methods 0.000 description 10
- 210000004899 c-terminal region Anatomy 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000001186 cumulative effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000007958 sleep Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008602 contraction Effects 0.000 description 3
- 230000005059 dormancy Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000011217 control strategy Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了流量控制方法、装置、***、电子设备及存储介质,涉及数据处理领域,尤其涉及大数据、云计算、语音技术领域。具体实现方案为:接收目标对象的处理请求;处理请求中包括目标任务的任务标识以及目标任务的处理进度;在任务集合中查找任务标识,得到查找结果;任务集合用于记录目标对象的并发任务的描述信息;基于查找结果和目标任务的处理进度,确定目标对象的并发任务的第一总量;在目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝目标任务。基于本公开实施例中提出的任务集合中的任务标识以及处理进度,可准确的统计得到目标对象的并发任务的总量,以便于实现对该目标对象的限流。
Description
技术领域
本公开涉及数据处理领域,尤其涉及大数据、云计算、语音技术等领域。
背景技术
高并发是互联网分布式***架构设计中必须考虑的因素。高并发一方面可以提高资源利用率,另一方面可以加快***响应速度。由于高并发***需要处理大量的流量,随着流量变大,会遇到接口响应超时、***崩溃等问题。因此,需要对***进行流量控制,以提高***稳定性。
发明内容
本公开提供了一种流量控制方法、装置、***、电子设备及存储介质。
根据本公开的一方面,提供了一种流量控制方法,包括:
接收目标对象的处理请求;该处理请求中包括目标任务的任务标识以及目标任务的处理进度;
在任务集合中查找任务标识,得到查找结果;该任务集合用于记录目标对象的并发任务的描述信息;
基于查找结果和目标任务的处理进度,确定目标对象的并发任务的第一总量;
在目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝目标任务。
根据本公开的另一方面,提供了一种流量控制方法,包括:
接收目标对象发送的处理请求;该处理请求中包括目标任务的任务标识以及目标任务的处理进度;
基于负载均衡策略将处理请求分配给流控节点。
根据本公开的另一方面,提供了一种流量控制装置,包括:
第一接收模块,用于接收目标对象的处理请求;该处理请求中包括目标任务的任务标识以及目标任务的处理进度;
查找模块,用于在任务集合中查找任务标识,得到查找结果;该任务集合用于记录目标对象的并发任务的描述信息;
确定模块,用于基于查找结果和目标任务的处理进度,确定目标对象的并发任务的第一总量;
决策模块,用于在目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝目标任务。
根据本公开的另一方面,提供了一种流量控制装置,包括:
第二接收模块,用于接收目标对象发送的处理请求;该处理请求中包括目标任务的任务标识以及目标任务的处理进度;
分配模块,用于基于负载均衡策略将处理请求分配给流控节点。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开中任一实施例的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开中任一实施例的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开中任一实施例的方法。
根据本公开的另一方面,提供了一种流量控制***,包括前文的流控节点和网关。
本公开实施例中,任务集合中记录了目标对象的并发任务,基于任务标识,可了解到该目标任务是否记录在任务集合中。此外,处理进度能够便于实时了解到目标任务的处理情况,进而可以准确的统计得到目标对象的并发任务的总量,以便于实现对该目标对象的限流。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开一实施例中流量控制***的架构示意图;
图2是根据本公开一实施例中流量控制方法的流程示意图;
图3是根据本公开一实施例中同步过程的示意图;
图4是根据本公开一实施例中流控节点的示意图;
图5是根据本公开一实施例中处理进度为begin的示意图;
图6是根据本公开一实施例中处理进度为doing的示意图;
图7是根据本公开一实施例中处理进度为end的示意图;
图8是根据本公开一实施例中对预设阈值进行调整的示意图;
图9是根据本公开另一实施例中流量控制方法的流程示意图;
图10是根据本公开一实施例中网关更新流控节点的示意图;
图11是根据本公开一实施例中流量控制方法的整体框架示意图;
图12是根据本公开一实施例中流量控制装置的结构示意图;
图13是根据本公开另一实施例中流量控制装置的结构示意图;
图14是用来实现本公开实施例的流量控制方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
如图1所示为本公开实施例适用的流量控制***的示意图。该***中包括网关11,至少一个流控节点12以及远程字典服务(redis)13。如图1所示,网关11,流控节点12以及redis13之间通过网络建立通信连接。
其中,网关11用于接收目标对象发送的处理请求。其中目标对象可以为B端(B2B,Business-to-Business)用户,该B端用户通常是指商家用户,企业用户等。其中B端用户可以为多个C端(Consumer)用户提供服务,该C端用户可以理解为消费者、个人终端用户。
网关11可同时为多个B端用户提供接入功能。每个B端可能发送上万级的C端用户的处理请求给网关11,该情况下会造成***中流量剧增。随着流量变大,可能会遇到各种各样的问题,比如接口响应超时、***崩溃等。
此外,针对付费服务,B端用户也会申请流量,基于B端用户的申请,能够确定每个B端用户的并发任务的流量上限。
基于以上情况或类似情况,需要使用流量控制策略。具体的,在网关11接收到目标对象发送的处理请求的情况下,可以基于负载均衡策略将该处理请求发送给流控节点12,以使流控节点12对该目标对象的处理请求进行流量控制。
其中流控节点12,将依据流量控制策略确定是否放行处理请求。被拒绝的处理请求,其任务将被拒绝执行。允许通过的处理请求其任务将被正常执行。其中,redis13用于存储流量控制策略所需的关键信息。
针对每个目标对象而言,每个流控节点12执行的流程也相同,因此本公开实施例中以针对一个流控节点12为例,对流量控制方法进行说明,该方法应用于流控节点12,如图2所示,包括:
S201,接收目标对象的处理请求;该处理请求中包括目标任务的任务标识以及目标任务的处理进度。
目标任务的任务标识可以为序列号(Serial Number,SN),也可以使用字母序列或数字序列等表示任务标识。凡是可以表示任务标识的信息都可以适用于本公开实施例。
其中目标任务的处理进度可以为以下状态中的任意一种:开始状态(begin),进行状态(doing),结束状态(end)。其中,开始状态表示将该目标任务发送到流控节点12以便于开始执行任务。进行状态表示该目标任务正在执行中。结束状态表示该目标任务已经执行结束。
以听故事或听书场景为例,该场景下需要语音合成(Text-To-Speech,TTS)技术将文字转换为音频数据发送给用户播放。在如图1所示的***架构中,C端用户请求B端用户将目标文本转换为语音进行播放。B端用户接收到C端用户的处理请求后,将其发送至网关11。网关11基于负载均衡策略将C端用户的处理请求发送到流控节点12。其中,将目标任务的处理请求发送至流控节点12可以使用短链接通道。
由于传输目标任务的业务数据需要持续进行传输,因此发送目标任务的业务数据(如目标文本的数据是分段发送的)至流控节点12可以使用长链接通道,进而可实现将上传的文本实时转换为音频。为了便于理解目标任务的处理情况,引入处理进度以便于进行流量控制。需要说明的是,目标任务的业务数据可以由流控节点12之外的节点处理(图1中未示出)。具体的***架构,可根据实际情况部署,本公开实施例对此不作限定。
针对处理进度,举例来说,目标任务的处理请求可以为“SN1-begin”,该SN1表示目标任务的任务标识,begin则表示目标任务的处理进度为开始状态。类似的,“SN1-doing”表示目标任务处于进行中状态,“SN1-end”表示目标任务结束。
S202,在任务集合中查找任务标识,得到查找结果。该任务集合用于记录目标对象的并发任务的描述信息。
例如,并发任务的描述信息可以包括并发任务中每个任务的任务标识以及操作时间。其任务集合可以如表1所示:
表1
S203,基于查找结果和目标任务的处理进度,确定目标对象的并发任务的第一总量。
本公开实施例中,目标对象为B端用户的情况下,其将多个C端用户的处理请求发送给多个流控节点。无论是哪个C端用户,都视为B端用户的处理请求。同一时间,作为目标对象的B端用户请求并发执行多个任务。本公开实施例中第一总量表示目标对象在各个流控节点的并发任务的总量。
S204,在目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝目标任务。
其中,总量阈值可以基于B端用户的申请量确定,本公开对此不进行限定。
本公开实施例中,任务集合中记录了目标对象的并发任务,基于任务标识,可了解到该目标任务是否记录在任务集合中。此外,处理进度能够实时了解到目标任务的处理情况,进而可以准确的统计得到目标对象的并发任务的总量,以便于实现对该目标对象的限流。
在一些实施例中,总量阈值为目标对象的并发任务的总量上限。限流策略中,流控节点需要统计并发任务的累积量,即目标对象同时执行的任务总量。在并发任务的累积量超过目标对象的总量阈值的情况下,需要对目标对象限流。
一种可能的实施方式中,redis对目标对象在多个流控节点的并发任务的总量(后文简称全局总量)进行维护。针对当前流控节点,其每次采用本地计数器对并发任务计数时,可以访问redis以获取全局总量,在此基础上进行累积计数,以得到第一总量。
但是,在目标对象流量较大的情况下,每个处理请求都需要访问redis,会造成对redis访问频率过高,可能会导致热key(键)问题。
为了解决热key问题,本公开实施例中,在redis仍维护全局总量的基础上,希望尽可能减少对redis的访问。为了达到此目的,本公开实施例可由流控节点定期将本流控节点内新增的处理请求数量,同步给redis,实现在redis中对全局总量的批量计算,从而减少流控节点和redis之间的交互。而为了流控节点本地能够尽可能的对并发任务总量进行准确的计数,需要定期同步全局总量到本地。具体的,可实施为:
步骤A1,在到达同步时间点,基于并发任务的累积量和并发任务的初始量,确定并发任务的增量信息。
基于并发任务的累积量和并发任务的初始量的差值信息,即可获取到并发任务的增量信息。
步骤A2,将增量信息发送给redis,以得到目标对象的并发任务的第二总量。
在一些实施例中,任务集合可包括双向链表和map表。其中map表用于存储目标对象的任务标识以及各任务标识的操作时间。流控节点通过map表能够快速的查询目标任务的任务标识是否记录在任务集合中。双向链表记录的信息内容和map表一致。使用双向链表,实现本地的流控节点和redis之间的信息同步。
步骤A3,将并发任务的累积量更新为并发任务的第二总量。
该第二总量作为下一同步时间点之前,用于累积计数并发任务的第一总量的初始量。
流控节点执行的操作如图3所示。流控节点接收到处理请求的情况下,流控节点基于map表进行本地计数限流。即在并发任务的累积量的基础上进行累加,得到并发任务的第一总量。基于第一总量判断是否限流,确定限流的情况下拒绝目标任务。确定不限流的情况下,继续执行目标任务。
此外,如图3所示,流控节点启动有定时器。在到达同步时间点的情况下,流控节点执行“计数同步”操作,即确定需要同步给redis的增量信息,并同步给redis。并从redis拉取最新的第二总量更新到本地。
举例来说,如图4所示,t1,t2为同步时间点,在t1时刻,C端用户1向流控节点1发送的处理请求,则流控节点内的并发任务的初始量为1,任务集合内任务标识为SN1。在t1~t2时间段内,C端用户2以及C端用户3向流控节点1发送处理请求。相应的,该流控节点内的并发任务的累积量变为3,任务集合内的任务标识包括SN1、SN2以及SN3。基于该情况下,该增量信息为2,增量信息对应的任务标识为SN2以及SN3。将SN2以及SN3同步给redis A,以得到目标对象的并发任务的第二总量。
同时将该流控节点内的并发任务的累积量清空,将并发任务的第二总量作为下一统计周期内并发任务的初始量,即此时的并发任务的初始量为第二总量。在接收到新的处理请求的情况下,基于本地计数器在并发任务的初始量的基础上进行累加,以此类推,等待下一同步时间点进行同步。
由此,每个流控节点单独在本地统计并发任务的第一总量,可能和实际情况存在偏差,但流控节点通过定期从redis中同步全局总量(即第二总量)可以缩短偏差,还可以维持redis记录的总量的正确性。
本公开实施例中,定期将并发任务在本地的增量信息同步到redis中,将多次针对单个处理请求的计数改为批量计数,减少了对redis的访问次数,能够有效解决redis中存在热key的问题,提高redis的性能。
在本公开实施例中,第一总量用于表示目标对象在多个流控节点上的并发任务的总量。由于同一目标对象的并发任务可能分配给不同的流控节点。为了更好的利用流控节点,本公开实施例中提供双限流机制。该双限流机制中,一方面包括基于前述的第一总量进行限流,另一方面可以设置每个流控节点针对目标对象支持的并发任务上限,实现流控节点对本地产生的并发任务总量进行限流。相应的,针对第二方面,流控节点的流量控制方法,还可包括:
步骤B1,基于查找结果和目标任务的处理进度,确定目标对象在当前流控节点的并发任务的计数结果(后文简称本地总量)。
举例来说,B端用户为C端用户1、C端用户2以及C端用户3提供服务。其中,网关将C端用户1以及C端用户2的处理请求分配给流控节点1,并将C端用户3的处理请求分配给流控节点2。则,流控节点1针对B端用户的在流控节点1的并发任务的计数结果为2。流控节点2针对B端用户的在流控节点2的并发任务的计数结果为1。
步骤B2,计数结果大于预设阈值的情况下,拒绝目标任务,预设阈值小于总量阈值。
可以将总量阈值均分到每个流控节点以得到该预设阈值。举例来说,总量阈值为1w(万),流控节点的个数为10个,则每个流控节点的预设阈值可以为1000。当然,每个流控节点的预设阈值也可以不同,可以基于实际情况确定,本公开对此不进行限定。
本公开实施例中,基于本地接收的并发任务的总量进行限流,配合第一总量的全局限流机制,实现了双限流机制。一方面能够基于第一总量进行全局限流,另一方面能够基于本地的流控节点实现本地限流,能够有效的平衡各个流控节点的处理能力,保证限流机制的稳定运行。
在一些实施例中,目标任务的处理进度可以分为开始状态(begin),进行状态(doing),结束状态(end)。下面基于这三种状态,对确定目标对象的并发任务的第一总量的方式进行一一说明:
1)目标任务的处理进度为begin
在一些实施例中,基于查找结果和目标任务的处理进度,确定目标对象的并发任务的第一总量,可实施为:在目标任务的处理进度为开始状态以及查找结果表示任务集合不包括任务标识的情况下,在任务集合中添加任务标识,并增加并发任务的累积量,得到目标对象的并发任务的第一总量。
举例来说,任务集合中的任务标识为“SN1、SN2、SN3”,并且当前并发任务的累积量为n。在接收到新的目标任务,其任务标识为SN5的情况下,在任务集合中查找不到目标任务的任务标识,则可以将该目标任务的任务标识添加到任务集合,将并发任务的累积量加1,得到第一总量为n+1。
本公开实施例中,在目标任务的处理进度为开始状态的情况下,在任务集合中添加任务标识,并增加并发任务的累积量,以得到目标对象的并发任务的第一总量,可实现有效识别新增任务,进而实现流量控制。
在双限流机制下,任务集合中可包括双向链表和map表。如图5所示,在流控节点接收到目标任务的处理请求为begin的情况下,查找map表。在map表中未查找到目标任务的任务标识的情况下,将添加目标任务的任务标识到map表和双向链表中。可以使用map表统计出本地总量,将本地总量与预设阈值进行比较执行本地限流机制。基于双向链表统计出第一总量,将第一总量和总量阈值进行比较执行全局限流机制。其中,在目标对象的并发任务的第一总量小于总量阈值且本地总量小于预设阈值的情况下,允许处理目标任务。
如图5所示,在本地总量大于或等于预设阈值的情况下,拒绝执行该目标任务。
此外可将该拒绝消息返回结果给B端用户,B端用户可提示C端用户“网络繁忙,请稍后重试”。
如图5所示,在本地总量小于预设阈值、且第一总量大于或等于总量阈值的情况下,拒绝执行该目标任务。
在一些实施例中,如图5所示,可能因为发送错误,导致重复发送begin状态,此时查找结果将为任务集合包括任务标识。此时,可理解为相关任务已经在执行过程中,无需发送begin,因此可将该处理请求进行无效处理,即不对本地总量进行累积计数,也不对第一总量进行累积计数。
2)目标任务的处理进度为doing
在一些实施例中,在目标任务的处理进度为进行状态以及查找结果表示任务集合不包括任务标识的情况下,在任务集合中添加任务标识,并增加并发任务的累积量,得到目标对象的并发任务的第一总量。
本公开实施例中,在目标任务的处理进度为进行状态且任务集合中不包括任务标识的情况下,能够及时发现漏掉的任务,并在任务集合中添加任务标识,完成对第一总量的更正,可准确的对目标对象进行流控。
在双限流机制中,如图6所示,在流控节点接收到目标任务的处理请求为doing的情况下,查找map表,在map表中未查找到该任务标识的情况下,在map表和双向链表中添加该任务标识。基于map表实现对本地总量的统计。并基于双向链表实现对第一总量的统计。在本地总量小于预设阈值,且第一总量小于总量阈值的情况下,允许该处理请求通过以执行目标任务。在本地总量大于或等于预设阈值的情况下,拒绝该目标任务的处理请求。在本地总量小于预设阈值,且第一总量大于或等于总量阈值的情况下,拒绝该目标任务的处理请求。
如图6所示,在目标任务的处理进度为进行状态以及任务集合中包括任务标识的情况下,保持并发任务的第一总量不变,且对该处理请求进行无效处理。
本公开实施例中,对于处理进度为进行状态的任务,则说明该任务已参与计数,因此并发任务的第一总量不变,从而实现准确的流控。
3)目标任务的处理进度为end
在一些实施例中,因为每个任务都有处理进度。流控是期望并发任务的总量不要超过上限。因此,当任务结束时,相应的并发任务计数应该减少,以支持新的任务接入。相应的,在目标任务的处理进度为结束状态以及查找结果表示任务集合包括任务标识的情况下,将任务标识从任务集合中移除,并减少并发任务的累积量,得到目标对象的并发任务的第一总量。
本公开实施例中,接收到目标任务为结束状态,且任务集合中包括任务标识的情况下,通过移除任务标识并更新计数,不仅能够实现流量控制,还能够释放资源支持新的任务。
在双限流机制中,如图7所示,在流控节点接收到目标任务的处理请求为end的情况下,查找map表。在map表中查找到任务标识的情况下,将任务标识从map表和双向链表中移除。基于map表的操作,对本地总量减1。并且,基于对双向链表的操作,将并发任务的累积量减1,进而得到目标对象的并发任务的第一总量。
此外,如图7所示,在map表中未查找到目标任务的任务标识的情况下,将该目标任务进行无效处理即可,即计数不变。
4)对任务集合的清理策略
本公开实施例中,目标对象的并发任务量是有上限的。一个任务一直占用资源会导致资源浪费。因此,如上面实施例所阐述的,在接收到end状态的情况下,会更新计数,以便于释放资源处理新的任务。
但是,因为一些原因,可能有些任务结束后无法上报end状态,则导致该任务会一直占用资源。为了解决该问题,本公开实施例中任务集合中会对每个任务维护一个时间。以便于管理每个任务的生命周期。
例如,当接收到目标任务的begin状态时,会将该目标任务的任务标识记录在任务集合中,并标记对应的时间。
目标任务会持续上报doing状态以便于使得该任务能够持续使用处理资源。相应的,在后续每次接收到目标任务的doing状态的情况下,将任务集合中该目标任务的时间进行更新。
综上所述,任务集合还包括任务标识对应的操作时间,维护任务集合可实施为:
步骤C1,在处理进度为开始状态或进行状态的情况下,将任务标识的操作时间更新为处理进度的上报时间。
步骤C2,在操作时间和当前时间之间的时长超过预设时长的情况下,将任务标识相关的数据从任务集合中移除,并减少并发任务的累积量。
其中,可以使用LRU(最近最少使用页面置换算法,Least Recently Used)算法,LFU(最近最不常用页面置换算法,Least Frequently Used)算法维护任务集合。
以使用LFU对任务集合进行处理为例,在双限流机制中。基于两次上报处理进度的间隔,可将预设时长设置为8s。在操作时间和当前时间之间的时长超过8s的情况下,将任务标识相关的数据从map表和双向链表中移除,并将本地总量减1,将并发任务的累积量也减1。
本公开实施例中,基于操作时间对超过预设时长的目标任务进行移除处理,由此可以及时发现已结束的任务,以便于及时释放资源。
5)扩容、缩容的处理机制
本公开实施例中,在扩容或缩容的情况下,需要及时更新预设阈值和/或总量阈值,以便于准确的进行流量控制。基于更新后的预设阈值以及总量阈值,以使得该流量控制方法适用于扩容以及缩容场景,使得流控具备一定的灵活性以及通用性。
例如,总量阈值为1w并发,将100台流控节点,扩容到200台流控节点,即相当于每台流控节点的预设阈值由原本的100并发变为50并发。
在另一种实施例中,总量阈值为1w并发下调到5000,且流控节点总量100台保持不变的情况,每台流控节点的预设阈值由原本的100并发下调为50并发。
在将预设阈值调低的情况下,为了尽可能保证目标对象正在执行的任务能够正常处理完毕,保证用户体验,本公开实施例中可以在指定数量的调整周期内逐步将预设阈值下调到目标阈值。超过该指定数量的周期,可将预设阈值强制更新为目标阈值。
其中,每个调整周期内,预设阈值的调整后的值大于等于目标对象在流控节点的当前任务总量。
此外,在一些实施例中,为了尽可能保证已执行的并发任务逐步减少,以提高用户体验。每个调整周期结束后流控节点睡眠n秒,睡眠结束之后重新进入下一调整周期,以将预设阈值逐步降低到目标阈值。
举例来说,流控节点1、流控节点2、流控节点3、流控节点4以及流控节点5均为目标对象1进行限流控制。如图8所示,起初,流控节点1、流控节点2以及流控节点3的本地总量上限(即预设阈值)均为100。随着目标对象1将申请的并发量由1W下调,使得每个流控节点的目标阈值变更为50。假设最大允许3个调整周期将预设阈值下调为50,则当前预设阈值为100,目标阈值50。每次调整大小约为(100 - 50)/3 =17。
如图8所示,针对流控节点1,其在调整周期1内,目标对象1在流控节点1的当前任务总量为100,调整周期1内不调整流控节点的预设阈值。休眠8s后,进入调整周期2。此时,流控节点1内的当前任务总量下降为90,但仍较大,调整周期2内,流控节点1的预设阈值仍保持不变。继续休眠8s,到达调整周期3。调整周期3,流控节点的当前任务总量下降到40,小于目标阈值50。则在调整周期3将流控节点1的预设阈值由100更新为50。
如图8所示,针对流控节点2,调整周期1内,目标对象在流控节点2的当前任务总量为70,可保持预设阈值不变。休眠8s后,进入调整周期2。调整周期2内当前任务总量下降为60,小于期望值80,因此在调整周期2,将流控节点2的预设阈值下调到80。休眠8s,到达调整周期3。调整周期3,流控节点2的当前任务总量下降到30小于目标阈值,则将流控节点2的预设阈值从80下调到50。
如图8所示,流控节点3的情况与流控节点2类似。针对流控节点3,调整周期1内,目标对象在流控节点3的当前任务总量为60,大于预设阈值,可保持预设阈值不变。休眠8s后,进入调整周期2。调整周期2内当前任务总量下降为50,小于期望值80,因此在调整周期2,将流控节点3的预设阈值下调到80。休眠8s,到达调整周期3。调整周期3,流控节点3的当前任务总量下降到30小于目标阈值,则将流控节点3的预设阈值从80下调到50。
如图8所示,针对流控节点4和流控节点5,假设其为新增的流控节点。在调整周期1,目标对象在流控节点4和流控节点5的当前任务总量均为0,则可以直接将这两个流控节点的预设阈值配置为50。
在另一种实施例中,其中总量阈值为1w并发,将100台流控节点调整为50台,即相当于每台流控节点的预设阈值由原本的100并发直接更新为200并发。
在另一种实施例中,其中总量阈值为1w并发,将100台流控节点,将总量阈值调整到2w并发,即相当于每台流控节点的预设阈值由原本的100并发变为200并发。
在该缩容场景下,将被销毁的流控节点中的计数结果同步至redis。其它的流控节点,基于前述的方式将预设阈值为100并发变为目标阈值为200并发。
同理,总量阈值的调整方式和预设阈值相同,即在调低总量阈值的情况下,逐步调低。而在调高总量阈值的情况下,直接调高即可。
前文阐述了流控节点内部的控制逻辑。基于相同的技术构思,本公开实施例还提供一种流量控制方法,应用于网关,如图9所示,包括:
S901,接收目标对象发送的处理请求;该处理请求中包括目标任务的任务标识以及目标任务的处理进度。
S902,基于负载均衡策略将处理请求分配给流控节点。
其中,该流控节点基于任务标识和处理进度进行流量控制。流控节点执行流量控制的方式已在前文说明,这里不再赘述。
本公开实施例中,基于目标任务的任务标识以及目标任务的处理进度可以实时了解到目标任务的实时情况,进而可以实现对该流控节点的实时控制。
在一些实施例中,网关会基于负载均衡策略将处理请求分配给流控节点。具体的,可基于哈希运算实现负载均衡。在对流控节点进行扩容或缩容的情况下,负载均衡所需的流控节点数量发生变更。有鉴于此,为了能够随着流控节点的变更,合理的分配任务,本公开实施例中,在扩容或缩容的情况下,采用一致性哈希方式分配任务。可实施为:基于一致性哈希方式对任务标识执行哈希操作,得到操作结果;将处理请求发送给操作结果对应的流控节点。
本公开实施例中,基于一致性哈希方式可以保证在存在任一流控节点下线的情况下,只影响下线的流控节点中的请求,而对其它流控节点无影响。
在一些实施例中,在扩容或缩容的情况下,网关查询更新后的流控节点集合,得到更新后的流控节点。以便于网关及时了解到流控节点信息的变更,以便于为不同的流控节点合理的分配任务。
如图10所示,在扩容或缩容的情况下,网关的同步服务(bns-sync)感知到扩容或缩容的消息。网关基于同步服务(bns-sync)以及查询服务(naming-agent)查询当前的流控节点,在查询到流控节点的数量发生变化的情况下,同步服务获取实例参数(value_file)。网关基于实例模板(template_file)以及实例参数(value_file)生成流控节点文件(cg)。并更新网关内存储的原流控节点文件得到任务集合(bi.conf)。同步模块通知网关(Nginx)重新加载流控节点的配置信息(resty.conf),其中,该配置信息中包括该流控节点的任务集合(bj.conf),由此,网关获取到更新后的流控节点集合。
综上,本公开实施例中的流量控制方法的整体框架如图11所示:
S1101,目标对象的处理请求(request)由网关分配给流控节点。
S1102,流控节点从该处理请求中解析出任务标识和处理进度,在map表中查找任务标识以执行限流策略,包括:
1)、在处理进度为begin且未在map表中查找到该任务标识的情况下,将任务标识添加到map表以完成本地总量的计数,以确定本地识别到的并发任务总量。并将任务标识添加到双向链表以完成对第一总量的计数,以确定并发任务的全局总量。在本地总量大于预设阈值和/或第一总量大于总量阈值的情况下,拒绝该处理请求的目标任务。在本地总量小于预设阈值且第一总量小于总量阈值的情况下,允许该处理请求通过。
在处理进度为begin且在map表中查找到该任务标识的情况下,忽略该处理请求。
2)、在处理进度为doing且未在map表中查找到该任务标识的情况下,将任务标识添加到map表以完成本地总量的计数,以确定本地识别到的并发任务总量。并将任务标识添加到双向链表以完成对第一总量的计数,以确定并发任务的全局总量。在本地总量大于预设阈值和/或第一总量大于总量阈值的情况下,拒绝该处理请求的目标任务。在本地总量小于预设阈值且第一总量小于总量阈值的情况下,允许该处理请求通过。
在处理进度为doing且在map表中查找到该任务标识的情况下,刷新map表中该任务标识对应的操作时间,本地总量和第一总量的计数不变。
3)、在处理进度为end,且在map表中查找到该任务标识的情况下,将该任务标识的数据从map和双向链表中移除,本地总量和第一总量均减少1个,以释放资源。
在处理进度为end,且在map表中未查找到该任务标识的情况下,忽略该处理请求。
S1103,基于LFU维护map表和双向链表。
且,基于双向链表将本周期内产生的增量信息同步给redis,以便于更新redis维护的全局总量,并将redis更新后的全局总量更新到流控节点本地,以便于下一周期以更新后的全局总量进行流控。
S1104,在扩容或缩容的情况,redis将新的总量阈值和/或新的预设阈值同步给流控节点,以便于流控节点进行限流。
实施时,可由数据同步器完成对redis和流控节点的数据同步。
基于相同的技术构思,本公开实施例还提供一种流量控制装置1200,如图12所示,包括:
第一接收模块1201,用于接收目标对象的处理请求;处理请求中包括目标任务的任务标识以及目标任务的处理进度;
查找模块1202,用于在任务集合中查找任务标识,得到查找结果;任务集合用于记录目标对象的并发任务的描述信息;
确定模块1203,用于基于查找结果和目标任务的处理进度,确定目标对象的并发任务的第一总量;
决策模块1204,用于在目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝目标任务。
在一些实施例中,确定模块1203,用于:
在目标任务的处理进度为开始状态以及查找结果表示任务集合不包括任务标识的情况下,在任务集合中添加任务标识,并增加并发任务的累积量,得到目标对象的并发任务的第一总量。
在一些实施例中,确定模块1203,还用于:
在目标任务的处理进度为进行状态以及查找结果表示任务集合不包括任务标识的情况下,在任务集合中添加任务标识,并增加并发任务的累积量,得到目标对象的并发任务的第一总量。
在一些实施例中,确定模块1203,还用于:
在目标任务的处理进度为进行状态以及查找结果表示任务集合包括任务标识的情况下,保持并发任务的第一总量不变。
在一些实施例中,确定模块1203,还用于:
在目标任务的处理进度为结束状态以及查找结果表示任务集合包括任务标识的情况下,将任务标识从任务集合中移除,并减少并发任务的累积量,得到目标对象的并发任务的第一总量。
在一些实施例中,还包括同步模块,用于:
在到达同步时间点,基于并发任务的累积量和并发任务的初始量,确定并发任务的增量信息;
将增量信息发送给远程字典服务,以得到目标对象的并发任务的第二总量;
将并发任务的累积量更新为并发任务的第二总量。
在一些实施例中,第一总量用于表示目标对象在多个流控节点上的并发任务的总量,决策模块1204,还用于:
基于查找结果和目标任务的处理进度,确定目标对象在当前流控节点的并发任务的计数结果;
计数结果大于预设阈值的情况下,拒绝目标任务,预设阈值小于总量阈值。
在一些实施例中,还包括第一更新模块,用于:
在扩容或缩容的情况下,更新预设阈值和/或总量阈值。
在一些实施例中,任务集合还包括任务标识对应的操作时间,还包括维护模块,用于:
在处理进度为开始状态或进行状态的情况下,将任务标识的操作时间更新为处理进度的上报时间;
在操作时间和当前时间之间的时长超过预设时长的情况下,将任务标识相关的数据从任务集合中移除,并减少并发任务的累积量。
基于相同的技术构思,本公开实施例还提供一种流量控制装置1300,如图13所示,包括:
第二接收模块1301,用于接收目标对象发送的处理请求;处理请求中包括目标任务的任务标识以及目标任务的处理进度;
分配模块1302,用于基于负载均衡策略将处理请求分配给流控节点。
在一些实施例中,分配模块1302,用于:
基于一致性哈希方式对任务标识执行哈希操作,得到操作结果;
将处理请求发送给操作结果对应的流控节点。
在一些实施例中,还包括第二更新模块,用于:
在扩容或缩容的情况下,查询更新后的流控节点集合,得到更新后的流控节点。
本公开实施例的装置的各模块、子模块的具体功能和示例的描述,可以参见上述方法实施例中对应步骤的相关描述,在此不再赘述。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图14示出了可以用来实施本公开的实施例的示例电子设备1400的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图14所示,设备1400包括计算单元1401,其可以根据存储在只读存储器(ROM)1402中的计算机程序或者从存储单元1408加载到随机访问存储器(RAM)1403中的计算机程序,来执行各种适当的动作和处理。在RAM 1403中,还可存储设备1400操作所需的各种程序和数据。计算单元1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。
设备1400中的多个部件连接至I/O接口1405,包括:输入单元1406,例如键盘、鼠标等;输出单元1407,例如各种类型的显示器、扬声器等;存储单元1408,例如磁盘、光盘等;以及通信单元1409,例如网卡、调制解调器、无线通信收发机等。通信单元1409允许设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1401的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1401执行上文所描述的各个方法和处理,例如流量控制方法。例如,在一些实施例中,流量控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1402和/或通信单元1409而被载入和/或安装到设备1400上。当计算机程序加载到RAM 1403并由计算单元1401执行时,可以执行上文描述的流量控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元1401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行流量控制方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式***的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (27)
1.一种流量控制方法,包括:
接收来自目标对象的处理请求;所述处理请求中包括目标任务的任务标识以及所述目标任务的处理进度;
在任务集合中查找所述任务标识,得到查找结果;所述任务集合用于记录所述目标对象的并发任务的描述信息;
基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量;
在所述目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝所述目标任务;
其中,在两个同步时间点之间的时段内所述第一总量在并发任务的初始值的基础上累积得到,所述初始值定期更新为第二总量,所述第二总量为定期从远程字典服务同步得到的,其中,多个流控节点分别定期将各流控节点内新增的处理请求数量同步给所述远程字典服务,以实现所述远程字典服务定期统计所述目标对象的并发任务的总量作为所述第二总量。
2.根据权利要求1所述的方法,其中,所述基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量,包括:
在所述目标任务的处理进度为开始状态以及所述查找结果表示所述任务集合不包括所述任务标识的情况下,在所述任务集合中添加所述任务标识,并增加所述并发任务的累积量,得到所述目标对象的并发任务的第一总量。
3.根据权利要求1所述的方法,其中,所述基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量,包括:
在所述目标任务的处理进度为进行状态以及所述查找结果表示所述任务集合不包括所述任务标识的情况下,在所述任务集合中添加所述任务标识,并增加所述并发任务的累积量,得到所述目标对象的并发任务的第一总量。
4.根据权利要求1所述的方法,其中,所述基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量,包括:
在所述目标任务的处理进度为进行状态以及所述查找结果表示所述任务集合包括所述任务标识的情况下,保持所述并发任务的第一总量不变。
5.根据权利要求1所述的方法,其中,所述基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量,包括:
在所述目标任务的处理进度为结束状态以及所述查找结果表示所述任务集合包括所述任务标识的情况下,将所述任务标识从所述任务集合中移除,并减少所述并发任务的累积量,得到所述目标对象的并发任务的第一总量。
6.根据权利要求2-5中任一项所述的方法,还包括:
在到达同步时间点,基于所述并发任务的累积量和所述并发任务的初始量,确定并发任务的增量信息;
将所述增量信息发送给远程字典服务,以得到所述目标对象的并发任务的第二总量;
将所述并发任务的累积量更新为所述并发任务的第二总量。
7.根据权利要求1-5中任一项所述的方法,所述第一总量用于表示所述目标对象在多个流控节点上的并发任务的总量,还包括:
基于所述查找结果和所述目标任务的处理进度,确定所述目标对象在当前流控节点的并发任务的计数结果;
所述计数结果大于预设阈值的情况下,拒绝所述目标任务,所述预设阈值小于所述总量阈值。
8.根据权利要求7所述的方法,还包括:
在扩容或缩容的情况下,更新所述预设阈值和/或所述总量阈值。
9.根据权利要求2-5中任一项所述的方法,所述任务集合还包括任务标识的操作时间,还包括:
在所述处理进度为开始状态或进行状态的情况下,将所述任务标识的操作时间更新为所述处理进度的上报时间;
在所述操作时间和当前时间之间的时长超过预设时长的情况下,将所述任务标识相关的数据从所述任务集合中移除,并减少所述并发任务的累积量。
10.一种流量控制方法,包括:
接收目标对象发送的处理请求;所述处理请求中包括目标任务的任务标识以及所述目标任务的处理进度;
基于负载均衡策略将所述处理请求分配给流控节点;以使得所述流控节点基于处理请求在任务集合中查找所述任务标识,得到查找结果;基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量;在所述目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝所述目标任务;
其中,在两个同步时间点之间的时段内所述第一总量在并发任务的初始值的基础上累积得到,所述初始值定期更新为第二总量,所述第二总量为定期从远程字典服务同步得到的,其中,多个流控节点分别定期将各流控节点内新增的处理请求数量同步给所述远程字典服务,以实现所述远程字典服务定期统计所述目标对象的并发任务的总量作为所述第二总量。
11.根据权利要求10所述的方法,其中,所述基于负载均衡策略将所述处理请求分配给流控节点,包括:
基于一致性哈希方式对所述任务标识执行哈希操作,得到操作结果;
将所述处理请求发送给所述操作结果对应的流控节点。
12.根据权利要求10或11所述的方法,还包括:
在扩容或缩容的情况下,查询更新后的流控节点集合,得到更新后的流控节点。
13.一种流量控制装置,包括:
第一接收模块,用于接收来自目标对象的处理请求;所述处理请求中包括目标任务的任务标识以及所述目标任务的处理进度;
查找模块,用于在任务集合中查找所述任务标识,得到查找结果;所述任务集合用于记录所述目标对象的并发任务的描述信息;
确定模块,用于基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量;
决策模块,用于在所述目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝所述目标任务;
其中,在两个同步时间点之间的时段内所述第一总量在并发任务的初始值的基础上累积得到,所述初始值定期更新为第二总量,所述第二总量为定期从远程字典服务同步得到的,其中,多个流控节点分别定期将各流控节点内新增的处理请求数量同步给所述远程字典服务,以实现所述远程字典服务定期统计所述目标对象的并发任务的总量作为所述第二总量。
14.根据权利要求13所述的装置,其中,所述确定模块,用于:
在所述目标任务的处理进度为开始状态以及所述查找结果表示所述任务集合不包括所述任务标识的情况下,在所述任务集合中添加所述任务标识,并增加所述并发任务的累积量,得到所述目标对象的并发任务的第一总量。
15.根据权利要求13所述的装置,其中,所述确定模块,用于:
在所述目标任务的处理进度为进行状态以及所述查找结果表示所述任务集合不包括所述任务标识的情况下,在所述任务集合中添加所述任务标识,并增加所述并发任务的累积量,得到所述目标对象的并发任务的第一总量。
16.根据权利要求13所述的装置,其中,所述确定模块,用于:
在所述目标任务的处理进度为进行状态以及所述查找结果表示所述任务集合包括所述任务标识的情况下,保持所述并发任务的第一总量不变。
17.根据权利要求13所述的装置,其中,所述确定模块,用于:
在所述目标任务的处理进度为结束状态以及所述查找结果表示所述任务集合包括所述任务标识的情况下,将所述任务标识从所述任务集合中移除,并减少所述并发任务的累积量,得到所述目标对象的并发任务的第一总量。
18.根据权利要求14-17中任一项所述的装置,还包括同步模块,用于:
在到达同步时间点,基于所述并发任务的累积量和所述并发任务的初始量,确定并发任务的增量信息;
将所述增量信息发送给远程字典服务,以得到所述目标对象的并发任务的第二总量;
将所述并发任务的累积量更新为所述并发任务的第二总量。
19.根据权利要求13-17中任一项所述的装置,所述第一总量用于表示所述目标对象在多个流控节点上的并发任务的总量,所述决策模块,还用于:
基于所述查找结果和所述目标任务的处理进度,确定所述目标对象在当前流控节点的并发任务的计数结果;
所述计数结果大于预设阈值的情况下,拒绝所述目标任务,所述预设阈值小于所述总量阈值。
20.根据权利要求19所述的装置,还包括第一更新模块,用于:
在扩容或缩容的情况下,更新所述预设阈值和/或所述总量阈值。
21.根据权利要求14-17中任一项所述的装置,所述任务集合还包括任务标识的操作时间,还包括维护模块,用于:
在所述处理进度为开始状态或进行状态的情况下,将所述任务标识的操作时间更新为所述处理进度的上报时间;
在所述操作时间和当前时间之间的时长超过预设时长的情况下,将所述任务标识相关的数据从所述任务集合中移除,并减少所述并发任务的累积量。
22.一种流量控制装置,包括:
第二接收模块,用于接收目标对象发送的处理请求;所述处理请求中包括目标任务的任务标识以及所述目标任务的处理进度;
分配模块,用于基于负载均衡策略将所述处理请求分配给流控节点;以使得所述流控节点基于处理请求在任务集合中查找所述任务标识,得到查找结果;基于所述查找结果和所述目标任务的处理进度,确定所述目标对象的并发任务的第一总量;在所述目标对象的并发任务的第一总量大于总量阈值的情况下,拒绝所述目标任务;
其中,在两个同步时间点之间的时段内所述第一总量在并发任务的初始值的基础上累积得到,所述初始值定期更新为第二总量,所述第二总量为定期从远程字典服务同步得到的,其中,多个流控节点分别定期将各流控节点内新增的处理请求数量同步给所述远程字典服务,以实现所述远程字典服务定期统计所述目标对象的并发任务的总量作为所述第二总量。
23.根据权利要求22所述的装置,其中,所述分配模块,用于:
基于一致性哈希方式对所述任务标识执行哈希操作,得到操作结果;
将所述处理请求发送给所述操作结果对应的流控节点。
24.根据权利要求22或23所述的装置,还包括第二更新模块,用于:
在扩容或缩容的情况下,查询更新后的流控节点集合,得到更新后的流控节点。
25.一种流量控制***,包括:
流控节点,用于执行权利要求1-9中任一项所述的方法;
网关,用于执行权利要求10-12中任一项所述的方法。
26.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
27.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310717340.5A CN116489090B (zh) | 2023-06-16 | 2023-06-16 | 流量控制方法、装置、***、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310717340.5A CN116489090B (zh) | 2023-06-16 | 2023-06-16 | 流量控制方法、装置、***、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116489090A CN116489090A (zh) | 2023-07-25 |
CN116489090B true CN116489090B (zh) | 2023-10-24 |
Family
ID=87227163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310717340.5A Active CN116489090B (zh) | 2023-06-16 | 2023-06-16 | 流量控制方法、装置、***、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116489090B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103369601A (zh) * | 2013-07-15 | 2013-10-23 | 厦门卓讯信息技术有限公司 | 为手机客户端提供大并发处理及流量控制的方法 |
CN104572277A (zh) * | 2014-12-17 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种线程流控方法和装置 |
CN107995648A (zh) * | 2017-10-30 | 2018-05-04 | 北京松果电子有限公司 | 通信测量方法和装置、移动终端和存储介质 |
CN108471385A (zh) * | 2017-02-23 | 2018-08-31 | 苏宁云商集团股份有限公司 | 一种针对分布式***的流量控制方法及装置 |
WO2019169724A1 (zh) * | 2018-03-09 | 2019-09-12 | 平安科技(深圳)有限公司 | 服务器并发数控制方法、装置、计算机设备及存储介质 |
WO2019192103A1 (zh) * | 2018-04-03 | 2019-10-10 | 平安科技(深圳)有限公司 | 并发访问控制方法、装置、终端设备及介质 |
CN110768912A (zh) * | 2019-10-21 | 2020-02-07 | 中国民航信息网络股份有限公司 | Api网关限流方法及装置 |
CN111600807A (zh) * | 2020-04-14 | 2020-08-28 | 网宿科技股份有限公司 | 一种基于api网关设备的流量控制方法和*** |
CN112100188A (zh) * | 2020-09-01 | 2020-12-18 | 上海交通大学 | 基于机器学习的并发控制方法及*** |
CN114389882A (zh) * | 2022-01-14 | 2022-04-22 | 平安付科技服务有限公司 | 网关流量控制方法、装置、计算机设备及存储介质 |
-
2023
- 2023-06-16 CN CN202310717340.5A patent/CN116489090B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103369601A (zh) * | 2013-07-15 | 2013-10-23 | 厦门卓讯信息技术有限公司 | 为手机客户端提供大并发处理及流量控制的方法 |
CN104572277A (zh) * | 2014-12-17 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种线程流控方法和装置 |
CN108471385A (zh) * | 2017-02-23 | 2018-08-31 | 苏宁云商集团股份有限公司 | 一种针对分布式***的流量控制方法及装置 |
CN107995648A (zh) * | 2017-10-30 | 2018-05-04 | 北京松果电子有限公司 | 通信测量方法和装置、移动终端和存储介质 |
WO2019169724A1 (zh) * | 2018-03-09 | 2019-09-12 | 平安科技(深圳)有限公司 | 服务器并发数控制方法、装置、计算机设备及存储介质 |
WO2019192103A1 (zh) * | 2018-04-03 | 2019-10-10 | 平安科技(深圳)有限公司 | 并发访问控制方法、装置、终端设备及介质 |
CN110768912A (zh) * | 2019-10-21 | 2020-02-07 | 中国民航信息网络股份有限公司 | Api网关限流方法及装置 |
CN111600807A (zh) * | 2020-04-14 | 2020-08-28 | 网宿科技股份有限公司 | 一种基于api网关设备的流量控制方法和*** |
CN112100188A (zh) * | 2020-09-01 | 2020-12-18 | 上海交通大学 | 基于机器学习的并发控制方法及*** |
CN114389882A (zh) * | 2022-01-14 | 2022-04-22 | 平安付科技服务有限公司 | 网关流量控制方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116489090A (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109862065B (zh) | 文件下载方法、装置和电子设备 | |
CN110442579B (zh) | 一种状态树数据存储方法、同步方法及设备和存储介质 | |
US10572285B2 (en) | Method and apparatus for elastically scaling virtual machine cluster | |
CN107545338B (zh) | 业务数据处理方法及业务数据处理*** | |
EP2933723A1 (en) | Method, device and terminal equipment for cleaning up memory | |
CN107451853B (zh) | 一种红包实时派发的方法、装置、***及存储介质 | |
CN108667744B (zh) | 流量控制方法及装置 | |
CN106790552B (zh) | 一种基于内容分发网络的内容提供*** | |
Ding et al. | Optimal operator state migration for elastic data stream processing | |
CN110837409A (zh) | 一种定时执行任务的方法和*** | |
CN111427670A (zh) | 任务调度方法和*** | |
CN113656176A (zh) | 云设备的分配方法、装置、***、电子设备、介质及产品 | |
CN107018170A (zh) | 一种数据同步方法和设备 | |
CN116489090B (zh) | 流量控制方法、装置、***、电子设备及存储介质 | |
CN104168174A (zh) | 一种传输信息的方法及装置 | |
CN117725115A (zh) | 一种数据库序列处理方法、装置、设备以及存储介质 | |
US11025712B1 (en) | Load balancer employing slow start, weighted round robin target selection | |
CN110515728B (zh) | 服务器调度方法、装置、电子设备及机器可读存储介质 | |
CN115061947B (zh) | 资源管理方法、装置、设备和存储介质 | |
CN110413427A (zh) | 订阅数据拉取方法、装置、设备及存储介质 | |
CN114595069B (zh) | 服务下线方法、装置、电子设备及存储介质 | |
CN108351873B (zh) | 一种缓存管理方法和装置 | |
CN115543416A (zh) | 一种配置更新方法、装置、电子设备及存储介质 | |
CN113742376A (zh) | 一种同步数据的方法、第一服务器以及同步数据的*** | |
JP6163474B2 (ja) | ストレージ管理装置、ストレージ管理システム、制御方法及びプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |