掌桥专利:专业的专利平台
掌桥专利
首页

一种分布式限流方法、装置、电子设备及存储介质

文献发布时间:2024-01-17 01:28:27


一种分布式限流方法、装置、电子设备及存储介质

技术领域

本发明涉及信息技术领域,特别是涉及一种分布式限流方法、装置、电子设备及存储介质。

背景技术

目前,由于系统的吞吐量有限,当短时间内接收到大量访问请求时,往往会造成系统故障。因此,往往会通过限制系统的流量的方式来保护系统。然而,目前限流往往是针对单体,而针对微服务的分布式网格架构仍然缺乏相应的限流方法。

发明内容

本发明实施例的目的在于提供一种分布式限流方法、装置、电子设备及存储介质,以实现分布式系统的限流。具体技术方案如下:

在本发明实施的第一方面,首先提供了一种分布式限流方法,所述方法应用于分布式系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,所述方法包括:

所述中心节点获取各分节点在预设时间周期内的请求访问量;

所述中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;

各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流。

在一种可能的实施方式中,所述中心节点根据所述请求访问量计算各分节点的限流阈值,包括:

所述中心节点根据各所述分节点的预设节点权重和所述请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述将所述限流阈值发送至各所述分节点,包括:

当所述分节点的所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;

当所述分节点的所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

所述各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流,包括:

各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

在一种可能的实施方式中,所述各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流,包括:

通过各所述分节点接收所述限流阈值;

根据接收到的限流阈值、当前周期的剩余流量和预设时间窗口,计算下一相邻时间周期的限流阈值;

各所述分节点根据所述下一相邻时间周期的限流阈值,进行下一相邻时间周期的限流。

在一种可能的实施方式中,所述方法还包括:

所述中心节点获取所述分布系统的节点更新信息,其中,所述节点更新信息包括更新后的分节点的数量;

所述中心节点根据所述更新后的分节点的数量和请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,在所述中心节点根据所述请求访问量计算各分节点的限流阈值之后,所述方法还包括:

当所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

在本发明实施的第二方面,还提供了一种分布式限流装置,所述装置应用于分布式系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,所述装置包括:

访问量获取模块,用于所述中心节点获取各分节点在预设时间周期内的请求访问量;

阈值发送模块,用于所述中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;

节点限流模块,用于各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流。

在一种可能的实施方式中,所述阈值发送模块,具体用于所述中心节点根据各所述分节点的预设节点权重和所述请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述阈值发送模块,具体用于当所述分节点的所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述分节点的所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

所述节点限流模块,具体用于各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

在一种可能的实施方式中,所述节点限流模块,具体用于通过各所述分节点接收所述限流阈值;根据接收到的限流阈值、当前周期的剩余流量和预设时间窗口,计算下一相邻时间周期的限流阈值;各所述分节点根据所述下一相邻时间周期的限流阈值,进行下一相邻时间周期的限流。

在一种可能的实施方式中,所述装置还包括:

访问限流模块,用于所述中心节点获取所述分布系统的节点更新信息,其中,所述节点更新信息包括更新后的分节点的数量;所述中心节点根据所述更新后的分节点的数量和请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述装置还包括:

令牌发送模块,用于当所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

令牌限流模块,用于各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

在本发明实施的第三方面,还提供了一种分布式限流系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,所述系统包括:

所述中心节点,用于获取各分节点在预设时间周期内的请求访问量;根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;

各所述分节点,用于接收所述限流阈值;根据接收到的限流阈值进行限流。

在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的分布式限流方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的分布式限流方法。

在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的分布式限流方法。

本发明实施例提供的一种分布式限流方法、装置、电子设备及存储介质,所述方法应用于分布式系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,所述方法包括:所述中心节点获取各分节点在预设时间周期内的请求访问量;所述中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流,从而实现通过各分节点在预设时间周期内的请求访问量计算得到各分布式节点的限流阈值并发送至各分布式节点,进而通过该限流阈值进行各分布式节点的限流。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例中分布式限流方法的一种流程示意图;

图2为本发明实施例中限流阈值发送的一种流程示意图;

图3为本发明实施例中计算各分节点的限流阈值的一种流程示意图;

图4为本发明实施例中分布式系统的一种结构示意图;

图5为本发明实施例中分布式限流方法的另一种流程示意图;

图6为本发明实施例中根据限流阈值进行限流的一种流程示意图;

图7为本发明实施例中分布式限流方法的又一种流程示意图;

图8为本发明实施例中分布式限流装置的一种结构示意图;

图9为本发明实施例中分布式限流系统的一种结构示意图;

图10为本发明实施例中电子设备的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

在本发明实施的第一方面,首先提供了一种分布式限流方法,所述方法应用于分布式系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,参见图1,所述方法包括:

步骤S11,所述中心节点获取各分节点在预设时间周期内的请求访问量。

其中,本申请实施例的方法应用于分布式框架的分布式系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接。具体的,本申请实施例中的分布式系统可以是应用于多个领域的分布式系统,例如应用于网络带宽总体额度防超额、聊天室总体消息量控制、服务总体接口访问量限制。

本申请实施例中的预设时间周期,可以是预先设定的,例如1分钟、30秒等。所述中心节点获取各分节点在预设时间周期内的请求访问量,可以通过中心节点中的指定功能模块获取,例如,中心节点中可以设置有采集中心模块,通过该采集中心模块获取各分节点在预设时间周期内的请求访问量。

步骤S12,所述中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点。

其中,中心节点根据所述请求访问量计算各分节点的限流阈值,可以通过预先设定分节点的权重,然后通过获取分布式系统的预设,并利用该分布式系统的阈值和分节点的权重计算各分节点的阈值。在一种可能的实施方式中,所述中心节点根据所述请求访问量计算各分节点的限流阈值,包括:所述中心节点根据各所述分节点的预设节点权重和所述请求访问量计算各所述分节点的限流阈值。具体的,各分节点的权重可以相同也可以不同,在实际使用过程中,可以通过不同分节点的重要程度进行权重的设定。

在实际使用过程中,中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点,可以通过中心节点中的指定功能模块进行计算,例如,可以通过中心节点内置的限流中心模块计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点。

步骤S13,各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流。

其中,各所述分节点接收所述限流阈值,可以通过分节点中的指定功能模块进行接收,例如,通过分节点中的数据采集模块接收所述限流阈值。根据接收到的限流阈值进行限流,可以通过分节点中的限流模块根据接收到的限流阈值进行自身的限流。具体的,分节点根据接收到的限流阈值进行限流,可以为当分节点接收到的请求数超过该限流阈值时暂停接收。在实际使用过程中,可以通过各分布式节点中内置的插件进行控制,以使各分布式节点根据对应的阈值进行限流,通过插件快速嵌入系统不但可以提高服务稳定性,还可以降低服务成本、提高产品体验。

可见,通过本申请实施例的方法,可以通过各分节点在预设时间周期内的请求访问量计算得到各分布式节点的限流阈值并发送至各分布式节点,进而通过该限流阈值进行各分布式节点的限流。

在一种可能的实施方式中,所述将所述限流阈值发送至各所述分节点,参见图2,包括:

步骤S21,当所述分节点的所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述分节点的所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

所述各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流,包括:

步骤S22,各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

其中,本申请实施例中,当限流阈值较小时可以通过限流令牌进行限流,而当限流阈值较大时则可以通过直接将限流阈值发送至分节点,通过分节点接收该限流阈值后根据该限流阈值进行限流。

其中,当所述限流阈值小于预设参考值时通过限流令牌的方式进行限流时,可以使用类似漏桶匀速流出或令牌匀速入桶的方法,通过匀速流出满溢后做限制,或,通过发放令牌,匀速补充令牌,无令牌则限制。具体的,根据所述请求访问量计算各分布式节点的限流阈值,并发送至各分布式节点之后,可以通过各分布式节点中内置的插件进行控制,以使各分布式节点根据对应的阈值进行限流。具体的,当分节点接收到令牌后,会将令牌放置在令牌桶中,当分节点接收到请求时,需要从令牌桶中获取令牌,然后才允许该请求通过,若令牌桶中的令牌不足未获取到令牌则不允许通过,从而实现分节点的限流。

其中,本申请实施例中在比较限流阈值和预设参考值之前,还可以比较接收到的请求的数量和请求参考数值的大小,当接收到的请求的数量大于请求参考数值时,再比较限流阈值和预设参考值,若接收到的请求的数量小于请求参考数值时可以通过本地限流的方式进行限流。具体的,可以通过中心节点直接接收请求,然后再将接收到的请求转发至各分节点。

可见,通过本申请实施例的方法,可以通过比较限流阈值和预设参考值的大小,从而根据比较结果确定通过令牌限流或直接限流的方式进行限流,从而对分节点进行限流,实现分布式系统的限流。

在一种可能的实施方式中,参见图3,所述方法还包括:

步骤S31,所述中心节点获取所述分布系统的节点更新信息,其中,所述节点更新信息包括更新后的分节点的数量;

步骤S32,所述中心节点根据所述更新后的分节点的数量和请求访问量计算各所述分节点的限流阈值。

其中,本申请实施例中的分布式系统,可以通过中心节点接收分布式系统中分节点的更新信息,从而根据更新信息计算对应的限流阈值。一个例子中,参见图4,该分布式系统包括本地限流模块和控制中心,其中控制中心对应本申请中的中心节点,本地限流模块对应本申请中的分节点,控制中心可以包括注册中心、策略中心、限流中心和采集中心,本地限流模块可以包括数据采集和限流模块;具体的,注册中心:用于分租户管理分布式节点数的动态扩缩容,本地节点启动时注册,关闭时注销;策略中心:用于根据负载均衡策略、节点数、可用性/准确度优先级、采集模块采集的各节点的实际访问量和总访问量,计算相应的限流策略下发到本地限流模块更新本地限流策略;限流中心:用于当限流策略为中心化下发令牌时,会按流速下发令牌到本地限流模块;当限流策略为中心限流策略时,限流中心会接收本地限流模块转发过来的请求进行统一的限流和结果返回;采集中心:用于采集本地限流模块上报的节点访问量、令牌数、限流值数据;数据采集:用于与采集中心对应,实时统计节点的总访问量、QPS(Queries-per-second,每秒查询率)信息,将访问量、令牌数、限流值数据上报到控制中心;限流模块:用于当策略为本地限流时,根据令牌数和令牌桶限流算法进行本地限流;当限流策略为中心化限流时,将请求转发到控制中心进行限流;当限流策略为本地限流+中心化获取令牌时,会从中心化实时获取控制中心发送的令牌进行本地限流。可见,通过本申请实施例的方法,可以通过中心节点实时监控分布式节点的变化,支持分布式服务动态扩缩容环境下的本地限流策略更新,满足了分布式服务的弹性支持。通过本地限流和中心限流结合的方式,满足多节点低限流阈值等各类情况的限流准确性,该限流装置,不受访问量的增加的影响,完美避免了中心化计数服务随访问量增加需要大量资源消耗的问题。

在一种可能的实施方式中,在所述中心节点根据所述请求访问量计算各分节点的限流阈值之后,所述方法还包括:当所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

本申请实施例中的限流阈值可以通过节点的预设权重进行计算可以预先设定,具体的,该节点权重可以根据节点在网络中的影响力或重要程度进行设定。具体的,可以通过公式:V=N X节点权重/节点数的加权和,计算出单个节点的限流值,N为分节点权重,X为分布式系统的限流阈值,然后判断是否阈值低于1,参见图5,该情况又分为两种情况,一是单节点限流阈值低于1的情况,该情况下会有节点权重或上报的访问量计算出节点权限,根据权限将滑动窗口生成的令牌下发到本地限流模块进行限流,每毫秒根据公式:限额/1000补充令牌,再依据节点的权重选择下发的节点,将令牌下发到对应节点,例如,本地限流对应的节点1、节点2、节点3;二是单节点限流阈值高于1的情况,该情况会将限流值下发限额到本地模块,由本地模块执行令牌的滑动窗口补充和限流,同时阈值大于1,每毫秒根据公式:限额/1000补充令牌至本地限流对应的节点,并且通过负载均衡接收请求并发送至节点。可见,通过本申请实施例的方法,不但可以在高并发的情况下保持高可用,又可以保证流控的准确率。本申请实施例的方法可以通过数据采集,可快速适应节点权重和流量的变化,快速更新分布式的限流策略,高效适应了负载均衡策略随时动态调整的情况。

在一种可能的实施方式中,所述各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流,参见图6,包括:

步骤S131,通过各所述分节点接收所述限流阈值;

步骤S132,根据接收到的限流阈值、当前周期的剩余流量和预设时间窗口,计算下一相邻时间周期的限流阈值;

步骤S133,各所述分节点根据所述下一相邻时间周期的限流阈值,进行下一相邻时间周期的限流。

其中,通过本申请实施例的方法进行限流时,当各所述分节点接收所述限流阈值之后进行限流时,可以通过滑动窗口的方法进行限流。

具体的,本申请实施例中限流的核心是控制单位时间的访问量不超过某个阈值,如每秒最多N次,在这个单位时间如果访问次数超过N次,则超过N次的访问会被限制。但随着时间窗口的滑动,允许访问的次数会逐步恢复,时间窗口的一般可精确到毫秒级或更小的时间单位,根据计算机可识别的最小单位和实际的业务需求来定,通常会使用毫秒单位的时间窗口,随着时间窗口的推移会逐步每秒允许访问的次数,时间窗口允许补充的访问次数,通过限流的阈值来计算获得,假设1秒限制的访问次数是N,则每毫秒补充的允许访问次数是N/1000,当前允许的访问量会以毫秒的窗口进行更新,计算公式:V=N-R+N/1000,其中V为当前允许的请求数,N限流阈值,R为当前的实际请求数。

可见,通过本申请实施例的方法,可以根据接收到的限流阈值、当前周期的剩余流量和预设时间窗口,计算下一相邻时间周期的限流阈值,各所述分节点根据所述下一相邻时间周期的限流阈值,进行下一相邻时间周期的限流,从而实现通过滑动窗口的方法进行限流,提高限流的效果。

为了说明本申请实施例的方法,以下结合具体实施例进行说明,参见图7,包括:

当用户访问业务后台时,会请求进入限流处理流程,并将请求转发到本地限流模块,限流模块在业务后台启动时会判断是否进行初始化,若否则直接进行数据采集,若是则进行本地限流模块初始化然后进行初始化,本地限流模块初始化会服务启动时注册,将节点信息注册到控制中心中的注册中心,启动成功后不再重复初始化;

初始化完后请求会进行数据采集,数据采集模块会统计请求的总访问量、每秒访问量、分钟访问量等,根据限流策略,如分钟级或秒级限流等,会进行对应粒度的数据统计,定期异步将采集数据报采集中心,供策略中心做决策使用;

本地限流模块中数据采集结果后会进行是否开启限流的判断,若否则直接结束,若是则通过确认限流策略发送至控制中心,通过控制中心判断,若限流策略为本地限流策略则下发限流令牌和容量,然后下发本地限流模块进行本地限流,然后发送至本地限流模块的限流模块,若限流策略为中心限流策略,则直接通过限流中心进行限流。

在本发明实施的第二方面,还提供了一种分布式限流装置,所述装置应用于分布式系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,参见图8,所述装置包括:

访问量获取模块801,用于所述中心节点获取各分节点在预设时间周期内的请求访问量;

阈值发送模块802,用于所述中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;

节点限流模块803,用于各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流。

在一种可能的实施方式中,所述阈值发送模块,具体用于所述中心节点根据各所述分节点的预设节点权重和所述请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述阈值发送模块,具体用于当所述分节点的所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述分节点的所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

所述节点限流模块,具体用于各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

在一种可能的实施方式中,所述节点限流模块,具体用于通过各所述分节点接收所述限流阈值;根据接收到的限流阈值、当前周期的剩余流量和预设时间窗口,计算下一相邻时间周期的限流阈值;各所述分节点根据所述下一相邻时间周期的限流阈值,进行下一相邻时间周期的限流。

在一种可能的实施方式中,所述装置还包括:

访问限流模块,用于所述中心节点获取所述分布系统的节点更新信息,其中,所述节点更新信息包括更新后的分节点的数量;所述中心节点根据所述更新后的分节点的数量和请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述装置还包括:

令牌发送模块,用于当所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

令牌限流模块,用于各所述分节点接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

可见,通过本申请实施例的装置,可以通过各分节点在预设时间周期内的请求访问量计算得到各分布式节点的限流阈值并发送至各分布式节点,进而通过该限流阈值进行各分布式节点的限流。

在本发明实施的第三方面,还提供了一种分布式限流系统,所述分布式系统包括中心节点以及至少一个分节点,所述中心节点分别与每个所述分节点通讯连接,参见图9,所述系统包括:

所述中心节点901,用于获取各分节点在预设时间周期内的请求访问量;根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;

各所述分节点902,用于接收所述限流阈值;根据接收到的限流阈值进行限流。

在一种可能的实施方式中,所述中心节点,具体用于根据各所述分节点的预设节点权重和所述请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述中心节点,具体用于当所述分节点的所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述分节点的所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

各所述分节点,具体用于接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

在一种可能的实施方式中,各所述分节点,具体用于接收所述限流阈值;根据接收到的限流阈值、当前周期的剩余流量和预设时间窗口,计算下一相邻时间周期的限流阈值;各所述分节点根据所述下一相邻时间周期的限流阈值,进行下一相邻时间周期的限流。

在一种可能的实施方式中,所述中心节点,具体用于获取所述分布系统的节点更新信息,其中,所述节点更新信息包括更新后的分节点的数量;所述中心节点根据所述更新后的分节点的数量和请求访问量计算各所述分节点的限流阈值。

在一种可能的实施方式中,所述中心节点,具体用于当所述限流阈值小于预设参考值时,生成与所述限流阈值对应数量的限流令牌,并向所述分节点发送所述限流令牌;当所述限流阈值大于预设参考值时,向所述分节点发送所述限流阈值;

各所述分节点,具体用于接收所述限流令牌或所述限流阈值,并根据接收到的所述限流令牌或所述限流阈值进行限流。

可见,通过本申请实施例的系统,可以通过各分节点在预设时间周期内的请求访问量计算得到各分布式节点的限流阈值并发送至各分布式节点,进而通过该限流阈值进行各分布式节点的限流。

本发明实施例还提供了一种电子设备,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,

存储器1003,用于存放计算机程序;

处理器1001,用于执行存储器1003上所存放的程序时,实现如下步骤:

所述中心节点获取各分节点在预设时间周期内的请求访问量;

所述中心节点根据所述请求访问量计算各分节点的限流阈值,并将所述限流阈值发送至各所述分节点;

各所述分节点接收所述限流阈值,并根据接收到的限流阈值进行限流。

在一种可能的实施方式中,所述中心节点根据所述请求访问量计算各分节点的限流阈值,包括:

所述中心节点根据各所述分节点的预设节点权重和所述请求访问量计算各所述分节点的限流阈值。

上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的分布式限流方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的分布式限流方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、系统、电子设备、存储介质及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

相关技术
  • 一种文件分布式部署方法、装置、电子设备及存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种分布式系统部署方法、系统、电子设备及存储介质
  • 一种分布式文件存储方法、装置、处理器及存储介质
  • 一种漆面识别方法、装置、存储介质及电子设备
  • 分布式限流方法、装置、电子设备和存储介质
  • 微服务分布式限流方法及装置、存储介质和电子设备
技术分类

06120116231120