CN113037644A - 分布式限流的方法和装置 - Google Patents
分布式限流的方法和装置 Download PDFInfo
- Publication number
- CN113037644A CN113037644A CN202110320702.8A CN202110320702A CN113037644A CN 113037644 A CN113037644 A CN 113037644A CN 202110320702 A CN202110320702 A CN 202110320702A CN 113037644 A CN113037644 A CN 113037644A
- Authority
- CN
- China
- Prior art keywords
- micro service
- quota
- calling
- quota object
- micro
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000015654 memory Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
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/215—Flow control; Congestion control using token-bucket
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开提供了一种分布式限流的方法和装置,属于微服务技术领域。该方法包括:确定当前时间点第一微服务对第二微服务的调用情况;若调用情况满足配额对象的获取条件,则基于距离当前时间点最近的历史时间段内第一微服务调用第二微服务的次数,预测第一微服务调用第二微服务的配额对象需求数目,基于该配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,目标数量的配额对象为第一微服务调用第二微服务所需的配额对象,使用目标数量的配额对象,处理第一微服务对第二微服务的调用请求。采用本公开,可以在分布式限流时,降低执行处理请求的延时。
Description
技术领域
本公开涉及微服务技术领域,特别涉及一种分布式限流的方法和装置。
背景技术
随着微服务的发展,微服务与微服务之间的调用稳定性变得越来越重要,限制微服务之间的调用流量可以保证微服务之间的调用稳定性,是保障微服务***运行的重要手段。
相关技术中,微服务之间的调用需要使用配额对象,例如微服务A接收到一个处理请求,微服务A执行该处理请求时,需要调用微服务B,微服务A向远端请求调用微服务B的配额对象。远端判断当前是否存在调用微服务B的配额对象,若存在,则向微服务A提供调用微服务B的一个配额对象。微服务A接收到远端提供的调用微服务B的配额对象后,调用微服务B。若远端判断不存在调用微服务B的配额对象,则向微服务A提供不存在配额对象的通知消息,微服务A将该处理请求丢弃。微服务执行处理请求的现有方式延时比较高。
发明内容
为了解决执行处理请求的延时比较高的问题,本公开实施例提供了一种分布式限流的方法和装置。所述技术方案如下:
一方面,本公开提供了一种分布式限流的方法,所述方法包括:
确定当前时间点第一微服务对第二微服务的调用情况;
若所述调用情况满足配额对象的获取条件,则基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目;
基于所述配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,所述目标数量的配额对象为所述第一微服务调用所述第二微服务所需的配额对象;
使用所述目标数量的配额对象,处理所述第一微服务对所述第二微服务的调用请求。
在一种可能的实现方式中,所述方法还包括:
在所述调用情况为目标剩余数目小于预设数值时,确定所述调用情况满足配额对象的获取条件,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;或者,
在所述调用情况为达到所述第一微服务调用所述第二微服务所需的配额对象的获取周期时,确定所述调用情况满足配额对象的获取条件。
这样,可以更合理地获取第一微服务调用第二微服务所需的配额对象。
在一种可能的实现方式中,所述基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目,包括:
确定距离当前时间点最近的历史时间段的各时间间隔内所述第一微服务调用所述第二微服务的次数;
基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目。
这样,可以准确地确定出配额对象需求数目。
在一种可能的实现方式中,所述基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目,包括:
对所述各时间间隔内所述第一微服务调用所述第二微服务的次数进行加权处理,得到所述第一微服务调用所述第二微服务所需的配额对象预测数目;
获取所述当前时间点的目标剩余数目,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;
将所述配额对象预测数目与所述目标剩余数目的差值,确定为配额对象需求数目。
这样,可以准确地确定出配额对象需求数目。
在一种可能的实现方式中,所述配额对象需求数目大于或等于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述第二微服务配额对象的数目;
所述配额对象需求数目小于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述配额对象需求数目;
其中,所述第二微服务配额对象为所述第二微服务之外的其他微服务调用所述第二微服务时所需的配额对象。
另一方面,本公开提供了一种分布式限流的装置,所述装置包括:
确定模块,用于确定当前时间点第一微服务对第二微服务的调用情况;
预测模块,用于若所述调用情况满足配额对象的获取条件,则基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目;
获取模块,用于基于所述配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,所述目标数量的配额对象为所述第一微服务调用所述第二微服务所需的配额对象;
处理模块,用于使用所述目标数量的配额对象,处理所述第一微服务对所述第二微服务的调用请求。
在一种可能的实现方式中,所述确定模块,还用于:
在所述调用情况为目标剩余数目小于预设数值时,确定所述调用情况满足配额对象的获取条件,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;或者,
在所述调用情况为达到所述第一微服务调用所述第二微服务所需的配额对象的获取周期时,确定所述调用情况满足配额对象的获取条件。
在一种可能的实现方式中,所述预测模块,用于:
确定距离当前时间点最近的历史时间段的各时间间隔内所述第一微服务调用所述第二微服务的次数;
基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目。
在一种可能的实现方式中,所述预测模块,用于:
对所述各时间间隔内所述第一微服务调用所述第二微服务的次数进行加权处理,得到所述第一微服务调用所述第二微服务所需的配额对象预测数目;
获取所述当前时间点的目标剩余数目,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;
将所述配额对象预测数目与所述目标剩余数目的差值,确定为配额对象需求数目。
在一种可能的实现方式中,所述配额对象需求数目大于或等于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述第二微服务配额对象的数目;
所述配额对象需求数目小于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述配额对象需求数目;
其中,所述第二微服务配额对象为所述第二微服务之外的其他微服务调用所述第二微服务时所需的配额对象。
再一方面,本公开提供了一种分布式限流的计算机设备,所述计算机设备包括存储器和处理器,其中:所述存储器用于存储计算机指令;所述处理器执行所述存储器存储的计算机指令,以使得所述计算机设备执行上述第一方面所述的方法。
再一方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算机设备执行时,所述计算机设备执行第一方面所述的方法。
本公开实施例提供的技术方案带来的有益效果至少包括:
本公开实施例中,通过***配额对象需求数目,配额对象需求数目为第一微服务调用第二微服务所需的配额对象的数目,基于该配额对象需求数目提前获取第一微服务调用第二微服务所需的配额对象,使得接收到第一微服务调用第二微服务的调用请求后即可调用第二微服务,而不需要在接收到调用请求后向配额对象分配节点获取配额对象,所以可以在分布式限流时降低执行处理请求的延时。
附图说明
图1是本公开实施例提供的一种分布式限流的方法的流程示意图;
图2是本公开实施例提供的一种分布式限流的方法的框架示意图;
图3是本公开实施例提供的一种分布式限流的装置的结构示意图;
图4是本公开实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步的详细描述。
为了便于理解本公开提供的技术方案和实施例,下面对涉及的概念进行解释:
微服务,是将一个独立的***拆分成的若干个小的服务,这些小的服务独立部署,服务与服务之间可以传输数据。
服务网格,是指用于微服务的基础架构层,使得每个微服务之间的通信更加流畅、可靠和迅速。
服务网格的网络代理,是用于微服务之间通信的代理,每个微服务对应一个网络代理。例如,微服务A向微服务B发送调用请求时,微服务A向微服务A的网络代理发送调用请求,微服务A的网络代理向微服务B的网络代理发送该调用请求。微服务B的网络代理向微服务B发送该调用请求。
在相关技术中,分布式限流方案中,一个微服务在接收到处理请求时,才向远端请求调用执行处理请求所需的微服务的配额对象,会导致执行处理请求的延时比较高。而且在服务网格中存在网络代理的情况下,微服务与网络代理之间需要通信,进一步也会增加执行处理请求的延时。基于此需要提供一种低延时的分布式限流方法。
本公开实施例提供了一种分布式限流的方法,该方法的执行主体可以是服务器,服务器上安装有一个或多个微服务。服务器可以设置有处理器、存储器和收发器。处理器可以用于执行分布式限流的过程。存储器可以用于存储执行分布式限流的方法过程中需要的数据,如存储配额对象的数目等。收发器可以用于接收以及发送数据,如向配额对象分配节点发送配额对象的获取请求,接收配额对象分配节点发送的配额对象。
在介绍分布式限流的方法的流程之前,首先介绍配额对象分配节点生成配额对象的过程:
配额对象分配节点是管理调用微服务的配额对象的节点。配额对象分配节点使用的限流算法是令牌桶,第一微服务调用第二微服务使用的配额对象是令牌,第一微服务每次调用第二微服务使用一个令牌。配额对象分配节点按照恒定的速率生成令牌,将生成的令牌与第二微服务的标识对应存储。示例性的,此处可以是将生成的令牌存储至第二微服务的标识对应的令牌桶中,令牌桶有最大令牌数目,在令牌桶中令牌的数目达到最大令牌数目后,配额对象分配节点将再生成的令牌丢弃,或者,不再生成令牌,直至令牌桶中令牌的数目未达到最大令牌数目。这样,服务器向配额对象分配节点请求调用第二微服务的配额对象时,配额对象分配节点是在令牌中获取令牌,发送该服务器。
在另一种可能的实现方式中,配额对象分配节点使用的限流算法也可以是滑动窗口、固定窗口、漏桶等。
以下介绍分布式限流的方法流程,如图1所示:
步骤101,确定当前时间点第一微服务对第二微服务的调用情况。
其中,第一微服务和第二微服务均安装在服务器上,示例性的,第二微服务与第一微服务可以安装在同一服务器上,也可以安装在不同服务器上。
在本实施例中,第一微服务所在服务器每当达到预设周期,确定当前时间点第一微服务对第二微服务的调用情况,通过该调用情况可以确定是否请求第一微服务调用第二微服务所需的配额对象。配额对象用于第一微服务调用第二微服务时使用,一个配额对象用于第一微服务调用一次第二微服务,即第一微服务调用一次第二微服务,消耗一个配额对象。
步骤102,若调用情况满足配额对象的获取条件,则基于距离当前时间点最近的历史时间段内第一微服务调用第二微服务的次数,预测配额对象需求数目。
在本实施例中,服务器可以判断调用情况是否满足配额对象的获取条件,若不满足配额对象的获取条件,则不进行后续处理。若满足配额对象的获取条件,则服务器确定距离当前时间点最近的历史时间段,历史时间段的时长可以预设,例如,当前时间点为2020-12-10的14点,历史时间段的长度为8小时,则距离当前时间点最近的历史时间段为2020-12-10的6点至14点。
服务器记录有每次第一微服务调用第二微服务的时间点,服务器获取该历史时间段内第一微服务调用第二微服务的次数。然后服务器使用该次数,预测配额对象需求数目,该配额对象需求数目为第一微服务调用第二微服务所需的配额对象的数目。
步骤103,基于配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,配额对象为第一微服务调用第二微服务所需的配额对象。
其中,配额对象分配节点是管理调用微服务的配额对象的节点,任一微服务调用第二微服务,该任一微服务均会向配额对象分配节点获取调用第二微服务的配额对象。
在本实施例中,服务器确定出配额对象需求数目后,可以向配额对象分配节点发送配额对象的获取请求,配额对象的获取请求中包括第二微服务的标识以及配额对象需求数目。第二微服务的标识用于指示是获取调用第二微服务的配额对象。
配额对象分配节点接收到服务器发送的配额对象的获取请求后,可以从中解析获得第二微服务的标识以及配额对象需求数目。配额对象分配节点确定当前时间点自身具有的第二微服务的标识对应的配额对象,即第二微服务配额对象,第二微服务配额对象指的是第二微服务之外的其他微服务调用第二微服务可使用的配额对象。判断第二微服务配额对象的数目与配额对象需求数目的大小关系。若第二微服务配额对象的数目大于或等于配额对象需求数目,则确定目标数量为配额对象需求数目,若第二微服务配额对象的数目小于配额对象需求数目,则确定目标数量为当前时间点第二微服务配额对象的数目。配额对象分配节点向服务器发送目标数量的配额对象。
另外,在其它微服务将所有的第二微服务配额对象占用,此时配额对象分配节点上第二微服务的标识对应的配额对象的数目为0。配额对象分配节点向服务器返回无配额对象的通知消息,当然还可以向服务器返回配额对象的获取时间点,服务器可以在该配额对象的获取时间点,再次向配额对象分配节点请求配额对象。
另外,在目标数量小于配额对象需求数目时,配额对象分配节点向服务器发送目标数量的配额对象时,也可以向服务器返回配额对象的获取时间点,服务器可以在该配额对象的获取时间点,再次向配额对象分配节点请求配额对象。
步骤104,使用目标数量的配额对象,处理第一微服务对第二微服务的调用请求。
在本实施例中,服务器获取到目标数量的配额对象后,服务器接收到处理请求时,若确定执行该处理请求时包括第一微服务调用第二微服务的调用请求,可以使用目标数量的配额对象调用第二微服务。在每次调用第二微服务后,将目标数量减去一。
另外,服务器在目标数量为0时,可以将第一微服务调用第二微服务的调用请求丢弃。
本公开实施例中,通过提前异步获取第一微服务调用第二微服务所需的配额对象,使得接收到调用请求后,即可调用第二微服务,而不需要在接收到调用请求后向配额对象分配节点获取配额对象,所以可以在分布式限流时,降低执行处理请求的延时。
以下针对图1的流程进行进一步说明:
确定第一微服务对第二微服务的调用情况满足配额对象的获取条件的处理有多种,如下给出两种可能的实现方式:
方式一,在调用情况为目标剩余数目小于预设数值时,确定调用情况满足配额对象的获取条件,其中,目标剩余数目为第一微服务调用第二微服务所需的配额对象的剩余数目。
其中,预设数值可以预设,并且存储至服务器,预设数值比较小,如2、3等。
在本实施例中,在当前时间点,确定第一微服务调用第二微服务所需的配额对象的剩余数目,即目标剩余数目。服务器判断目标剩余数目与预设数值的大小关系。若目标剩余数目小于预设数值,则确定调用情况满足配额对象的获取条件。若目标剩余数目未小于预设数值,则确定调用情况不满足配额对象的获取条件。
方式二,在调用情况为达到第一微服务调用第二微服务所需的配额对象的获取周期时,确定调用情况满足配额对象的获取条件。
其中,配额对象的获取周期可以预设,并且存储至服务器中,配额对象的获取周期可以是1秒等。每个微服务调用其他微服务的配额对象的获取周期可以相同,也可以不相同。
在本实施例中,在当前时间点,判断当前时间点是否达到第一获取周期,该获取周期为第一微服务调用第二微服务所需的配额对象的周期,确定调用情况满足配额对象的获取条件。
可选的,服务器在检测到达到配额对象的获取周期后,可以判断已获取配额对象的剩余配额对象的数目,在该剩余配额对象的数目小于预设数值时,才确定调用情况满足配额对象的获取条件。这样,在剩余配额对象的数目比较少时才去配额对象分配节点获取配额对象,不至于获取到过多的配额对象,而导致其他微服务不能调用第二微服务。
在一种可能的实现方式中,步骤102中,确定配额对象需求数目的处理可以为:
确定距离当前时间点最近的历史时间段的各时间间隔内第一微服务调用第二微服务的次数;基于各时间间隔内第一微服务调用第二微服务的次数,预测配额对象需求数目。
其中,配额对象需求数目为第一微服务调用第二微服务所需的配额对象的数目
在本实施例中,服务器确定距离当前时间点最近的历史时间段,服务器将历史时间段划分为多个相同的时间间隔,每个时间间隔的长度相同。服务器获取该历史时间段的各时间间隔内第一微服务调用第二微服务的次数。然后服务器对各时间间隔内第一微服务调用第二微服务的次数进行加权处理,获得加权值。服务器根据该加权值,确定配额对象需求数目。示例性的,可以将该加权值,确定为配额对象需求数目。
此处,加权处理时,各时间间隔的权重之和为1,越靠近当前时间点的时间间隔的权重越大,越远离当前时间点的时间间隔的权重越小,这样,可以使得靠近当前时间点的时间间隔内第一微服务调用第二微服务的次数的参考性更高。
可选的,还可以使用自回归滑动平均模型(Auto-Regressive Moving AverageModel,ARMA),预测上述配额对象需求数目,处理为:
Yt=β1Yt-1+β2Yt-2+β3Yt-3+…+βpYt-p+Zt (1)
在公式(1)中,Yt为第一微服务调用第二微服务所需的配额对象的预测数目,可以简称为配额对象预测数目。β1为距离当前时间点最近的第一个时间间隔的权重参数,Yt-1为距离当前时间点最近的第一个时间间隔内第一微服务调用第二微服务的次数,依此类推,βp为距离当前时间点最近的第p个时间间隔的权重参数,Yt-p为距离当前时间点最近的第p个时间间隔内第一微服务调用第二微服务的次数。Zt为本次获取配额对象需求数目的准确率参数。此处β1>β2,β2>β3,依此类推,βp-1>βp,这样,可以使得靠近当前时间点的时间间隔内第一微服务调用第二微服务的次数的参考性更高,确定出的配额对象需求数目越接近第一微服务调用第二微服务的次数。然后使用Yt确定配额对象需求数目,如将Yt确定为配额对象需求数目等。
另外,在使用ARMA确定配额对象需求数目时,服务器还可以基于第t-1个时间间隔获取的配额对象需求数目的准确率,确定第t个时间间隔的Zt,调整方式为:
其中,在公式(2)中,r表示第t-1个时间间隔获取的配额对象需求数目的准确率,Ys表示第t-1个时间间隔使用的实际配额对象的数目,Yt-1表示第t-1个时间间隔获取的配额对象需求数目。
然后使用r所属的准确率范围,以及准确率范围与z的对应关系,确定r所属的准确率范围对应的z,将z确定为第t个时间间隔的Zt。
在一种可能的实现方式中,在确定配额对象需求数目时,还考虑了当前时间点,第一微服务调用第二微服务的配额对象的剩余数目(即目标剩余数目),处理为:
对各时间间隔内第一微服务调用第二微服务的次数进行加权处理,得到第一微服务调用第二微服务所需的配额对象预测数目;获取当前时间点的目标剩余数目,其中,目标剩余数目为第一微服务调用第二微服务所需的配额对象的剩余数目;将配额对象预测数目与目标剩余数目的差值,确定为配额对象需求数目。
在本实施例中,服务器基于各时间间隔内第一微服务调用第二微服务的次数,确定出上述描述的加权值,即配额对象预测数目,或者Yt。并且服务器确定当前时间点目标剩余数目,使用配额对象预测数目减去目标剩余数目,获得配额对象需求数目,或者服务器使用Yt减去目标剩余数目,获得配额对象需求数目。这样,考虑了当前时间点目标剩余数目,所以可以使确定出的配额对象需求数目更准确。
另外,为了更好的理解分布式限流的方法流程,还提供了使用令牌桶时,本公开实施例的处理流程:如图2所示,配额对象分配节点按照恒定速率生成令牌。图2中,服务器确定配额对象需求数目,异步从令牌桶中,获取目标配额对象,执行第一微服务调用第二微服务的调用请求。在未获取到目标配额对象时,服务器将第一微服务调用第二微服务的调用请求丢弃。
本公开实施例中,通过***配额对象需求数目,配额对象需求数目为第一微服务调用第二微服务所需的配额对象的数目,基于该配额对象需求数目提前获取第一微服务调用第二微服务所需的配额对象,使得接收到第一微服务调用第二微服务的调用请求后,即可调用第二微服务,而不需要在接收到调用请求后向配额对象分配节点获取配额对象,所以可以在分布式限流时,降低执行处理请求的延时。
基于相同的技术构思,本公开实施例还提供了一种分布式限流的装置,如图3所示,该装置包括:
确定模块310,用于确定当前时间点第一微服务对第二微服务的调用情况;
预测模块320,用于若所述调用情况满足配额对象的获取条件,则基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目;
获取模块330,用于基于所述配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,所述目标数量的配额对象为所述第一微服务调用所述第二微服务所需的配额对象;
处理模块340,用于使用所述目标数量的配额对象,处理所述第一微服务对所述第二微服务的调用请求。
在一种可能的实现方式中,所述确定模块310,还用于:
在所述调用情况为目标剩余数目小于预设数值时,确定所述调用情况满足配额对象的获取条件,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;或者,
在所述调用情况为达到所述第一微服务调用所述第二微服务所需的配额对象的获取周期时,确定所述调用情况满足配额对象的获取条件。
在一种可能的实现方式中,所述预测模块320,用于:
确定距离当前时间点最近的历史时间段的各时间间隔内所述第一微服务调用所述第二微服务的次数;
基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目。
在一种可能的实现方式中,所述预测模块320,用于:
对所述各时间间隔内所述第一微服务调用所述第二微服务的次数进行加权处理,得到所述第一微服务调用所述第二微服务所需的配额对象预测数目;
获取所述当前时间点的目标剩余数目,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;
将所述配额对象预测数目与所述目标剩余数目的差值,确定为配额对象需求数目。
在一种可能的实现方式中,所述配额对象需求数目大于或等于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述第二微服务配额对象的数目;
所述配额对象需求数目小于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述配额对象需求数目;
其中,所述第二微服务配额对象为所述第二微服务之外的其他微服务调用所述第二微服务时所需的配额对象。
本公开实施例中,通过***配额对象需求数目,配额对象需求数目为第一微服务调用第二微服务所需的配额对象的数目,基于该配额对象需求数目提前获取第一微服务调用第二微服务所需的配额对象,使得接收到第一微服务调用第二微服务的调用请求后,即可调用第二微服务,而不需要在接收到调用请求后向配额对象分配节点获取配额对象,所以可以在分布式限流时,降低执行处理请求的延时。
需要说明的是:上述实施例提供的分布式限流的装置在分布式限流时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式限流的装置与分布式限流的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本公开实施例提供的一种计算机设备的结构示意图,该计算机设备400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)401和一个或一个以上的存储器402,其中,所述存储器402中存储有至少一条指令,所述至少一条指令由所述处理器401加载并执行以实现上述分布式限流的方法。
可选的,如果配额对象分配节点和该计算机设备没有集成为一体,该计算机设备还需具有通信接口,该通信接口用于执行从配额对象分配节点获取配额对象。
在示例性实施例中,还提供了一种计算机可读存储介质,如包括程序代码的存储器,上述程序代码可由计算机设备中的处理器执行以完成上述实施例中的分布式限流的方法。例如,该计算机可读存储介质是非临时计算机可读存储介质,如只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact discread-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的一个可选的实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种分布式限流的方法,其特征在于,所述方法包括:
确定当前时间点第一微服务对第二微服务的调用情况;
若所述调用情况满足配额对象的获取条件,则基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目;
基于所述配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,所述配额对象为所述第一微服务调用所述第二微服务所需的配额对象;
使用所述目标数量的配额对象,处理所述第一微服务对所述第二微服务的调用请求。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述调用情况为目标剩余数目小于预设数值时,确定所述调用情况满足配额对象的获取条件,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;或者,
在所述调用情况为达到所述第一微服务调用所述第二微服务所需的配额对象的获取周期时,确定所述调用情况满足配额对象的获取条件。
3.根据权利要求1或2所述的方法,其特征在于,所述基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目,包括:
确定距离当前时间点最近的历史时间段的各时间间隔内所述第一微服务调用所述第二微服务的次数;
基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目。
4.根据权利要求3所述的方法,其特征在于,所述基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目,包括:
对所述各时间间隔内所述第一微服务调用所述第二微服务的次数进行加权处理,得到所述第一微服务调用所述第二微服务所需的配额对象预测数目;
获取所述当前时间点的目标剩余数目,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;
将所述配额对象预测数目与所述目标剩余数目的差值,确定为配额对象需求数目。
5.根据权利要求1或2所述的方法,其特征在于,所述配额对象需求数目大于或等于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述第二微服务配额对象的数目;
所述配额对象需求数目小于所述配额对象分配节点在所述当前时间点具有的第二微服务配额对象的数目时,所述目标数量等于所述配额对象需求数目;
其中,所述第二微服务配额对象为所述第二微服务之外的其他微服务调用所述第二微服务时所需的配额对象。
6.一种分布式限流的装置,其特征在于,所述装置包括:
确定模块,用于确定当前时间点第一微服务对第二微服务的调用情况;
预测模块,用于若所述调用情况满足配额对象的获取条件,则基于距离所述当前时间点最近的历史时间段内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目;
获取模块,用于基于所述配额对象需求数目,向配额对象分配节点获取目标数量的配额对象,所述目标数量的配额对象为所述第一微服务调用所述第二微服务所需的配额对象;
处理模块,用于使用所述目标数量的配额对象,处理所述第一微服务对所述第二微服务的调用请求。
7.根据权利要求6所述的装置,其特征在于,所述确定模块,还用于:
在所述调用情况为目标剩余数目小于预设数值时,确定所述调用情况满足配额对象的获取条件,其中,所述目标剩余数目为所述第一微服务调用所述第二微服务所需的配额对象的剩余数目;或者,
在所述调用情况为达到所述第一微服务调用所述第二微服务所需的配额对象的获取周期时,确定所述调用情况满足配额对象的获取条件。
8.根据权利要求6或7所述的装置,其特征在于,所述预测模块,用于:
确定距离当前时间点最近的历史时间段的各时间间隔内所述第一微服务调用所述第二微服务的次数;
基于所述各时间间隔内所述第一微服务调用所述第二微服务的次数,预测配额对象需求数目。
9.一种分布式限流的计算机设备,其特征在于,所述计算机设备包括存储器和处理器,其中:
所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以使得所述计算机设备执行权利要求1至5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算机设备执行时,所述计算机设备执行权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110320702.8A CN113037644B (zh) | 2021-03-25 | 2021-03-25 | 分布式限流的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110320702.8A CN113037644B (zh) | 2021-03-25 | 2021-03-25 | 分布式限流的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113037644A true CN113037644A (zh) | 2021-06-25 |
CN113037644B CN113037644B (zh) | 2023-03-24 |
Family
ID=76473868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110320702.8A Active CN113037644B (zh) | 2021-03-25 | 2021-03-25 | 分布式限流的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113037644B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111130908A (zh) * | 2019-12-31 | 2020-05-08 | 中信百信银行股份有限公司 | 基于调用流量分析预测的微服务动态聚合拆分*** |
CN111447577A (zh) * | 2020-02-18 | 2020-07-24 | 中国联合网络通信集团有限公司 | 配额管理方法及设备 |
CN111475373A (zh) * | 2020-03-10 | 2020-07-31 | 中国平安人寿保险股份有限公司 | 微服务下的服务控制方法、装置、计算机设备及存储介质 |
US20200328984A1 (en) * | 2019-04-11 | 2020-10-15 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for allocating resource |
CN112416594A (zh) * | 2020-11-30 | 2021-02-26 | 四川长虹智能制造技术有限公司 | 一种微服务分配方法、电子设备和计算机存储介质 |
-
2021
- 2021-03-25 CN CN202110320702.8A patent/CN113037644B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200328984A1 (en) * | 2019-04-11 | 2020-10-15 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for allocating resource |
CN111130908A (zh) * | 2019-12-31 | 2020-05-08 | 中信百信银行股份有限公司 | 基于调用流量分析预测的微服务动态聚合拆分*** |
CN111447577A (zh) * | 2020-02-18 | 2020-07-24 | 中国联合网络通信集团有限公司 | 配额管理方法及设备 |
CN111475373A (zh) * | 2020-03-10 | 2020-07-31 | 中国平安人寿保险股份有限公司 | 微服务下的服务控制方法、装置、计算机设备及存储介质 |
CN112416594A (zh) * | 2020-11-30 | 2021-02-26 | 四川长虹智能制造技术有限公司 | 一种微服务分配方法、电子设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113037644B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108924221B (zh) | 分配资源的方法和装置 | |
CN113055308B (zh) | 带宽调度方法、流量传输方法及相关产品 | |
EP2894827B1 (en) | Method, apparatus, and system for managing migration of virtual machine | |
CN106959894B (zh) | 资源分配方法和装置 | |
CN112367268B (zh) | 用于微服务的限流方法及装置 | |
CN111026553B (zh) | 离线混部作业的资源调度方法及服务器*** | |
JP2009026316A (ja) | 待ち行列中での待ち時間推定装置 | |
CN113196238B (zh) | 服务感知的无服务器云计算*** | |
US20220318065A1 (en) | Managing computer workloads across distributed computing clusters | |
GB2591973A (en) | Method and apparatus for mapping network slices onto network infrastructures with SLA guarantee | |
CN110636388A (zh) | 一种业务请求分配方法、***、电子设备及存储介质 | |
CN109558248B (zh) | 一种用于确定面向海洋模式计算的资源分配参数的方法及*** | |
CN115134368A (zh) | 一种负载均衡方法、装置、设备以及存储介质 | |
CN112181664A (zh) | 负载均衡方法及装置、计算机可读存储介质及电子设备 | |
CN111860927B (zh) | 模型的训练方法、服务请求处理方法、装置、设备及介质 | |
Volkov et al. | Development of a Model and Algorithms for Servicing Real-Time and Data Traffic in a Cloud Computing System | |
CN114020469A (zh) | 基于边缘节点的多任务学习方法、装置、介质与设备 | |
CN113037644B (zh) | 分布式限流的方法和装置 | |
CN111130933A (zh) | 页面流量的预估方法、装置及计算机可读存储介质 | |
CN112286622A (zh) | 虚机迁移处理及策略生成方法、装置、设备及存储介质 | |
CN115495256A (zh) | 服务调用方法、装置、电子设备及存储介质 | |
CN114936089A (zh) | 资源调度方法、***、设备及存储介质 | |
CN108257077B (zh) | 基于gpu的聚类数据的处理方法、***及计算设备 | |
US20090183172A1 (en) | Middleware Bridge System And Method | |
CN116321272B (zh) | Af网元中ue地址信息的时效预测方法及装置 |
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 |