本申请涉及通信技术领域,尤其是一种流量控制方法、装置及设备。
背景技术:
在大规模分布式系统中,可以包括存储节点和多个应用节点。应用节点在接收到数据请求后,可以对数据请求进行处理,在数据请求的处理过程中,可以涉及数据读取和数据写入等操作。其中,为了实现数据读取,则应用节点可以向存储节点发送数据读取请求,存储节点可以将该数据读取请求对应的数据返回给应用节点。为了实现数据写入,则应用节点可以向存储节点发送数据写入请求,存储节点可以将该数据写入请求对应的数据存储到本存储节点。
为了保证每个应用节点都可以正常访问存储节点,则需要对每个应用节点进行限流,如配置限流阈值是100个每秒,使得每个应用节点每秒最多处理100个数据请求,即每秒最多向存储节点发送100个访问请求(如数据读取请求和数据写入请求),从而保证存储节点的处理性能,避免存储节点出现异常。
显然,若分布式系统包括应用节点1和应用节点2,则分布式系统每秒最多处理200个数据请求。但是,若应用节点1每秒接收到80个数据请求,应用节点2每秒接收到120个数据请求,则应用节点1每秒处理80个数据请求,应用节点2每秒处理100个数据请求,并丢弃20个数据请求,也就是说,分布式系统每秒处理180个数据请求,从而导致分布式系统的整体处理能力下降。
技术实现要素:
本申请提供一种流量控制方法,所述方法包括:
获取存储节点的应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
本申请提供一种流量控制方法,所述方法包括:
获取特定应用的应用阈值以及所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
本申请提供一种流量控制方法,所述方法包括:
获取特定应用的应用阈值和所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
根据所述应用状态信息确定特定应用对应的应用节点的流量控制阈值;
将所述流量控制阈值发送给所述特定应用对应的应用节点,以使所述应用节点根据所述流量控制阈值对数据请求进行流量控制。
本申请提供一种流量控制方法,所述方法包括:
获取应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
本申请提供一种流量控制装置,所述装置包括:
获取模块,用于获取存储节点的应用状态信息;
确定模块,用于根据所述应用状态信息确定应用节点的流量控制阈值;
控制模块,用于根据所述流量控制阈值对数据请求进行流量控制。
本申请提供一种流量控制装置,所述装置包括:
获取模块,用于获取特定应用的应用阈值以及所述特定应用的数据访问量;
确定模块,用于根据应用阈值和数据访问量确定特定应用的应用状态信息;
发送模块,用于将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
本申请提供一种应用节点,所述应用节点包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取存储节点的应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
本申请提供一种存储节点,所述存储节点包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取特定应用的应用阈值以及所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
基于上述技术方案,本申请实施例中,能够对分布式系统的应用节点进行流量控制,可以从分布式系统的维度对每个应用节点的访问流量进行限流,而不再从单个应用节点的维度对访问流量进行限流,从而将访问流量尽可能的均匀分布到每个应用节点,保证分布式系统的整体处理能力,合理利用分布式系统的处理资源,能够精准限流,完全发挥存储集群的能力。而且,应用节点能够根据存储节点的应用状态信息动态调整流量控制阈值,并根据流量控制阈值对数据请求进行限流处理,保证所有应用节点的总流量恒定在一个限制区间内。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的流量控制方法的流程图;
图2是本申请另一种实施方式中的流量控制方法的流程图;
图3是本申请另一种实施方式中的流量控制方法的流程图;
图4是本申请一种实施方式中的应用场景示意图;
图5是本申请一种实施方式中的流量控制方法的流程图;
图6是本申请一种实施方式中的应用节点的状态机的示意图;
图7a是本申请一种实施方式中的流量控制装置的结构图;
图7b是本申请一种实施方式中的应用节点的结构示意图;
图8a是本申请另一种实施方式中的流量控制装置的结构图;
图8b是本申请一种实施方式中的存储节点的结构示意图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种流量控制方法,该方法可以应用于应用节点,参见图1所示,为该流量控制方法的流程示意图,该方法可以包括:
步骤101,获取存储节点的应用状态信息。
具体的,应用节点可以接收存储节点发送的应用状态信息。其中,该应用状态信息可以是存储节点根据特定应用的应用阈值和数据访问量确定。
在一个例子中,本应用节点可以用于向用户提供该特定应用。
步骤102,根据该应用状态信息确定应用节点的流量控制阈值。
具体的,应用节点可以先确定本应用节点当前的流量控制阈值,并根据该应用状态信息对该流量控制阈值进行调整,得到调整后阈值;然后,应用节点可以将所述调整后阈值更新为本应用节点的流量控制阈值。
在一个例子中,应用节点确定本应用节点当前的流量控制阈值,可以包括但不限于:若当前周期并未采用流量控制阈值对数据请求进行流量控制,则应用节点可以根据数据访问量确定本应用节点当前的流量控制阈值;或者,若当前周期已采用流量控制阈值对数据请求进行流量控制,则应用节点可以将正在使用的流量控制阈值确定为本应用节点当前的流量控制阈值。
在一个例子中,根据该应用状态信息对该流量控制阈值进行调整,得到调整后阈值,可以包括但不限于:若该应用状态信息是用于表示存储节点当前流量较高的第一类型,则应用节点可以对该流量控制阈值进行降低处理,得到调整后阈值;或者,若该应用状态信息是用于表示存储节点当前流量较低的第二类型,则应用节点可以对该流量控制阈值进行增加处理,得到调整后阈值。
在一个例子中,若该应用状态信息是用于表示存储节点当前流量较合适的第三类型,则应用节点还可以将本应用节点当前的流量控制阈值保持不变。
步骤103,根据流量控制阈值对应用节点接收到的数据请求进行流量控制。
具体的,基于令牌桶算法,应用节点可以根据该流量控制阈值对本应用节点接收到的数据请求进行流量控制。具体的,应用节点可以先根据该流量控制阈值向令牌桶中放入令牌。基于此,应用节点在接收到数据请求后,可以确定该数据请求的消耗令牌数;然后,判断令牌桶中的剩余令牌数是否大于等于该消耗令牌数;如果是,则应用节点可以对该数据请求进行处理,并从令牌桶中删除该消耗令牌数个令牌;如果否,则可以拒绝对数据请求进行处理。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,能够对分布式系统的应用节点进行流量控制,可以从分布式系统的维度对每个应用节点的访问流量进行限流,而不再从单个应用节点的维度对访问流量进行限流,从而将访问流量尽可能的均匀分布到每个应用节点,保证分布式系统的整体处理能力,合理利用分布式系统的处理资源,能够精准限流,完全发挥存储集群的能力。而且,应用节点能够根据存储节点的应用状态信息动态调整流量控制阈值,并根据流量控制阈值对数据请求进行限流处理,保证所有应用节点的总流量恒定在一个限制区间内。
本申请实施例中提出一种流量控制方法,该方法可以应用于存储节点,参见图2所示,为该流量控制方法的流程示意图,该方法可以包括:
步骤201,获取特定应用的应用阈值以及特定应用的数据访问量。
在一个例子中,存储节点能够为多个类型的应用提供存储服务,不同的应用可以对应相同或不同的应用阈值;特定应用是多个类型的应用中的任一应用。
步骤202,根据该应用阈值和该数据访问量确定特定应用的应用状态信息。
具体的,若该数据访问量大于或等于该应用阈值,或者,该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值小于第一阈值,则可以确定该应用状态信息是用于表示存储节点当前流量较高的第一类型。
此外,若该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值大于第二阈值,则可以确定该应用状态信息是用于表示存储节点当前流量较低的第二类型;其中,该第一阈值可以小于该第二阈值。
此外,若该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值大于或等于该第一阈值、且该差值小于或等于该第二阈值,则可以确定该应用状态信息是用于表示存储节点当前流量较合适的第三类型。
步骤203,将该应用状态信息发送给该特定应用对应的应用节点,以使该应用节点根据该应用状态信息对本应用节点接收到的数据请求进行流量控制。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,能够对分布式系统的应用节点进行流量控制,可以从分布式系统的维度对每个应用节点的访问流量进行限流,而不再从单个应用节点的维度对访问流量进行限流,从而将访问流量尽可能的均匀分布到每个应用节点,保证分布式系统的整体处理能力,合理利用分布式系统的处理资源,能够精准限流,完全发挥存储集群的能力。而且,应用节点能够根据存储节点的应用状态信息动态调整流量控制阈值,并根据流量控制阈值对数据请求进行限流处理,保证所有应用节点的总流量恒定在一个限制区间内。
本申请实施例中提出一种流量控制方法,该方法可以应用于存储节点,参见图3所示,为该流量控制方法的流程示意图,该方法可以包括:
步骤301,获取特定应用的应用阈值和该特定应用的数据访问量。
步骤302,根据该应用阈值和该数据访问量确定特定应用的应用状态信息。
具体的,若该数据访问量大于或等于该应用阈值,或者,该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值小于第一阈值,则可以确定该应用状态信息是用于表示存储节点当前流量较高的第一类型。
此外,若该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值大于第二阈值,则可以确定该应用状态信息是用于表示存储节点当前流量较低的第二类型;其中,该第一阈值可以小于该第二阈值。
步骤303,根据该应用状态信息确定该特定应用对应的应用节点的流量控制阈值。与上述实施例不同的是,本实施例中,由存储节点根据该应用状态信息确定流量控制阈值,而不是由应用节点根据该应用状态信息确定流量控制阈值。
在一个例子中,若该应用状态信息是第一类型,则存储节点可以对该应用节点当前的流量控制阈值进行降低处理,从而得到调整后的流量控制阈值。或者,若该应用状态信息是第二类型,则存储节点可以对该应用节点当前的流量控制阈值进行增加处理,从而得到调整后的流量控制阈值。
步骤304,将该流量控制阈值发送给该特定应用对应的应用节点,以使该应用节点根据该流量控制阈值对本应用节点接收到的数据请求进行流量控制。
本申请实施例中提出一种流量控制方法,该方法可以应用于应用节点,该方法可以包括:获取应用状态信息;根据该应用状态信息确定应用节点的流量控制阈值;根据该流量控制阈值对本应用节点接收到的数据请求进行流量控制。
在一个例子中,分布式系统可以包括应用节点和存储节点,应用节点可以访问存储节点,若存储节点的访问流量很大,则导致存储节点的发生异常,因此,应用节点可以获取存储节点的应用状态信息,并根据存储节点的应用状态信息确定本应用节点的流量控制阈值,具体实现方式参见上述实施例。
在另一个例子中,分布式系统可以包括应用节点和处理节点(对此处理节点的类型不做限制,只要应用节点处理数据请求的过程中,需要访问处理节点即可),应用节点可以访问处理节点,若处理节点的访问流量很大,导致处理节点发生异常,因此,应用节点可以获取处理节点的应用状态信息,并根据处理节点的应用状态信息确定本应用节点的流量控制阈值,具体实现方式与上述实施例类似,只是存储节点变更为处理节点,对此不再赘述。
以下结合具体应用场景,对上述流量控制方法进行详细说明。参见图4所示,为本实施例的应用场景示意图,分布式系统可以包括多个应用节点(也可以称为应用服务器或应用实例)和多个存储节点(也可以称为存储服务器)。
其中,多个存储节点可以组合起来,共同提供存储服务,形成一个存储集群,即存储集群内可以包括多个存储节点。在一个例子中,为了对应用节点提供存储服务,应用节点可以向存储节点发送数据读取请求,存储节点可以将数据读取请求对应的数据返回给应用节点。应用节点可以向存储节点发送数据写入请求,存储节点可以将数据写入请求对应的数据存储到本存储节点。
其中,每个应用节点用于向用户提供特定应用,例如,参见图4所示,应用节点411和应用节点412用于向用户提供应用a,应用节点421和应用节点422用于向用户提供应用b。以用户访问应用a为例进行说明,则用户可以发送数据请求,这个数据请求被发送给应用节点411或者应用节点412。应用节点411或者应用节点412在接收到数据请求后,可以对数据请求进行处理,在数据请求的处理过程中,可以涉及数据读取和数据写入等操作。在数据读取的过程中,则可以向存储节点431或者存储节点432发送数据读取请求;在数据写入的过程中,则可以向存储节点431或者存储节点432发送数据写入请求。
为了保证每个应用节点都可以正常访问存储节点,则需要保证存储节点的处理性能,避免存储节点出现异常,因此,可以对每个应用节点进行限流,避免存储节点处理大量访问请求(如数据读取请求和数据写入请求)。由于每个存储节点的处理方式相同,因此,后续以一个存储节点431为例进行说明。
本实施例中,由于存储节点431能够为多个类型的应用(如应用a和应用b)提供存储服务,因此,可以涉及存储节点431的总流量阈值、每个应用的应用阈值,且不同应用可以对应相同或不同的应用阈值。例如,存储节点431的总流量阈值可以是500个每秒,则应用a的应用阈值是200个每秒,应用b的应用阈值是300个每秒,或者,应用a的应用阈值是250个每秒,应用b的应用阈值是250个每秒,当然,上述应用阈值只是示例,对此不做限制。
假设应用a的应用阈值是200个每秒,则可以对应用节点411和应用节点412进行限流,在传统方式中,可以配置应用节点411的限流阈值是100个每秒,并配置应用节点412的限流阈值是100个每秒,这样,可以保证应用节点411每秒最多向存储节点431发送100个访问请求,且应用节点412每秒最多向存储节点431发送100个访问请求,这样,存储节点431每秒最多接收到200个访问请求,但是,上述方式会导致分布式系统的整体处理能力下降。
例如,若应用节点411每秒接收到80个数据请求,应用节点412每秒接收到120个数据请求,则应用节点411每秒处理80个数据请求,应用节点412每秒处理100个数据请求,并丢弃20个数据请求,也就是说,存储节点431每秒只接收到180个访问请求,从而导致分布式系统的整体处理能力下降。
与传统方式不同的是,本申请实施例中,只要保证存储节点431每秒最多接收到200个访问请求即可,不再单独为每个应用节点配置限流阈值,从而提高分布式系统的整体处理能力。例如,若应用节点411每秒接收到80个数据请求,应用节点412每秒接收到120个数据请求,则应用节点411每秒处理80个数据请求,应用节点412每秒处理120个数据请求,也就是说,存储节点431每秒可以接收到200个访问请求,从而提高分布式系统的整体处理能力。
需要注意的是,上述应用阈值(200个每秒)是存储节点431对应用a的限制,即,上述数据请求是针对存储节点431的数据请求,且上述访问请求也是发送给存储节点431的访问请求。在实际应用中,存储节点432也可以对应用a配置应用阈值(如300个每秒),这个应用阈值与存储节点431的应用阈值无关,这样,应用节点411和应用节点412每秒最多向存储节点432发送300个访问请求,这个访问请求也与向存储节点431发送的访问请求无关。
在上述实施例中,数据请求是用户向应用节点411或者应用节点412发送的。应用节点411或者应用节点412在处理数据请求的过程中,可以向存储节点431或者存储节点432发送访问请求,如数据读取请求或者数据写入请求。
为了方便描述,以存储节点431对应用a配置应用阈值(如200个每秒)为例,在上述应用场景下,参见图5所示,为流量控制方法的流程图。
步骤501,存储节点431获取应用a的应用阈值和数据访问量。
其中,存储节点431可以预先存储应用a的应用阈值,如200个每秒,因此,存储节点431可以从本地获取到应用a的应用阈值,对此不做限制。
其中,在每个统计周期(如1秒、2秒等),存储节点431可以获取应用节点411向存储节点431发送的访问请求数量a,获取应用节点412向存储节点431发送的访问请求数量b,并可以根据访问请求数量a、访问请求数量b、统计周期的时长,确定应用a在当前统计周期的数据访问量。例如,在当前统计周期,访问请求数量a为80,访问请求数量b为110,统计周期的时长为1秒,则应用a在当前统计周期的数据访问量为(80 110)/1,即每秒190个。
步骤502,存储节点431根据该应用阈值和该数据访问量确定应用a的应用状态信息。其中,该应用状态信息可以包括但不限于:用于表示存储节点当前流量较高的第一类型(如up类型,用于表示当前流量较高,可以进行限流处理)、用于表示存储节点当前流量较低的第二类型(如down类型,用于表示当前流量较低,可以放开限流处理)、用于表示存储节点当前流量较合适的第三类型(如keep类型,用于表示当前流量合适,可以维持当前的限流措施)。
当然,上述第一类型、第二类型和第三类型只是应用状态信息的几个示例,对此应用状态信息不做限制。例如,应用状态信息可以包括第一类型和第二类型;或者,在第一类型、第二类型和第三类型的基础上,还可以包括第四类型。
在一个例子中,存储节点431根据该应用阈值和该数据访问量确定应用a的应用状态信息,可以包括但不限于:若该数据访问量大于或等于该应用阈值,或者,该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值小于第一阈值,则存储节点431确定该应用状态信息是第一类型。若该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值大于第二阈值,则存储节点431确定该应用状态信息是第二类型。若该数据访问量小于该应用阈值,且该应用阈值与该数据访问量的差值大于或等于该第一阈值、且该差值小于或等于该第二阈值,则存储节点431确定该应用状态信息是第三类型。
其中,第一阈值和第二阈值可以根据经验进行配置,且第一阈值可以小于第二阈值,对此不做限制。例如,第一阈值可以为10,第二阈值可以为50。
在一个例子中,应用a的数据访问量可能超过应用a的应用阈值,在后续过程中,可以对应用节点411和应用节点412进行限流处理,以使应用a的数据访问量不再超过应用a的应用阈值,从而保证存储节点431的处理性能。
综上所述,若应用a的数据访问量大于或等于应用a的应用阈值,则说明应用a的数据访问量较大,需要对应用节点411和应用节点412进行限流处理,因此,可以确定应用状态信息是第一类型,表示需要进行限流处理。
若应用a的数据访问量小于应用a的应用阈值,应用a的应用阈值与应用a的数据访问量的差值小于第一阈值(如10),则说明应用a的数据访问量较大,比较接近应用a的应用阈值,需要对应用节点411和应用节点412进行限流处理,因此,确定应用状态信息是第一类型,表示需要进行限流处理。
若应用a的数据访问量小于应用a的应用阈值,应用a的应用阈值与应用a的数据访问量的差值大于第二阈值(如50),则说明应用a的数据访问量较小,比较远离应用a的应用阈值,可以放开对应用节点411和应用节点412的限流,因此,确定应用状态信息是第二类型,表示可以放开限流处理。
若应用a的数据访问量小于应用a的应用阈值,应用a的应用阈值与应用a的数据访问量的差值大于或等于第一阈值(如10)、且该差值小于或等于第二阈值(如50),则说明应用a的数据访问量较合适,可以维持应用节点411和应用节点412的限流措施,因此,确定应用状态信息是第三类型。
步骤503,存储节点431将该应用状态信息发送给应用a对应的应用节点,也就是说,将该应用状态信息发送给应用节点411和应用节点412。
步骤504,应用节点411和应用节点412均接收该应用状态信息。
其中,应用节点411和应用节点412的处理流程相同,后续实施例中,以应用节点411接收该应用状态信息,并根据该应用状态信息进行处理为例。
例如,在每个统计周期,存储节点431均可以获取应用a的应用状态信息,并将当前统计周期的应用状态信息发送给应用节点411。在每个统计周期,应用节点411均可以接收到应用状态信息,并根据该应用状态信息进行后续处理。
步骤505,应用节点411根据该应用状态信息确定流量控制阈值。
具体的,应用节点411可以根据该应用状态信息对当前的流量控制阈值进行调整,得到调整后阈值,并将调整后阈值更新为流量控制阈值。
初始状态下,应用节点411可以不进行限速处理,即当前周期并未采用流量控制阈值对数据请求进行流量控制,基于此,可以根据数据访问量确定当前的流量控制阈值a。例如,应用节点411可以统计当前周期的数据请求数量,根据数据请求数量和当前周期的时长,确定当前的流量控制阈值a。如数据请求数量为80,时长为1秒,则当前的流量控制阈值a为80/1,即每秒80个。
进一步的,应用节点411可以根据应用状态信息对流量控制阈值a进行调整,得到调整后阈值(如流量控制阈值b),这样,可以将流量控制阈值b更新为应用节点411当前的流量控制阈值,并利用流量控制阈值b进行后续处理。
在下一个周期,由于当前周期已采用流量控制阈值b对数据请求进行流量控制,因此,应用节点411可以将正在使用的流量控制阈值b确定为当前的流量控制阈值。应用节点411根据应用状态信息对流量控制阈值b进行调整,得到调整后阈值(如流量控制阈值c),这样,可以将流量控制阈值c更新为应用节点411当前的流量控制阈值,并利用流量控制阈值c进行后续处理。
在下一个周期,由于当前周期已采用流量控制阈值c对数据请求进行流量控制,因此,应用节点411可以将正在使用的流量控制阈值c确定为当前的流量控制阈值,并根据应用状态信息对流量控制阈值c进行调整,得到调整后阈值(如流量控制阈值d),这样,可以将流量控制阈值d更新为应用节点411当前的流量控制阈值,并利用流量控制阈值d进行后续处理,以此类推。
在上述实施例中,应用节点411根据该应用状态信息对当前的流量控制阈值进行调整,得到调整后阈值,可以包括但不限于:若应用状态信息是第一类型,则对该流量控制阈值进行降低处理,得到调整后阈值;例如,调整后阈值可以为该流量控制阈值*0.7,当然,这只是一个调整示例,对此不做限制。若应用状态信息是第二类型,则对该流量控制阈值进行增加处理,得到调整后阈值;例如,调整后阈值可以为该流量控制阈值*1.5,当然,这只是一个调整示例,对此不做限制。若应用状态信息是第三类型,则保持该流量控制阈值不变。
以下结合图6所示的状态机,对上述过程进行说明。其中,状态机的初始状态可以是normal(正常)状态,在normal状态下,应用节点411可以不进行限速处理,即应用节点411可以处理本应用节点接收到的所有数据请求。
在normal状态下,若应用节点411接收到的应用状态信息是第二类型或者第三类型,则应用节点411可以保持normal状态,应用节点411仍然不进行限速处理。或者,在normal状态下,若应用节点411接收到的应用状态信息是第一类型,则应用节点411可以将normal状态转换为statis(统计)状态。
在statis状态下,应用节点411可以统计当前周期的数据请求数量,并根据当前周期的数据请求数量和当前周期的时长,确定当前的流量控制阈值a。
在下一个周期,若应用节点411接收到的应用状态信息是第二类型或者第三类型,则可以将statis状态转换为normal状态,应用节点411仍然不进行限速处理,并重新执行normal状态下的操作。在下一个周期,若应用节点411接收到的应用状态信息是第一类型,则可以对流量控制阈值a进行降低处理,得到调整后阈值,如调整后阈值可以为流量控制阈值a*0.7,并将调整后阈值更新为应用节点411的流量控制阈值b,并将statis状态转换为limit(限制)状态。
在limit状态下,应用节点411可以使用流量控制阈值b对应用节点411进行限速,即使用流量控制阈值b对应用节点411接收到的数据请求进行限速。
在limit状态下,若应用节点411接收到的应用状态信息是第一类型、第二类型或者第三类型,则可以保持limit状态,并对流量控制阈值b进行调整,得到调整后阈值,并将调整后阈值更新为应用节点411的流量控制阈值c,并使用流量控制阈值c对应用节点411进行限速,以此类推,后续处理不再赘述。
其中,若应用节点411接收到的应用状态信息是第一类型,则应用节点411可以对流量控制阈值b进行降低处理,得到流量控制阈值c,例如,流量控制阈值c可以为流量控制阈值b*0.7。若应用节点411接收到的应用状态信息是第二类型,则应用节点411可以对流量控制阈值b进行增加处理,得到流量控制阈值c,例如,流量控制阈值c可以为流量控制阈值b*1.5。若应用节点411接收到的应用状态信息是第三类型,则应用节点411可以保持流量控制阈值b不变,得到流量控制阈值c,例如,流量控制阈值c可以为流量控制阈值b。
在一个例子中,在limit状态下,若最终得到的流量控制阈值大于流量控制阈值a,则应用节点411可以将limit状态转换为normal状态,在normal状态下,应用节点411可以不进行限速处理,并重新执行normal状态下的操作。
步骤506,应用节点411根据该流量控制阈值对本应用节点411接收到的数据请求进行流量控制。例如,基于令牌桶算法,应用节点411可以根据该流量控制阈值对本应用节点411接收到的数据请求进行流量控制。
具体的,应用节点411可以根据该流量控制阈值向令牌桶中放入令牌(例如,根据该流量控制阈值匀速将令牌放入令牌桶中)。进一步的,应用节点411在接收到数据请求后,可以确定该数据请求的消耗令牌数(如数据请求消耗的资源较多时,消耗令牌数较大,数据请求消耗的资源较少时,消耗令牌数较小,对此不做限制)。然后,应用节点411可以判断令牌桶中的剩余令牌数是否大于或者等于该消耗令牌数;如果是,则应用节点411可以对该数据请求进行处理(在数据请求的处理过程中,可以向存储节点431发送访问请求),并从令牌桶中删除该消耗令牌数个令牌;如果否,则可以拒绝对数据请求进行处理。
基于上述技术方案,本申请实施例中,能够对分布式系统的应用节点进行流量控制,可以从分布式系统的维度对每个应用节点的访问流量进行限流,而不再从单个应用节点的维度对访问流量进行限流,从而将访问流量尽可能的均匀分布到每个应用节点,保证分布式系统的整体处理能力,合理利用分布式系统的处理资源,能够精准限流,完全发挥存储集群的能力。而且,应用节点能够根据存储节点的应用状态信息动态调整流量控制阈值,并根据流量控制阈值对数据请求进行限流处理,保证所有应用节点的总流量恒定在一个限制区间内。
基于与上述方法同样的申请构思,本申请实施例还提供一种流量控制装置,如图7a所示,为所述装置的结构图,所述装置可以包括:
获取模块71,用于获取存储节点的应用状态信息;
确定模块72,用于根据所述应用状态信息确定应用节点的流量控制阈值;
控制模块73,用于根据所述流量控制阈值对数据请求进行流量控制。
所述确定模块72根据所述应用状态信息确定应用节点的流量控制阈值时具体用于:确定所述应用节点当前的流量控制阈值;
根据所述应用状态信息对该流量控制阈值进行调整,得到调整后阈值;
将所述调整后阈值更新为所述应用节点的流量控制阈值。
所述确定模块72根据所述应用状态信息对该流量控制阈值进行调整,得到调整后阈值时具体用于:若所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型,则对该流量控制阈值进行降低处理,得到调整后阈值;或者,若所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型,则对该流量控制阈值进行增加处理,得到调整后阈值。
基于与上述方法同样的构思,本实施例还提供一种应用节点,所述应用节点可以包括:处理器和机器可读存储介质;所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取存储节点的应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
本实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
获取存储节点的应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
参见图7b所示,为本申请实施例中提出的应用节点的结构图,所述计算节点70可以包括:处理器701,网络接口702,总线703,存储器704。存储器704可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器704可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。
基于与上述方法同样的申请构思,本申请实施例还提供一种流量控制装置,如图8a所示,为所述装置的结构图,所述装置可以包括:
获取模块81,用于获取特定应用的应用阈值和所述特定应用的数据访问量;
确定模块82,用于根据应用阈值和数据访问量确定特定应用的应用状态信息;发送模块83,用于将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
所述确定模块72根据应用阈值和数据访问量确定特定应用的应用状态信息时具体用于:若所述数据访问量大于或等于所述应用阈值,或者,所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值小于第一阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型;若所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值大于第二阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型;其中,所述第一阈值小于所述第二阈值。
基于与上述方法同样的构思,本实施例还提供一种存储节点,所述存储节点可以包括:处理器和机器可读存储介质;所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取特定应用的应用阈值以及所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
本实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
获取特定应用的应用阈值以及所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
参见图8b所示,为本申请实施例中提出的存储节点的结构图,所述存储节点80可以包括:处理器801,网络接口802,总线803,存储器804。存储器804可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器804可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
1.一种流量控制方法,其特征在于,所述方法包括:
获取存储节点的应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
2.根据权利要求1所述的方法,其特征在于,
所述获取存储节点的应用状态信息,包括:
接收所述存储节点发送的应用状态信息;
其中,所述应用状态信息是所述存储节点根据特定应用的应用阈值和数据访问量确定;所述应用节点用于向用户提供所述特定应用。
3.根据权利要求1所述的方法,其特征在于,
所述根据所述应用状态信息确定应用节点的流量控制阈值,包括:
确定所述应用节点当前的流量控制阈值;
根据所述应用状态信息对该流量控制阈值进行调整,得到调整后阈值;
将所述调整后阈值更新为所述应用节点的流量控制阈值。
4.根据权利要求3所述的方法,其特征在于,
所述确定所述应用节点当前的流量控制阈值,包括:
若当前周期并未采用流量控制阈值对数据请求进行流量控制,则根据数据访问量确定所述应用节点当前的流量控制阈值;或者,
若当前周期已采用流量控制阈值对数据请求进行流量控制,则将正在使用的流量控制阈值确定为所述应用节点当前的流量控制阈值。
5.根据权利要求3所述的方法,其特征在于,所述根据所述应用状态信息对该流量控制阈值进行调整,得到调整后阈值,具体包括:
若所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型,则对该流量控制阈值进行降低处理,得到调整后阈值;或者,
若所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型,则对该流量控制阈值进行增加处理,得到调整后阈值。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述应用状态信息是用于表示所述存储节点当前流量较合适的第三类型,则将所述应用节点当前的流量控制阈值保持不变。
7.根据权利要求1所述的方法,其特征在于,所述根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制,具体包括:
根据所述流量控制阈值向令牌桶中放入令牌;
在接收到数据请求后,确定所述数据请求的消耗令牌数;
判断所述令牌桶中的剩余令牌数是否大于等于所述消耗令牌数;
如果是,则对所述数据请求进行处理,并从所述令牌桶中删除所述消耗令牌数个令牌;如果否,则拒绝对所述数据请求进行处理。
8.一种流量控制方法,其特征在于,所述方法包括:
获取特定应用的应用阈值以及所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
9.根据权利要求8所述的方法,其特征在于,
存储节点能够为多个类型的应用提供存储服务,不同的应用对应相同或不同的应用阈值;所述特定应用是所述多个类型的应用中的任一应用。
10.根据权利要求8所述的方法,其特征在于,所述根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息,具体包括:
若所述数据访问量大于或等于所述应用阈值,或者,所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值小于第一阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型;
若所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值大于第二阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型;其中,所述第一阈值小于所述第二阈值。
11.根据权利要求8所述的方法,其特征在于,所述根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息,具体包括:
若所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值大于或等于第一阈值、所述差值小于或等于第二阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较合适的第三类型。
12.一种流量控制方法,其特征在于,所述方法包括:
获取特定应用的应用阈值和所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
根据所述应用状态信息确定特定应用对应的应用节点的流量控制阈值;
将所述流量控制阈值发送给所述特定应用对应的应用节点,以使所述应用节点根据所述流量控制阈值对数据请求进行流量控制。
13.根据权利要求12所述的方法,其特征在于,所述根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息,具体包括:
若所述数据访问量大于或等于所述应用阈值,或者,所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值小于第一阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型;
若所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值大于第二阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型;其中,所述第一阈值小于所述第二阈值。
14.根据权利要求13所述的方法,其特征在于,所述根据所述应用状态信息确定特定应用对应的应用节点的流量控制阈值,具体包括:
若所述应用状态信息是所述第一类型,则对所述应用节点当前的流量控制阈值进行降低处理,得到调整后的流量控制阈值;或者,
若所述应用状态信息是所述第二类型,则对所述应用节点当前的流量控制阈值进行增加处理,得到调整后的流量控制阈值。
15.一种流量控制方法,其特征在于,所述方法包括:
获取应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
16.一种流量控制装置,其特征在于,所述装置包括:
获取模块,用于获取存储节点的应用状态信息;
确定模块,用于根据所述应用状态信息确定应用节点的流量控制阈值;
控制模块,用于根据所述流量控制阈值对数据请求进行流量控制。
17.根据权利要求16所述的装置,其特征在于,所述确定模块根据所述应用状态信息确定应用节点的流量控制阈值时具体用于:
确定所述应用节点当前的流量控制阈值;
根据所述应用状态信息对该流量控制阈值进行调整,得到调整后阈值;
将所述调整后阈值更新为所述应用节点的流量控制阈值。
18.根据权利要求17所述的装置,其特征在于,所述确定模块根据所述应用状态信息对该流量控制阈值进行调整,得到调整后阈值时具体用于:
若所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型,则对该流量控制阈值进行降低处理,得到调整后阈值;或者,
若所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型,则对该流量控制阈值进行增加处理,得到调整后阈值。
19.一种流量控制装置,其特征在于,所述装置包括:
获取模块,用于获取特定应用的应用阈值以及所述特定应用的数据访问量;
确定模块,用于根据应用阈值和数据访问量确定特定应用的应用状态信息;
发送模块,用于将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
20.根据权利要求19所述的装置,其特征在于,所述确定模块根据应用阈值和数据访问量确定特定应用的应用状态信息时具体用于:
若所述数据访问量大于或等于所述应用阈值,或者,所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值小于第一阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较高的第一类型;
若所述数据访问量小于所述应用阈值,且所述应用阈值与所述数据访问量的差值大于第二阈值,则确定所述应用状态信息是用于表示所述存储节点当前流量较低的第二类型;其中,所述第一阈值小于所述第二阈值。
21.一种应用节点,其特征在于,所述应用节点包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取存储节点的应用状态信息;
根据所述应用状态信息确定应用节点的流量控制阈值;
根据所述流量控制阈值对所述应用节点接收到的数据请求进行流量控制。
22.一种存储节点,其特征在于,所述存储节点包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取特定应用的应用阈值以及所述特定应用的数据访问量;
根据所述应用阈值和所述数据访问量确定所述特定应用的应用状态信息;
将所述应用状态信息发送给所述特定应用对应的应用节点,以使所述应用节点根据所述应用状态信息对数据请求进行流量控制。
技术总结