流量控制方法、装置、设备及介质与流程

文档序号:23347124发布日期:2020-12-18 16:48阅读:147来源:国知局
流量控制方法、装置、设备及介质与流程

本发明属于互联网技术领域,尤其涉及一种流量控制方法、装置、设备及介质。



背景技术:

随着移动互联网业务的发展,分布式系统的流量控制成为一个事关系统可用性的关键课题。

目前,为防止瞬时高并发场景超过分布式系统的承载能力,一般通过令牌桶算法进行流量峰值削峰,以保障分布式系统的稳定运营。但是,如果分布式系统的集群规模较大,令牌桶的管理和发放会成为性能瓶颈,在对大规模分布式集群进行流量控制时,无法对分布式系统进行整体性的流量控制。



技术实现要素:

本发明实施例提供一种流量控制方法、装置、设备及介质,能够对分布式系统进行整体性的流量控制。

第一方面,本发明实施例提供了一种流量控制方法,应用于目标应用节点,包括:

接收第一应用节点发送的第一查询请求;

响应于第一查询请求,获取与第一应用节点相关联的第二应用节点的历史流量数据;其中,第二应用节点为与第一应用节点所属的节点组相同的应用节点;

根据历史流量数据,从第二应用节点中选取第一可拆借节点;

向第一应用节点发送第一可拆借节点对应的第一节点标识;其中,第一节点标识用于第一应用节点向第一可拆借节点发送第一拆借请求,第一拆借请求用于使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度。

第二方面,本发明实施例提供了一种流量控制方法,应用于应用节点,包括:

向目标应用节点发送第一查询请求;其中,第一查询请求用于使目标应用节点反馈第二应用节点中的第一可拆借节点对应的第一节点标识,第二应用节点为与目标应用节点所属的节点组相同的应用节点;

接收目标应用节点反馈的第一节点标识;

根据第一节点标识,向第一可拆借节点发送第一拆借请求;其中,第一拆借请求用于使第一可拆借节点反馈第一可拆借令牌额度;

接收第一可拆借节点反馈的第一可拆借令牌额度。

第三方面,本发明实施例提供了一种流量控制装置,应用于目标应用节点,包括:

第一接收模块,用于接收第一应用节点发送的第一查询请求;

第一获取模块,用于响应于第一查询请求,获取与第一应用节点相关联的第二应用节点的历史流量数据;其中,第二应用节点为与第一应用节点所属的节点组相同的应用节点;

第一选取模块,用于根据历史流量数据,从第二应用节点中选取第一可拆借节点;

第一发送模块,用于向第一应用节点发送第一可拆借节点对应的第一节点标识;其中,第一节点标识用于第一应用节点向第一可拆借节点发送第一拆借请求,第一拆借请求用于使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度。

第四方面,本发明实施例提供了一种流量控制装置,应用于应用节点,包括:

第二发送模块,用于向目标应用节点发送第一查询请求;其中,第一查询请求用于使目标应用节点反馈第二应用节点中的第一可拆借节点对应的第一节点标识,第二应用节点为与目标应用节点所属的节点组相同的应用节点;

第二接收模块,用于接收目标应用节点反馈的第一节点标识;

第三发送模块,用于根据第一节点标识,向第一可拆借节点发送第一拆借请求;其中,第一拆借请求用于使第一可拆借节点反馈第一可拆借令牌额度;

第三接收模块,用于接收第一可拆借节点反馈的第一可拆借令牌额度。

第五方面,本发明实施例提供了一种流量控制设备,该设备包括:处理器以及存储有计算机程序指令的存储器;

处理器执行计算机程序指令时实现如第一方面或第二方面所述的流量控制方法。

第六方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面或第二方面所述的流量控制方法。

本发明实施例的流量控制方法、装置、设备及介质,能够在接收到第一应用节点发送的第一查询请求之后,响应于第一查询请求,获取与第一应用节点所属的节点组相同的第二应用节点的历史流量数据,并且根据历史流量数据,从第二应用节点中选取第一可拆借节点,进而向第一应用节点发送第一可拆借节点对应的第一节点标识,以使第一应用节点根据第一节点标识向第一可拆借节点发送第一拆借请求,并使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度,由此,可以实现同一个节点组内的多个应用节点之间的令牌额度的相互拆借,以对分布式系统进行整体性的流量控制。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是相关技术中的一种主流集群的流量控制的结构示意图;

图2是本发明一个实施例提供的一种流量控制的架构示意图;

图3是本发明一个实施例提供的一种流量控制的应用场景示意图;

图4是本发明一个实施例提供的流量控制方法的流程图;

图5是本发明一个实施例提供的一种流量控制的场景图;

图6是本发明另一个实施例提供的流量控制方法的流程示意图;

图7是本发明一个实施例提供的流量控制装置的结构示意图;

图8是本发明另一个实施例提供的流量控制装置的结构示意图;

图9是本发明实施例提供的流量控制设备的硬件结构示意图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

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

目前,在分布式系统的流量控制的通用方案层面,一般是通过漏桶算法进行流量整形,通过令牌桶算法进行流量峰值削峰,通过冷启动(warmup)方式确保应用程序启动时的流量预热等等。

这里,在主流应用程序的流量控制组件为开源限流组件sentinal时,sentinal组件的单机模式就可以应用上述涉及的漏洞算法和令牌桶算法,以及与算法对应的方案,这样,在一定程度上改善了单机应用程序的流控问题。其中,与sentinal组件对应的流量控制方案,主要使用了令牌桶算法,即通过划定一个特定的令牌服务器如tokenserver,管辖若干令牌客户端如tokenclient,以及对令牌桶进行管理和发放,从而达到集群流控的作用。为了方便理解目前主流集群的流量控制方案,可以通过下述一个例子进行说明。

如图1所示,目前主流集群的流量控制方案涉及的组内流量控制机制的功能有两个方面。一方面是令牌桶(即为多个令牌组成的令牌桶)的申请和管理,另一方面是流量监控数据的采集、汇总和呈现。

其中,组内流量控制机制可以包括一个节点组,该节点组包括节点1、节点2和节点3。这里,将节点1设定为该节点组的组节点,将节点1、节点2和节点3设定为该节点组的基础应用节点。若时间段t(例如:1秒)是一个观测窗口,一般会把t切分为若干个控制窗口(例如:5个200毫秒)。业务上的流量控制指标p(例如:10000tps)会分到5个控制窗口中(例如,每个控制窗口的总额度记为2000个令牌transaction)。

基于此,在这样的流量控制机制下,可以通过如下方式分配令牌。即在每一个控制窗口的起始时间,基础应用节点需要向组节点发起令牌批量申请。若申请到的令牌总和例如300个,则每个基础应用节点申请100个。这里,申请的100个令牌的数量要远远小于该控制窗口的总额度2000。

接着,如果基础应用节点在该控制窗口内将令牌100个消耗完(如利用令牌处理对应的请求),就需要再次向组节点发起令牌批量申请,组节点根据该控制窗口内该基础应用节点的总额度2000是否有剩余,来决定是否满足基础应用节点的令牌批量申请。如果因该基础应用节点的总额度用完而拒绝申请,则该基础应用节点在该控制窗口的流量消耗已到上限,进入流控逻辑。

由此可知,在目前主流集群的流量控制方案中,在每个控制窗口内,每个基础应用节点都要向组节点发送至少一次的令牌批量申请,如果令牌消耗速度较快,就需要做多次令牌批量申请。这样,会增加组节点在集群的流量控制中的通信负载和计算负载,而且在流量不饱和状态下也增加了基础应用节点的通信负载和计算负载。

另外,上述涉及的流量控制方案在一些场景下也并不适用,例如在设备集群(即包括客户端和服务器组成的集群,也可以是客户端组成的集群)较大时,如果采用一个tokenserver管辖所有的tokenclient,tokenserver对令牌桶的管理和发放会成为性能瓶颈,tokenserver难以横向扩展。如果对tokenserver和tokenclient进行分组,一般是采用多个tokenserver按组对组内的tokenclient中的令牌桶进行管理和发放,组的划分将会难以取舍。如划分的组太小,组的数量就会多,组与组之间同样变成了单机流控,缺少了对集群流量整体性的控制。

综上,目前的流量控制方式无法对分布式系统进行有效的整体性的流量控制。

基于此,下面结合附图2-图5,通过具体的实施例及其应用场景对本发明实施例提供的流量控制进行详细地说明。

首先,结合图2对流量控制的架构进行说明。具体如图2所示,应用程序集群包括9个节点,每个节点可表示一个应用程序,按照拓扑规则将9个节点进行分组。其中,拓扑规则可以包括下述中的至少一条:

(1)拓扑的层高不高于m,其中,m为可调参数,可调参数可以根据实际的应用场景设定;如图2所示,m为3。

(2)拓扑的每个组内节点数不高于n,n为可调参数,可调参数可以根据实际的应用场景设定;如图2所示,n为3。

(3)拓扑中的基础节点(如节点1至节点9)可以是实际中的应用程序节点,组节点是从基础节点中选出来的节点,全局组节点是从组节点中选出来的节点。

其中,如图2所示,组节点(如节点1、节点4和节点9)是从基础节点中选出来的节点,组节点(如节点1、节点4和节点9)的组节点即全局组节点(如节点1)是从组节点(如节点1、节点4和节点9)中选出来的节点。

(4)整体分组拓扑根据拓扑规则形成初始拓扑,在运行过程中,如果组节点不能正常工作即宕机,可以根据分布式一致性协议动态选举新的组节点,旧的组节点在恢复后以基础应用节点的身份重新加入组。如果某个基础应用节点宕机,则从组内临时移除,直到其恢复再加入该组。

需要说明的是,本发明实施例中拓扑结构(或者初始拓扑结构)的产生和管理,可以是根据上述的拓扑规则确定,也可以是根据每个节点的历史流量,自动化、智能化的产生的结构。例如,拓扑结构可以根据实际运行中节点的流量变化确定拓扑结构或者进行结构的形变。

基于上述架构,结合图3对本发明实施例提供的流量控制的应用场景进行说明。

如图3所示,入口流量通过超文本传输安全协议(hypertexttransferprotocoloversecuresocketlayer,https)传输到f5服务器,f5服务器进行ssl洗衣和/或tls协议卸载,转化为超文本传送协议(hypertexttransferprotocol,http)并传输至两台nginx服务器,两台nginx服务器反向代理到九台应用程序(application,app)节点(如app1至app9),下文简称应用节点。其中,九台应用节点对访问流量进行集群流量控制。

其中,九台应用节点以jar包或so组件的方式将本发明实施例提供的基于拆借的自适应式集群的流量控制装置集成到应用进程中,将拓扑参数、流量参数、窗口参数、权重参数等配置参数加载到应用进程中。九台应用节点按图2所示的方式构建初始拓扑结构。其中,该初始拓扑结构可以根据拓扑规则产生。该场景下的拓扑规则包括下述中的至少一种:

(1)应用节点与应用节点间通信可采用传输控制协议(transmissioncontrolprotocol,tcp),也可采用用户数据报协议(userdatagramprotocol,udp)。

其中,在采用udp的情况下,要有消息可靠性确认和重传机制。在运行过程中,如果组节点宕机,根据分布式一致性协议动态选举新的组节点,具体可采用paxos协议或raft协议。旧的组节点在恢复后以基础应用节点的身份重新加入组。如果某个基础应用节点宕机,则从组内临时移除,直到其恢复再加入组。

(2)当某个组节点宕机后,新的组节点尚未选举出来之前,该组的运行方式从集群流控降级为单机流控模式。此时,全局组节点(如图2中的节点1)收不到该组节点的流量数据上报,则按该组的满额流量计算整体流量,并将该组从组间拆借列表中移除。以上措施直至该组节点恢复结束。

其中,上述涉及的流量数据可以包括下述中的至少一种数据:总入口请求数、通过请求数、拒绝请求数,以便全局组节点(或者组节点)根据流量数据,确定每个基础应用节点的运行情况,以及在通常情况下消耗令牌的数量。

(3)当某个基础应用节点宕机后,该基础应用节点所在的组收不到该组节点的流量数据上报,则按该基础应用节点的满额流量计算整体流量,并将该基础应用节点从组内拆借列表移除。以上措施直至该基础应用节点恢复结束。其中,上述涉及的满额流量可以理解为该节点可以处理的最大流量。

这里,之所以对组节点宕机以及基础应用节点宕机按满额流量处理,是因为宕机与否的判断并不准确和充分,网络异常也完全可能引发宕机的判断,根据集群流控的悲观控制策略,控住比控不住好,所以按满额流量处理。

基于上述涉及的流量控制架构和应用场景,结合图4和图5(即基于图2中所示的3个组中的一个节点组即节点1、节点2和节点3为例)对本发明实施例提供的流量控制方法进行说明。

首先,图4是本发明一个实施例提供的流量控制方法的流程图。

如图4所示,本发明实施例提供了一种流量控制方法,该流量控制方法应用于图5中的组节点即目标应用节点如节点1。该方法可以包括s410-s440。

其中,s410,接收第一应用节点发送的第一查询请求;

接着,s420,响应于第一查询请求,获取与第一应用节点相关联的第二应用节点的历史流量数据;其中,第二应用节点为与第一应用节点所属的节点组相同的应用节点;

再者,s430,根据历史流量数据,从第二应用节点中选取第一可拆借节点;

然后,s440,向第一应用节点发送第一可拆借节点对应的第一节点标识;其中,第一节点标识用于第一应用节点向第一可拆借节点发送第一拆借请求,第一拆借请求用于使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度。

由此,能够在接收到第一应用节点发送的第一查询请求之后,响应于第一查询请求,获取与第一应用节点所属的节点组相同的第二应用节点的历史流量数据,并且根据历史流量数据,从第二应用节点中选取第一可拆借节点,进而向第一应用节点发送第一可拆借节点对应的第一节点标识,以使第一应用节点根据第一节点标识向第一可拆借节点发送第一拆借请求,并使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度,由此,可以实现同一个节点组内的多个应用节点之间的令牌额度的相互拆借,以对分布式系统进行整体性的流量控制。

基于此,结合图5对上述s410至s440进行详细说明:

首先,涉及s410,如图5所示,第一应用节点可以为节点1、节点2或者节点3。

需要注意的是,本发明提供的实施例中,节点1即是组节点又是基础应用节点,所以,节点1既可以进行流量控制,也可以确定节点之间的拆借方案并基于每个节点的流量数据对节点上的令牌进行调控。

基于此,如图5所示,本发明实施例中,若时间段t(例如:1秒)是一个观测窗口,一般会把t切分为若干个控制窗口(例如:5个200毫秒)。业务上的流控指标p(例如:10000tps)会均分到一个观测窗口内的5个控制窗口(例如:每个控制窗口为2000个令牌transaction),以便实现流量控制的时间平滑性。

这样,在第一应用节点剩余的令牌额度小于或者额定阈值的情况下,接收第一应用节点发送的第一查询请求,令牌额度由第一应用节点在控制窗口期内获取。例如,在流量趋于饱和的情况下,基础应用节点(即第一应用节点如节点1、节点2或者节点3)的预分配令牌额度如2000个令牌,如果额定阈值为0,即耗光了自己的预分配额度如2000个令牌,则向组节点(如节点1)发起令牌拆借节点的查询请求,或者,若额定阈值为5,即消耗的预分配令牌额度为1995个令牌时,则向组节点(如节点1)发起令牌拆借节点的查询请求。需要说明的是,预分配令牌额度如2000个令牌包含剩余的令牌额度,这里的预分配令牌额度(相当于包括剩余的令牌额度的总的令牌额度)由基础应用节点在控制窗口期内获取。

这里,节点1可以接收节点1、节点2或者节点3发送的第一查询请求,该第一查询请求用于查询与第一应用节点相关联的第二应用节点,以及确定第二应用节点中可拆借节点的节点标识和可拆借令牌额度。

这里,为了减少通信负载和计算负载,本发明实施例中在一个控制窗口内,基础应用节点最多发起一次令牌拆借节点查询。

反之,在流量不饱和的情况下,每个基础应用节点在每个控制窗口将流量数据上报至节点1即可,此时无需发送第一查询请求,以减少通信负载。

需要说明的是,这里的预设令牌额度是由应用程序集群对应的系统确定每个节点的预设令牌额度。在一种可能的实施例中,本发明实施例还提供了一种除了上述涉及的流控指标是总体限额除以节点个数来进行均衡分配之外的方式确定预设令牌额度,即通过组节点根据每个节点的历史流量来做自动化、智能化的分配。为了保证检测每个节点的流量变化,以便根据实际运行中的流量变化、拆借情况来做自动化、智能化的修正对每个节点进行的流控指标的分配,在s410之前,该方法还可以包括:

获取第一应用节点所属的节点组中的节点总数和第一应用节点所属的节点组对应的令牌总额度;

根据节点总数和令牌总额度,确定第一应用节点对应的预设令牌额度;

向第一应用节点发送预设令牌额度。

这里,一般来说,入口负载均衡器将流量分配到集群内的各基础应用节点是大致均衡的,不均衡情况会出现,但不是重大偏差,也不是长时间持续性状态,没有必要每次都到组节点做令牌批量申请。基于这一点,本发明实施例中的方法采用预分配加拆借的方案,可以在每个控制窗口期内,提前给每个基础应用节点预分配全部的额度,由每个基础应用节点按比例作为参数预加载在内存中。这样在流量不够饱和的情况下,基础应用节点几乎不用去进行节点间的令牌批量拆借,极大的节省了通信开销、组节点的计算处理开销。

接着,涉及s420,结合图5进行举例说明,即当第一应用节点为节点2时,第二应用节点为与节点2属于同一个节点组下的节点1和节点3。

再者,涉及s430,为了有效降低组节点在集群流控中的通信负载和计算负载,本发明实施例提供了一种分组拆借的方案,即实现组内的拆借方案。其中,本发明实施例中提供了两种选取第一可拆借节点的方式,具体如下所示:

方式一,在s420中确定的历史流量数据包括在预设历史时间段内的第一流量值、在上一观测窗口期内的第二流量值和在上一控制窗口期内的第三流量值的情况下,s430具体可以包括:

s4301,对第一流量值、第二流量值和第三流量值进行加权求和计算,得到第二应用节点的流量经验值;

s4302,根据流量经验值,从第二应用节点中选取第一可拆借节点。

其中,本发明实施例中的第一流量值对应的第一权重小于第二流量值对应的第二权重,第二权重小于第三流量值对应的第三权重。

举例说明,组节点根据基础应用节点即节点1、节点2和节点3分别上报的历史流量、上一观测窗口周期内流量、上一控制窗口期内流量数据加权计算出当前经验概率上负载最轻的三个以内的基础应用节点编号,返回给发起令牌拆借查询的节点2,供节点2根据及节点编号找到对应的节点,进行节点对节点的拆借。

方式二,本发明实施例中为了确保流量的汇总监控和信息输出,在每个控制窗口内,组节点需要接收每个基础应用节点上报的一次窗口期内的流量数据。除此之外,本发明实施例提供的组节点还需执行一项重要的步骤即计算每个第二应用节点对应的流量经验值,这里,可以进一步地对方式一中涉及的s4302进行具体说明,s4302包括:

s43021,根据每个第二应用节点对应的流量经验值,确定每个第二应用节点对应的优先级;

s43022,按照优先级由大到小的顺序,排列第二应用节点,得到应用节点序列;

s43023,在应用节点序列中选取预设数量的第一可拆借节点。

其中,预设数量小于或等于第二应用节点的节点数量与预设百分比的乘积。

这里,可以通过执行下述公式(1)实现上述可能:

流量经验值=a1*历史流量+a2*上一观测窗口周期内流量+a3*上一控制窗口期内流量数据(1)

这样,根据各基础应用节点上报的流量数据中的历史流量、上一观测窗口周期内流量、上一控制窗口期内流量数据加权计算出流量经验值(其中,权重为可配置的参数,即a1<a2<a3),选取当前经验概率上负载最轻的基础应用节点编号的优先级序列(即不超过总节点数的40%)。

需要提示的是,上述计算过程是在每个控制窗口内执行一次,每次基础应用节点如果耗光了自己的预分配额度,则向组节点发起令牌拆借节点查询,组节点以轮转的方式直接返回计算结果。例如:上次查询返回的是优先级为节点1、节点2和节点3,则本次查询返回的是优先级节点4、节点5和节点6。

由此,通过上述方式一和方式二可以有效解决组节点的通信和处理开销大的问题,大大的提升了集群流控的横向扩展性。这样,在流量不饱和的情况下,组节点在一个控制窗口期仅处理每个基础应用节点的一次流量数据上报。在流量饱和的情况下,组节点也最多只增加一次需要拆借的基础应用节点的查询请求,负载较轻,横向扩展性较好。

然后,涉及s440,节点1可以根据选取出来的第一可拆借节点,向第一应用节点发送第一可拆借节点对应的第一节点标识,以便第一应用节点根据该第一节点标识向第一可拆借节点发送第一拆借请求,并通过第一拆借请求使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度,以便根据第一可拆借令牌额度处理对应数量的请求。

另外,除了如上述s430中所示的实现组内的拆借方案,本发明实施例中还提供了一种实现组间的拆借方案。其中,组与组之间的拆借方案与组内拆借的方案原理相似,只是把组节点变成了基础应用节点的角色,并额外选举了一个管理组节点的组节点。这样,可以适用于多种实际应用程序,便于工程应用实施。另外,还可以解决目前流量控制方案中缺乏整体上的组间流控协同的问题。

由此,下面对实现组间的拆借方案进行说明。

在一种可能的实施例中,在上述情况1中的s43023之前,本发明实施例中的流量控制方法还可以包括s510-s520,其中,

s510,确定第一查询请求在当前控制窗口期内的请求编号;

s520,按照应用节点序列的序列顺序,将第二应用节点分为多组应用节点组;其中,每个应用节点组包括预设数量的应用节点。

基于此,s43023具体可以包括:

在请求编号小于或等于应用节点组的组数的情况下,将序号与请求编号相同的应用节点组中的应用节点作为第一可拆借节点。

反之,在请求编号大于组数的情况下,向第三应用节点发送第二查询请求;其中,第二查询请求用于使第三应用节点反馈第四应用节点中的第二可拆借节点对应的第二节点标识,第三应用节点为与第一应用节点所属的节点组不同的应用节点,第四应用节点为与第三应用节点所属的节点组相同的应用节点;

接收第二节点标识;

根据第二节点标识,向第二可拆借节点发送第二拆借请求;其中,第二拆借请求用于使第二可拆借节点反馈第二可拆借令牌额度;

接收第二可拆借节点反馈的第二可拆借令牌额度;

并向第一应用节点发送第二可拆借令牌额度。

由此,本发明实施例通过设置多个tokenserver进行分组管理,以根据额外选举的一个管理组节点的组节点,实现组与组之间的流量额度调整和管控。本发明实施例提出的组内拆借、组间拆借的方案,较好的解决了集群流控的整体性问题。

这里,在第二可拆借节点的数量为多个的情况下,上述涉及的根据第二节点标识,向第二可拆借节点发送第二拆借请求,具体可以包括:

按照第二可拆借节点的优先级由高到低的顺序,根据第二节点标识,依次向每个第二可拆借节点发送第二拆借请求,直至满足第一预设条件。

其中,本发明实施例中涉及的第一预设条件包括下列中的至少一项:

已向全部第二可拆借节点发送第二拆借请求;

所接收的可拆借令牌额度累计值达到预设令牌拆借额度。

由此,为了有效的减少通信负载和计算负载,本发明实施例中,可以供最多三次的拆借尝试,拆借成功则额度此消彼长,发起请求的基础应用节点仍然有额度处理业务请求;拆借失败则发起请求的基础应用节点进入流量控制状态。这样,不仅有效降低了组节点在集群流量控制中的通信负载和计算负载,而且在流量不饱和状态下也有效降低了基础应用节点的通信负载和计算负载。使得在集群流量控制时,无需一个汇聚节点来做所有的令牌桶发放,化解了在一个集群一个组时,缺乏横向扩展性的问题。

除此之外,本发明实施例还提供了一种流量控制方法,应用于上述涉及的基础应用节点(如图5中的节点1、节点2或者节点3),具体方法可以包括s610-s640,以与上述应用于组节点的方法对应。

下面结合图6对本发明实施例提供的一种基于基础应用节点的流量控制方法进行详细说明,具体如下所示:

首先,s610,向目标应用节点(如基础应用节点对应的组节点即节点1)发送第一查询请求;其中,第一查询请求用于使目标应用节点反馈第二应用节点中的第一可拆借节点对应的第一节点标识,第二应用节点为与目标应用节点所属的节点组相同的应用节点;

接着,s620,接收目标应用节点反馈的第一节点标识;

再者,s630,根据第一节点标识,向第一可拆借节点发送第一拆借请求;其中,第一拆借请求用于使第一可拆借节点反馈第一可拆借令牌额度;

然后,s640,接收第一可拆借节点反馈的第一可拆借令牌额度。以便根据可拆借令牌额度进行请求处理。

由此,能够向目标应用节点发送第一查询请求,以使目标应用节点反馈与目标应用节点所属的节点组相同的第二应用节点中的第一可拆借节点对应的第一节点标识,并且接收目标应用节点反馈的第一节点标识,进而根据第一节点标识,向第一可拆借节点发送第一拆借请求,以使第一可拆借节点反馈第一可拆借令牌额度,最终接收第一可拆借节点反馈的第一可拆借令牌额度,由此,可以实现同一个节点组内的多个应用节点之间的令牌额度的相互拆借,以对分布式系统进行整体性的流量控制。

这里,本发明实施例提供两种触发执行s610的条件:

条件1:是在基础应用节点剩余的令牌额度小于或者等于额定阈值的情况下,向目标应用节点发送第一查询请求,这里,包括剩余的令牌额度的总的令牌额度由基础应用节点在控制窗口期内获取。这样,在s610之前,还可以包括:

确定剩余的令牌额度,令牌额度在控制窗口期内获取;

其中,向目标应用节点发送第一查询请求,包括:

在剩余的令牌额度小于或者等于额定阈值的情况下,向目标应用节点发送第一查询请求。

这样,本发明实施例能够在剩余的令牌额度小于或者等于额定阈值的情况下,向目标应用节点发送第一查询请求,反之,若在剩余的令牌额度大于额定阈值的情况下,仅需向组节点上报流量数据,以减少节点间的通信负载。

条件2:是在基础应用节点确定需求令牌额度大于剩余的令牌额度的情况下,向目标应用节点发送第一查询请求,这样,在s610之前,还可以包括:

确定需求令牌额度和剩余的令牌额度;

其中,向目标应用节点发送第一查询请求,包括:

在需求令牌额度大于剩余的令牌额度的情况下,向目标应用节点发送第一查询请求。

这样,本发明实施例能够在需求令牌额度大于剩余的令牌额度的情况下,向目标应用节点发送第一查询请求,反之,若在需求令牌额度小于或者等于剩余的令牌额度的情况下,仅需向组节点上报流量数据,以减少节点间的通信负载。

这里的需求令牌额度指的是该基础节点上的待处理的请求数量大于剩余的令牌额度下预计需要的令牌额度。

另外,在第一可拆借节点的数量为多个的情况下,上述涉及的根据第一节点标识,向第一可拆借节点发送第一拆借请求,具体可以包括:

按照第一可拆借节点的优先级由高到低的顺序,根据第一节点标识,依次向每个第一可拆借节点发送第一拆借请求,直至满足第二预设条件。

其中,本发明实施例中的第二预设条件包括下列中的至少一项:

已向全部第一可拆借节点发送第一拆借请求;

所接收的可拆借令牌额度累计值达到预设令牌拆借额度。

图7示出了本发明一个实施例提供的流量控制装置的结构示意图。

在本发明一些实施例中,图7所示的装置可以设置于目标应用节点内,该目标应用节点可以为节点组的组节点,例如,目标应用节点可以为图5所示的架构中的节点1。

如图7所示,该流量控制装置700可以包括第一接收模块710、第一获取模块720、第一选取模块730和第一发送模块740。

第一接收模块710可以用于接收第一应用节点发送的第一查询请求。

第一获取模块720可以用于响应于第一查询请求,获取与第一应用节点相关联的第二应用节点的历史流量数据;其中,第二应用节点为与第一应用节点所属的节点组相同的应用节点。

第一选取模块730可以用于根据历史流量数据,从第二应用节点中选取第一可拆借节点。

第一发送模块740可以用于向第一应用节点发送第一可拆借节点对应的第一节点标识;其中,第一节点标识用于第一应用节点向第一可拆借节点发送第一拆借请求,第一拆借请求用于使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度。

在本发明实施例中,能够在接收到第一应用节点发送的第一查询请求之后,响应于第一查询请求,获取与第一应用节点所属的节点组相同的第二应用节点的历史流量数据,并且根据历史流量数据,从第二应用节点中选取第一可拆借节点,进而向第一应用节点发送第一可拆借节点对应的第一节点标识,以使第一应用节点根据第一节点标识向第一可拆借节点发送第一拆借请求,并使第一可拆借节点向第一应用节点反馈第一可拆借令牌额度,由此,可以实现同一个节点组内的多个应用节点之间的令牌额度的相互拆借,以对分布式系统进行整体性的流量控制。

在本发明一些实施例中,第一接收模块710具体可以用于,在第一应用节点剩余的令牌额度小于额定阈值的情况下,接收第一应用节点发送的第一查询请求,令牌额度由第一应用节点在控制窗口期内获取。

在本发明一些实施例中,历史流量数据可以包括在预设历史时间段内的第一流量值、在上一观测窗口期内的第二流量值和在上一控制窗口期内的第三流量值。

相应地,第一选取模块730可以包括第一计算单元和第一选取单元。

第一计算单元可以用于对第一流量值、第二流量值和第三流量值进行加权求和计算,得到第二应用节点的流量经验值。

第一选取单元可以用于根据流量经验值,从第二应用节点中选取第一可拆借节点。

在本发明一些实施例中,第一流量值对应的第一权重可以小于第二流量值对应的第二权重,第二权重可以小于第三流量值对应的第三权重。

在本发明一些实施例中,第一选取单元可以具体用于:根据每个第二应用节点对应的流量经验值,确定每个第二应用节点对应的优先级;按照优先级由大到小的顺序,排列第二应用节点,得到应用节点序列;在应用节点序列中选取预设数量的第一可拆借节点。

在本发明一些实施例中,预设数量可以小于或等于第二应用节点的节点数量与预设百分比的乘积。

在本发明一些实施例中,该流量控制装置700还可以包括第一确定模块和第一分组模块。

第一确定模块可以用于确定第一查询请求在当前控制窗口期内的请求编号。

第一分组模块可以用于按照应用节点序列的序列顺序,将第二应用节点分为多组应用节点组;其中,每个应用节点组包括预设数量的应用节点。

相应地,第一选取单元可以具体用于:在请求编号小于或等于应用节点组的组数的情况下,将序号与请求编号相同的应用节点组中的应用节点作为第一可拆借节点。

在本发明一些实施例中,该流量控制装置700还可以包括第四发送模块、第四接收模块、第五发送模块和第五接收模块。

第四发送模块可以用于在请求编号大于组数的情况下,向第三应用节点发送第二查询请求;其中,第二查询请求用于使第三应用节点反馈第四应用节点中的第二可拆借节点对应的第二节点标识,第三应用节点为与第一应用节点所属的节点组不同的应用节点,第四应用节点为与第三应用节点所属的节点组相同的应用节点。

第四接收模块可以用于接收第二节点标识。

第五发送模块可以用于根据第二节点标识,向第二可拆借节点发送第二拆借请求;其中,第二拆借请求用于使第二可拆借节点反馈第二可拆借令牌额度。

第五接收模块可以用于接收第二可拆借节点反馈的第二可拆借令牌额度。

在本发明一些实施例中,该流量控制装置700还可以包括第六发送模块。

第六发送模块可以用于向第一应用节点发送第二可拆借令牌额度。

在本发明一些实施例中,第二可拆借节点的数量可以为多个。

相应地,第五发送模块可以具体用于:按照第二可拆借节点的优先级由高到低的顺序,根据第二节点标识,依次向每个第二可拆借节点发送第二拆借请求,直至满足第一预设条件。

在本发明一些实施例中,第一预设条件可以包括下列中的至少一项:

已向全部第二可拆借节点发送第二拆借请求;

所接收的可拆借令牌额度累计值达到预设令牌拆借额度。

需要说明的是,图7所示的数据处理装置700可以执行图4所示的方法实施例中的各个步骤,并且实现图4所示的方法实施例中的各个过程和效果,在此不做赘述。

图8示出了本发明另一个实施例提供的流量控制装置的结构示意图。

在本发明一些实施例中,图8所示的流量控制装置可以设置于第一应用节点内,该第一应用节点可以为节点组内的任意节点,即第一应用节点可以为节点组的组节点或者基础节点,例如,第一应用节点可以为图5所示的架构中的节点1、节点2和节点3中的任一个。

如图8所示,该流量控制装置800可以包括第二发送模块810、第二接收模块820、第三发送模块830和第三接收模块840。

第二发送模块810可以用于向目标应用节点发送第一查询请求;其中,第一查询请求用于使目标应用节点反馈第二应用节点中的第一可拆借节点对应的第一节点标识,第二应用节点为与目标应用节点所属的节点组相同的应用节点。

第二接收模块820可以用于接收目标应用节点反馈的第一节点标识。

第三发送模块830可以用于根据第一节点标识,向第一可拆借节点发送第一拆借请求;其中,第一拆借请求用于使第一可拆借节点反馈第一可拆借令牌额度。

第三接收模块840可以用于接收第一可拆借节点反馈的第一可拆借令牌额度。

在本发明实施例中,能够向目标应用节点发送第一查询请求,以使目标应用节点反馈与目标应用节点所属的节点组相同的第二应用节点中的第一可拆借节点对应的第一节点标识,并且接收目标应用节点反馈的第一节点标识,进而根据第一节点标识,向第一可拆借节点发送第一拆借请求,以使第一可拆借节点反馈第一可拆借令牌额度,最终接收第一可拆借节点反馈的第一可拆借令牌额度,由此,可以实现同一个节点组内的多个应用节点之间的令牌额度的相互拆借,以对分布式系统进行整体性的流量控制。

在本发明一些实施例中,该流量控制装置800还可以包括第三确定模块。

第三确定模块可以用于确定剩余的令牌额度,令牌额度在控制窗口期内获取。

相应地,第二发送模块810可以具体用于:在剩余的令牌额度小于额定阈值的情况下,向目标应用节点发送第一查询请求。

在本发明一些实施例中,第一可拆借节点的数量可以为多个。

相应地,第三发送模块830可以具体用于:按照第一可拆借节点的优先级由高到低的顺序,根据第一节点标识,依次向每个第一可拆借节点发送第一拆借请求,直至满足第二预设条件。

在本发明一些实施例中,第二预设条件可以包括下列中的至少一项:

已向全部第一可拆借节点发送第一拆借请求;

所接收的可拆借令牌额度累计值达到预设令牌拆借额度。

需要说明的是,图8所示的数据处理装置800可以执行图6所示的方法实施例中的各个步骤,并且实现图6所示的方法实施例中的各个过程和效果,在此不做赘述。

图9示出了本发明实施例提供的流量控制设备的硬件结构示意图。

流量控制设备可以包括处理器901以及存储有计算机程序指令的存储器902。

具体地,上述处理器901可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本发明实施例的一个或多个集成电路。

存储器902可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器902可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器902可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器902可在综合网关容灾设备的内部或外部。在特定实施例中,存储器902是非易失性固态存储器。在特定实施例中,存储器902包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。

处理器901通过读取并执行存储器902中存储的计算机程序指令,以实现上述实施例中的任意一种流量控制方法。

在一个示例中,流量控制设备还可包括通信接口903和总线910。其中,如图9所示,处理器901、存储器902、通信接口903通过总线910连接并完成相互间的通信。

通信接口903,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。

总线910包括硬件、软件或两者,将流量控制设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线910可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。

该流量控制设备可以执行本发明实施例中的流量控制方法,从而实现结合图5至图8描述的流量控制方法和装置。

另外,结合上述实施例中的流量控制方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种流量控制方法。

需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。

以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1