首页> 中国专利> 在分布式网络中实现动态负载平衡的方法和系统

在分布式网络中实现动态负载平衡的方法和系统

摘要

本发明提供了一种在分布式网络中实现动态负载平衡的方法和系统。该方法包括:确定分布式网络的节点平均负载计算值;将节点平均负载计算值与一下限阈值和一上限阈值分别进行比较;当节点平均负载计算值低于下限阈值的时候,将分布式网络中至少一个节点置于休眠状态;以及当节点平均负载计算值高于上限阈值的时候,将分布式网络中至少一个已休眠节点唤醒。本发明的方法和系统在网络负载较低时休眠部分节点并在网络负载较高时将其唤醒,很好地实现了网络节点间的负载平衡,同时提高了分布式网络的能耗效率,降低了网络系统能源消耗。

著录项

  • 公开/公告号CN103428102A

    专利类型发明专利

  • 公开/公告日2013-12-04

    原文格式PDF

  • 申请/专利权人 北京智谷睿拓技术服务有限公司;

    申请/专利号CN201310339581.7

  • 发明设计人 田文洪;谢西庭;

    申请日2013-08-06

  • 分类号H04L12/803(20130101);H04L29/08(20060101);

  • 代理机构

  • 代理人

  • 地址 100085 北京市海淀区小营西路33号1层1F05室

  • 入库时间 2024-02-19 21:40:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-10

    授权

    授权

  • 2013-12-25

    实质审查的生效 IPC(主分类):H04L12/803 申请日:20130806

    实质审查的生效

  • 2013-12-04

    公开

    公开

说明书

技术领域

本发明涉及网络通信技术,尤其涉及一种在分布式网络中实现动 态负载平衡的方法和系统。

背景技术

随着云计算技术的不断发展,云计算数据中心的规模越来越大, 数据中心物理服务器的密度也越来越大。传统的数据处理和分析方法 受到单机CPU、内存的限制,进行海量运算时候会遇到瓶颈。在这 种情况下,很多新的分布式网络技术诞生出来并获得广泛应用,例如 Hadoop等。Hadoop是一个能够对大量数据进行分布式处理的软件框 架,其极大地方便了编程人员在不会分布式并行编程的情况下,将自 己的程序运行在分布式网络系统上。

在新技术诞生的同时,在之前针对分布式网络负载性能改进的大 量研究基础上,研究人员已开始把注意力放在了分布式网络的节能研 究上。Stanford大学的一个团队认为分布式网络在节能方面存在非常 大的改进空间,建议对节点数据采用新的算法;加州大学伯克利分校 基于节点、工作时间、功率建立了一个模型,并认为基于这个模型能 取得较好效果;瑞士科学家修改了分布式网络的块分配算法,从而减 少了分布式网络的能源消耗;此外,动态电压调节也被研究人员广泛 使用于减少网络能耗,不过不足的是它需要特殊的硬件环境。

与此同时,人们开始意识到优化能耗效率和优化负载性能有同样 的价值,单纯强调负载均衡或者单纯强调节能而对系统的整体性能不 能兼顾都是不够的。但是,现有技术针对分布式网络的应用中还缺少 可以兼顾动态负载均衡和节能两方面的技术。

发明内容

有鉴于此,本发明的一个目的在于提供一种分布式网络技术,以 在实现分布式网络的动态负载平衡的基础上提高分布式网络的能耗 效率,降低网络系统能源消耗。

根据本发明的一个方面,提供了一种在分布式网络中实现动态负 载平衡的方法,所述方法包括:

节点平均负载计算值确定步骤,确定所述分布式网络的节点平均 负载计算值;

阈值比较步骤,将所述节点平均负载计算值与一下限阈值和一上 限阈值分别进行比较;

休眠步骤,当所述节点平均负载计算值低于所述下限阈值的时 候,将所述分布式网络中至少一个节点置于休眠状态;以及

唤醒步骤,当所述节点平均负载计算值高于所述上限阈值的时 候,将所述分布式网络中至少一个已休眠节点唤醒。

根据上述技术方案,本发明的方法在网络负载较低时休眠部分节 点并在网络负载较高时将其唤醒,很好地实现了网络节点间的负载平 衡,同时提高了分布式网络的能耗效率,降低了网络系统能源消耗。 而且,本发明的方法在考虑分布式网络负载状况时将节点平均负载计 算值作为考虑因素,这相对于现有技术中普遍采用负载最高节点作为 考虑因素的方式更加关注了分布式网络的整体负载状态,在达到节约 网络能源的基础上进一步改善了分布式网络的整体负载均衡。

优选地,所述分布式网络是Hadoop网络。Hadoop集群是一种典 型的分布式网络结构,可以采用本发明的上述方法来实现动态负载平 衡。

优选地,所述节点平均负载计算值确定步骤中,同时考虑节点的 CPU负载和内存负载两方面,设置节点的负载向量为L=<Lcpu,Lmem>, 其中Lcpu表示CPU负载,Lmem表示内存负载,并设置变量p表示节点 负载中CPU负载所占权重,其中0<p<1。在现有技术中的网络负载 计算方案中,通常仅考虑CPU的运算负载,而并未将数据计算中另 一个关键因素——内存负载加以考虑。本发明技术方案同时考虑节点 的CPU负载和内存负载两方面,这样更加客观地反映了网络节点的 实际负载状态,提高了本方法运行的效率和准确性。

优选地,以下述方式之一来计算当前时刻t的所述节点平均负载 计算值Load(t):

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。上述两种方式均同时考虑了CPU负载和内存负载两方 面因素,客观反映了网络节点的实际负载状态。

优选地,在所述节点平均负载计算值确定步骤中采用动态负反馈 负载计算方法,所述节点平均负载计算值确定步骤进一步包括:

步骤201:计算当前时刻t的节点平均负载Load(t);

步骤202:计算上一时刻t-1的节点平均负载Load(t-1);

步骤203:计算当前时刻的节点平均负载与上一时刻的节点平均 负载的差值Load(t)-Load(t-1);以及

步骤204:基于当前时刻的节点平均负载Load(t)、当前时刻的节 点平均负载与上一时刻的节点平均负载的差值Load(t)-Load(t-1),来 共同确定所述分布式网络当前的节点平均负载计算值Load(t)'。

本发明技术方案中的动态负反馈负载计算方法引入负反馈机制, 在确定当前时刻节点平均负载最终计算值的时候基于当前时刻直接 计算出的节点平均负载、并充分考虑上一时刻与当前时刻之间的负载 变化,这样可有效避免计算负载值的剧烈变化,缓解由于节点频繁休 眠和频繁唤醒而引起的系统抖动。

优选地,以下述方式之一来计算节点平均负载:

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。上述两种方式均同时考虑了CPU负载和内存负载两方 面因素,客观反映了网络节点的实际负载状态。

优选地,在所述步骤204中,以如下方式之一来确定所述分布式 网络当前时刻t的节点平均负载计算值Load(t)':

方式1:Load(t)=Load(t)-Load(t)-Load(t-1)m,其中m是大于等 于3的奇数;

方式2:Load(t)'=Load(t)-k×(Load(t)-Load(t-1)),其中k是大于0 的反馈系数;

方式3:Load(t)=Load(t)/(1+Load(t)-Load(t-1)m),其中m是大于 等于3的奇数。

上述三个技术方案利用负反馈机制一定程度上抵消了有可能的 负载剧烈变化。

优选地,在所述休眠步骤中,采用随机方法或轮询方法来选择至 少一个节点,并将其置于休眠状态。这两种确定休眠节点的方式均简 单易行。

优选地,在所述休眠步骤中,确定所述分布式网络中当前负载最 小的至少一个节点,并将其置于休眠状态。该方法总是优先将负载最 小的节点置于休眠状态,提升了负载均衡性能。

优选地,在所述休眠步骤中,采用最小抖动负载积方法来确定所 述分布式网络中的至少一个节点,并将其置于休眠状态,

所述休眠步骤进一步包括:

步骤301:计算当前每个节点的负载值Load(ti);

步骤302:计算上一时刻每个节点的负载值Load((t-1)i);

步骤303:计算每个节点当前时刻负载值与上一时刻负载值的差 值Load(ti)-Load((t-1)i);

步骤304:计算一抖动系数

步骤305:计算考虑抖动后的每个节点当前负载值 Load(ti)'=h×Load(ti);

步骤306:选择考虑抖动后节点当前负载值最小的至少一个节点; 以及

步骤307:将所选择的至少一个节点置于休眠状态,

其中i=1,2,……,n;n表示所述分布式网络的节点总数。

为了缓解节点频繁休眠和频繁唤醒而引起的系统抖动现象,上述 方法在最小负载方法的基础上进一步考虑各节点在当前时刻与上一 时刻之间的负载变化,形成最小抖动负载积方法来选择要置于休眠状 态的节点。

优选地,以下述方式之一计算节点i的负载值:

方式1:Load(ti)=p×Lcpu(ti)2+(1-p)×Lmem(ti)2;

方式2:Load(ti)=p×Lcpu(ti)+(1-p)×Lmem(ti).

上述两种方式中均同时考虑了CPU负载和内存负载两方面因 素,客观反映了分布式网络节各节点的实际负载状态。

优选地,在所述唤醒步骤中,如果所述分布式网络中当前不存在 已休眠节点,则启动至少一个新节点。该技术方案处理了在所有节点 均处于工作状态下的特殊情况。

根据本发明的另一个方面,提供了一种在分布式网络中实现动态 负载平衡的系统,所述系统包括:

节点平均负载计算值确定单元,用于确定所述分布式网络的节点 平均负载计算值;

阈值比较单元,用于将所述节点平均负载计算值与一下限阈值和 一上限阈值分别进行比较;

休眠单元,用于当所述节点平均负载计算值低于所述下限阈值的 时候,将所述分布式网络中至少一个节点置于休眠状态;以及

唤醒单元,用于当所述节点平均负载计算值高于所述上限阈值的 时候,将所述分布式网络中至少一个已休眠节点唤醒。

根据上述技术方案,本发明的系统在网络负载较低时休眠部分节 点并在网络负载较高时将其唤醒,很好地实现了网络节点间的负载平 衡,同时提高了分布式网络的能耗效率,降低了网络系统能源消耗。 而且,本发明的系统在考虑分布式网络负载状况时将节点平均负载计 算值作为考虑因素,这相对于现有技术中普遍采用负载最高节点作为 考虑因素的方式更加关注了分布式网络的整体负载状态,在达到节约 网络能源的基础上进一步改善了分布式网络的整体负载均衡。

优选地,所述节点平均负载计算值确定单元同时考虑节点的CPU 负载和内存负载两方面,其设置节点的负载向量为L=<Lcpu,Lmem>,其 中Lcpu表示CPU负载,Lmem表示内存负载,并设置变量p表示节点负 载中CPU负载所占权重,其中0<p<1。在现有技术中的网络负载计 算方案中,通常仅考虑CPU的运算负载,而并未将数据计算中另一 个关键因素——内存负载加以考虑。本发明技术方案同时考虑节点的 CPU负载和内存负载两方面,这样更加客观地反映了网络节点的实 际负载状态,提高了本方法运行的效率和准确性。

优选地,所述节点平均负载计算值确定单元以下述方式之一来计 算t时刻的所述节点平均负载计算值Load(t):

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。上述两种方式均同时考虑了CPU负载和内存负载两方 面因素,客观反映了网络节点的实际负载状态。

优选地,所述节点平均负载计算值确单元进一步包括如下单元:

第一单元:用于计算当前时刻t的节点平均负载Load(t);

第二单元:用于计算上一时刻t-1的节点平均负载Load(t-1);

第三单元:用于计算当前时刻的节点平均负载与上一时刻的节点 平均负载的差值Load(t)-Load(t-1);以及

第四单元:用于基于当前时刻的节点平均负载Load(t)、当前时刻 的节点平均负载与上一时刻的节点平均负载的差值 Load(t)-Load(t-1),来共同确定所述分布式网络当前的节点平均负载 计算值Load(t)'。

本发明技术方案中的动态负反馈负载计算方法引入负反馈机制, 在确定当前时刻节点平均负载最终计算值的时候基于当前时刻直接 计算出的节点平均负载、并充分考虑上一时刻与当前时刻之间的负载 变化,这样可有效避免计算负载值的剧烈变化,缓解由于节点频繁休 眠和频繁唤醒而引起的系统抖动。

优选地,所述第一单元或第二单元以下述方式之一来计算节点平 均负载:

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。上述两种方式均同时考虑了CPU负载和内存负载两方 面因素,客观反映了网络节点的实际负载状态。

优选地,所述第四单元以如下方式之一来确定所述分布式网络的 当前时刻t的节点平均负载计算值Load(t)':

方式1:Load(t)=Load(t)-Load(t)-Load(t-1)m,其中m是大于等 于3的奇数;

方式2:Load(t)'=Load(t)-k×(Load(t)-Load(t-1)),其中k是大于0 的反馈系数;

方式3:Load(t)=Load(t)/(1+Load(t)-Load(t-1)m),其中m是大于 等于3的奇数。

上述三个技术方案利用负反馈机制一定程度上抵消了有可能的 负载剧烈变化。

优选地,所述休眠单元采用随机方法或轮询方法来选择至少一个 节点,并将其置于休眠状态。这两种确定休眠节点的方式均简单易行。

优选地,所述休眠单元确定所述分布式网络中当前负载最小的至 少一个节点,并将其置于休眠状态。该方式总是优先将负载最小的节 点置于休眠状态,提升了负载均衡性能。

优选地,所述休眠单元进一步包括:

第五单元:用于计算当前每个节点的负载值Load(ti);

第六单元:用于计算上一时刻每个节点的负载值Load((t-1)i);

第七单元:用于计算每个节点当前时刻负载值与上一时刻负载值 的差值Load(ti)-Load((t-1)i);

第八单元:用于计算一抖动系数

第九单元:用于计算考虑抖动后的每个节点当前负载值 Load(ti)'=h×Load(ti);

第十单元:用于选择考虑抖动后节点当前负载值最小的至少一个 节点;以及

第十一单元:用于将所选择的至少一个节点置于休眠状态,

其中i=1,2,……,n;n表示所述分布式网络的节点总数。

为了缓解节点频繁休眠和频繁唤醒而引起的系统抖动现象,上述 方式在最小负载方法的基础上进一步考虑各节点在当前时刻与上一 时刻之间的负载变化,形成最小抖动负载积方法来选择要置于休眠状 态的节点。

优选地,所述第五单元或者第六单元以下述方式之一计算节点i 的负载值:

方式1:Load(ti)=p×Lcpu(ti)2+(1-p)×Lmem(ti)2;

方式2:Load(ti)=p×Lcpu(ti)+(1-p)×Lmem(ti).

上述两种方式中均同时考虑了CPU负载和内存负载两方面因 素,客观反映了分布式网络节各节点的实际负载状态。

优选地,如果所述分布式网络中当前不存在已休眠节点,所述唤 醒单元则启动至少一个新节点。该技术方案处理了在所有节点均处于 工作状态下的特殊情况。

根据本发明的另一个方面,还提供一种基于动态负反馈的分布式 网络中节点平均负载值的确定方法,所述方法包括:

步骤1:计算所述分布式网络中当前时刻t的节点平均负载 Load(t);

步骤2:计算所述分布式网络中上一时刻t-1的节点平均负载 Load(t-1);

步骤3:计算当前时刻的节点平均负载与上一时刻的节点平均负 载的差值Load(t)-Load(t-1);以及

步骤4:基于当前时刻的节点平均负载Load(t)、当前时刻的节点 平均负载与上一时刻的节点平均负载的差值Load(t)-Load(t-1),来共 同确定所述分布式网络中当前的节点平均负载计算值Load(t)'。

本发明上述方法引入负反馈机制,在确定当前时刻节点平均负载 最终计算值的时候基于当前时刻直接计算出的节点平均负载、并充分 考虑上一时刻与当前时刻之间的负载变化,这样可有效避免计算负载 值的剧烈变化,缓解由于节点频繁休眠和频繁唤醒而引起的系统抖 动。

优选地,所述方法同时考虑节点的CPU负载和内存负载两方面, 设置节点的负载向量为L=<Lcpu,Lmem>,其中Lcpu表示CPU负载,Lmem表 示内存负载,并设置变量p表示节点负载中CPU负载所占权重,其 中0<p<1。本发明技术方案同时考虑节点的CPU负载和内存负载两 方面,这样更加客观地反映了网络节点的实际负载状态,提高了本方 法运行的效率和准确性。

优选地,以下述方式之一来计算节点平均负载:

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。上述两种方式均同时考虑了CPU负载和内存负载两方 面因素,客观反映了网络节点的实际负载状态。

优选地,在所述步骤4中,以如下方式之一来确定所述分布式网 络当前时刻t的节点平均负载计算值Load(t)':

方式1:Load(t)=Load(t)-Load(t)-Load(t-1)m,其中m是大于等 于3的奇数;

方式2:Load(t)'=Load(t)-k×(Load(t)-Load(t-1)),其中k是大于0 的反馈系数;

方式3:Load(t)=Load(t)/(1+Load(t)-Load(t-1)m),其中m是大于 等于3的奇数。

上述三个技术方案利用负反馈机制一定程度上抵消了有可能的 负载剧烈变化。

根据本发明的另一个方面,还提供一种基于动态负反馈的分布式 网络中节点平均负载计算值的确定装置,所述装置包括:

第一单元:用于计算所述分布式网络中当前时刻t的节点平均负 载Load(t);

第二单元:用于计算所述分布式网络中上一时刻t-1的节点平均 负载Load(t-1);

第三单元:用于计算当前时刻的节点平均负载与上一时刻的节点 平均负载的差值Load(t)-Load(t-1);以及

第四单元:用于基于当前时刻的节点平均负载Load(t)、当前时刻 的节点平均负载与上一时刻的节点平均负载的差值 Load(t)-Load(t-1),来共同确定所述分布式网络中当前的节点平均负 载计算值Load(t)'。

本发明上述装置引入负反馈机制,在确定当前时刻节点平均负载 最终计算值的时候基于当前时刻直接计算出的节点平均负载、并充分 考虑上一时刻与当前时刻之间的负载变化,这样可有效避免计算负载 值的剧烈变化,缓解由于节点频繁休眠和频繁唤醒而引起的系统抖 动。

优选地,所述装置同时考虑节点的CPU负载和内存负载两方面, 设置节点的负载向量为L=<Lcpu,Lmem>,其中Lcpu表示CPU负载,Lmem表 示内存负载,并设置变量p表示节点负载中CPU负载所占权重,其 中0<p<1。本发明技术方案同时考虑节点的CPU负载和内存负载两 方面,这样更加客观地反映了网络节点的实际负载状态,提高了本方 法运行的效率和准确性。

优选地,所述第一单元和所述第二单元以下述方式之一来计算节 点平均负载:

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。上述两种方式均同时考虑了CPU负载和内存负载两方 面因素,客观反映了网络节点的实际负载状态。

优选地,所述第四单元以如下方式之一来确定所述分布式网络当 前时刻t的节点平均负载计算值Load(t)':

方式1:Load(t)=Load(t)-Load(t)-Load(t-1)m,其中m是大于等 于3的奇数;

方式2:Load(t)'=Load(t)-k×(Load(t)-Load(t-1)),其中k是大于0 的反馈系数;

方式3:Load(t)=Load(t)/(1+Load(t)-Load(t-1)m),其中m是大于 等于3的奇数。

上述三个技术方案利用负反馈机制一定程度上抵消了有可能的 负载剧烈变化。

附图说明

图1是本发明一个实施例中实现动态负载均衡的方法的流程图;

图2是本发明一个实施例中动态负反馈负载计算方法的流程图;

图3是本发明一个实施例中最小抖动负载积方法的流程图;

图4是本发明一个实施例中实现动态负载均衡的系统的结构图;

图5是本发明一个实施例中节点平均负载计算值确定单元的结 构图;

图6是本发明一个实施例中休眠单元的结构图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细 说明。以下实施例用于说明本发明,但不用来限制本发明的范围。

针对现有技术无法兼顾动态负载均衡和节能两方面的技术问题, 本发明在一个实施例中提供了一种在分布式网络中实现动态负载均 衡的方法,该分布式网络具体可以是hadoop网络等。如图1所示, 该方法包括如下步骤:

S102:节点平均负载计算值确定步骤,用于确定分布式网络的节 点平均负载计算值;

S104:阈值比较步骤,用于将该节点平均负载计算值与一下限阈 值和一上限阈值分别进行比较;

S106:休眠步骤,用于当该节点平均负载计算值低于该下限阈值 的时候,将分布式网络中至少一个节点置于休眠状态;以及

S108:唤醒步骤,用于当该节点平均负载计算值高于该上限阈值 的时候,将分布式网络中至少一个已休眠节点唤醒。

本发明实施例中的上述方法在网络负载较低时可使部分空闲节 点节点休眠,在网络负载较高时再将已休眠的节点唤醒,这样很好地 均衡了网络节点间的负载,同时提高了分布式网络的能耗效率,降低 了网络系统能源消耗。而且,本发明方法在考虑分布式网络负载状况 时将节点平均负载计算值作为考虑因素,这相对于现有技术中普遍采 用负载最高节点作为考虑因素的方式更加关注了分布式网络的整体 负载状态,在达到节约网络能源的基础上进一步改善了分布式网络的 整体负载均衡。

下面,结合各附图来详细介绍上述方法中的各步骤。

(1)S102:节点平均负载计算值确定步骤,确定分布式网络的 节点平均负载计算值。

在上述步骤S102中,以分布式网络的节点平均负载计算值作为 衡量参数,来评价分布式网络的负载状况。具体地,通过分布式网络 中的已有负载测量设备,例如功率仪等,可以以一定时间间隔周期性 地采集分布式网络中各节点的负载信息,并基于这些负载信息确定该 节点平均负载计算值。

在现有技术中的网络负载计算方案中,通常仅考虑CPU的运算 负载,而并未将数据计算中另一个关键因素——内存负载加以考虑。 在上述步骤S102中,作为本发明的其中一个发明点,同时考虑节点 的CPU负载和内存负载两方面,这样更加客观地反映了网络节点的 实际负载状态,提高了本方法运行的效率和准确性。具体地,本发明 实施例中采用二维向量来表示节点负载,设置节点的负载向量为 L=<Lcpu,Lmem>,其中Lcpu表示CPU负载,Lmem表示内存负载。为了衡量 不同应用中CPU负载和内存负载的不同影响,同时引入一变量参数 p来表示节点负载中CPU负载所占权重,0<p<1。其中,本领域技 术人员可以根据系统的不同应用场景来设置p的取值,例如,若为 CPU运用较多的科学计算场合,可使p取较大的值,如0.8;若为内 存消耗大的密集型计算场合,则可使p取较小的值,如0.2。

在上述步骤S102的一个具体实施方式中,可以用下述方式之一 来直接计算当前时刻t的节点平均负载计算值Load(t):

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。可以看到,虽然上述两种方式均为常用的向量求平均方 法,但是两种方式中均同时考虑了CPU负载和内存负载两方面因素, 客观反映了网络节点的实际负载状态。

在上述步骤S102的另一个具体实施方式中,作为本发明的其中 一个发明点,采用了本发明创新的动态负反馈负载计算方法来确定分 布式网络的节点平均负载计算值。“负反馈”是控制理论中的基本概 念,是指将系统的输出返回到输入端并对输出产生某种“负”作用, 使系统输出与系统目标的误差减小,系统趋于稳定。本发明中的动态 负反馈负载计算方法引入该负反馈机制,在确定当前时刻节点平均负 载最终计算值的时候基于当前时刻直接计算出的节点平均负载、并充 分考虑上一时刻与当前时刻之间的负载变化,这样可有效避免计算负 载值的剧烈变化,缓解由于节点频繁休眠和频繁唤醒而引起的系统抖 动。

具体地,如图2所示,应用上述动态负反馈负载计算方法的S102 进一步包括如下步骤:

步骤201:计算当前时刻t的节点平均负载Load(t);

步骤202:计算上一时刻t-1的节点平均负载Load(t-1);

步骤203:计算当前时刻的节点平均负载与上一时刻的节点平均 负载的差值Load(t)-Load(t-1);以及

步骤204:基于当前时刻的节点平均负载Load(t)、当前时刻的节 点平均负载与上一时刻的节点平均负载的差值Load(t)-Load(t-1),来 共同确定分布式网络当前的节点平均负载计算值Load(t)'。

由于本发明实施例中的方法可周期性执行以时时对分布式网络 实施动态负载平衡,因此相对于本次获取节点负载信息的当前时刻t 而言,时刻t-1表示上一周期获取节点负载信息的时刻,或简称“上 一时刻”。

在步骤201和步骤202中,均需要计算某一时刻的节点平均负载, 在本具体实施方式中,可以采用下述方式之一来计算某时刻的节点平 均负载:

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。可以看到,虽然上述两种方式均为常用的向量求平均方 法,但是两种方式中均同时考虑了CPU负载和内存负载两方面因素, 客观反映了网络节点的实际负载状态。

其中,在上述步骤204中,可以采用如下方式之一来确定所述分 布式网络当前的节点平均负载计算值Load(t)':

方式1:Load(t)=Load(t)-Load(t)-Load(t-1)m,其中m是大于等 于3的奇数。在这种方式1中,当当前时刻的节点平均负载比前一时 刻增加时,Load(t)-Load(t-1)为正数,反之为负数,经过开m次方的 调整之后作为负反馈机制的调节量,在直接得到的当前时刻节点平均 负载基础上减去该调节量,这样利用负反馈机制一定程度上抵消了有 可能的负载剧烈变化。本领域技术人员可以根据分布式网络的实际运 行状况来确定m的大小。

方式2:Load(t)'=Load(t)-k×(Load(t)-Load(t-1)),其中k是大于0 的反馈系数。在这种方式2中,当当前时刻的节点平均负载比前一时 刻增加时,Load(t)-Load(t-1)为正数,反之为负数,经过与反馈系数 k的相乘之后作为负反馈机制的调节量,在直接得到的当前时刻节点 平均负载基础上减去该调节量,这样利用负反馈机制一定程度上抵消 了有可能的负载剧烈变化。本领域技术人员可以根据分布式网络的实 际运行状况来确定反馈系数k的大小,k值越大负反馈作用越强。

方式3:Load(t)=Load(t)/(1+Load(t)-Load(t-1)m),其中m是大于 等于3的奇数。在这种方式3中,当当前时刻的节点平均负载比前一 时刻增加时,Load(t)-Load(t-1)为正数,反之为负数,经过开m次方 再与1相加之后作为负反馈机制的调节量,在直接得到的当前时刻节 点平均负载基础上除以该调节量,这样利用负反馈机制一定程度上抵 消了有可能的负载剧烈变化。本领域技术人员可以根据分布式网络的 实际运行状况来确定m的大小。

本领域技术人员可以理解,上述基于动态负反馈的节点平均负载 计算值确定方法不仅可以作为本发明中实现动态负载平衡方法的一 个步骤实施,也可以作为独立的方法在分布式网络中实施。

(2)S104:阈值比较步骤,将该节点平均负载计算值与一下限 阈值和一上限阈值分别进行比较。

在步骤S102中确定了节点平均负载计算值后,可将其与预设的 上限阈值Wh、下限阈值Wl分别进行比较。本领域技术人员可以根据分 布式网络运行的历史记录和经验等来设定节点平均负载的该上限阈 值和下限阈值。

当该节点平均负载计算值小于下限阈值Wl时,说明当前分布式网 络整体负载较低,为了节约网络能源消耗,可转入步骤S106执行节 点休眠相关操作。当该节点平均负载计算值大于上限阈值Wh时,说明 当前分布式网络整体负载较高,为了实现负载均衡,可转入步骤S108 执行节点唤醒相关操作。

当该节点平均负载计算值大于等于下限阈值Wl且小于等于上限 阈值Wh时,说明当前分布式网络整体负载处于正常范围内,可利用当 前工作的节点均衡地承担网络负载,因此可以不执行任何附加操作。 本领域技术人员可以理解,由于本发明中的方法在分布式网络运行过 程中被周期性地执行以持续实现动态负载均衡和节能目标,因此当该 节点平均负载计算值介于下限阈值Wl和上限阈值Wh之间时,如图2 所示,也可以直接返回步骤S102继续执行,以确定下一周期时刻的 节点平均负载计算值。

(3)S106:休眠步骤,当该节点平均负载计算值低于该下限阈 值的时候,将分布式网络中至少一个节点置于休眠状态。

当该节点平均负载计算值小于下限阈值Wl时,说明当前分布式网 络整体负载较低,本步骤中将至少一个节点置于休眠状态,以节约网 络能源消耗并达到负载平衡。在本发明具体实施方式中,可以采用如 下几种方法来选择要置于休眠状态的节点:

(i)随机方法

在一个具体实施方式中,可采用随机方法来选择要置于休眠状态 的节点。该方法的思想比较简单,也是最容易理解和实现的一种方式, 即当该节点平均负载计算值小于下限阈值Wl时,从分布式网络的所有 节点中随机选择至少一个节点进行休眠。该方法最容易实现,但是由 于随机性较强而不考虑单个节点的负载状态,因此实际适用范围会受 到限制。

(ii)轮询方法

在另一个具体实施方式中,可采用轮询方法来选择要置于休眠状 态的节点。该方法的思想和操作也比较简单,就是预先将分布式网络 中的节点依次编号,然后当该节点平均负载计算值小于下限阈值Wl时,按照编号依次选择至少一个节点进行休眠。该方法简单易行,但 是轮询的方式不适合处理节点间负载差异较大的情况。

(iii)最小负载方法

在另一个具体实施方式中,可采用最小负载方法来选择要置于休 眠状态的节点。该方法的思想是,当该节点平均负载计算值小于下限 阈值Wl时,对分布式网络中所有节点的负载值排序,然后从中选择当 前负载值最小的至少一个节点,将其休眠。该方法总是优先将负载最 小的节点置于休眠状态,提升了负载均衡性能,但是无法避免节点频 繁休眠和频繁唤醒而引起的系统抖动,尤其在分布式网络负载变化明 显的情况下这种抖动也比较显著。

(iv)最小抖动负载积方法

在分布式网络中,节点的变动(休眠或唤醒)会产生大量的I/O 操作,此操作往往在后台运行,如果同一节点多次变动,会严重影响 网络整体性能,故必须尽量减小上述抖动现象的影响。在另一个具体 实施方式中,为了缓解节点频繁休眠和频繁唤醒而引起的系统抖动现 象,作为本发明其中一个发明点,在最小负载方法的基础上进一步考 虑各节点在当前时刻与上一时刻之间的负载变化,形成本实施方式所 采用的最小抖动负载积方法来选择要置于休眠状态的节点。

具体地,如图3所示,采用的最小抖动负载积方法的步骤S106 进一步包括:

步骤301:计算当前每个节点的负载值Load(ti),其中i=1,2,……, n;n表示所述分布式网络的节点总数。

步骤302:计算上一时刻每个节点的负载值Load((t-1)i);

步骤303:计算每个节点当前时刻负载值与上一时刻负载值的差 值Load(ti)-Load((t-1)i);

步骤304:计算一抖动系数其中显然, h值越大表示该节点负载相对稳定状况越差;

步骤305:计算考虑抖动后的每个节点当前负载值 Load(ti)'=h×Load(ti);

步骤306:选择考虑抖动后节点当前负载值最小的至少一个节点; 以及

步骤307:将所选择的至少一个节点置于休眠状态。

由上述流程可见,即使某节点负载较小但是负载变化较大,也会 由于抖动系数较大而不会被选择至于休眠状态,这样在一定程度上避 免了频繁调度某一节点对系统稳定性造成的影响,优化的节点选择也 提高了系统的负载均衡性。

在上述步骤301和步骤302中,可以采用下述方式之一来计算在 某时刻的节点i的负载值:

方式1:Load(ti)=p×Lcpu(ti)2+(1-p)×Lmem(ti)2;

方式2:Load(ti)=p×Lcpu(ti)+(1-p)×Lmem(ti).

可以看到,虽然上述两种方式均为常用的向量求平均方法,但是 两种方式中均同时考虑了CPU负载和内存负载两方面因素,客观反 映了分布式网络节各节点的实际负载状态。

下面,通过表1来对比一下上述3种休眠节点选择方法的异同:

表1

(4)S108:唤醒步骤,当该节点平均负载计算值高于该上限阈 值的时候,将分布式网络中至少一个已休眠节点唤醒。

当该节点平均负载计算值大于上限阈值Wh时,说明当前分布式网 络整体负载较高,本步骤中将至少一个已处于休眠状态的节点唤醒, 以实现网络负载平衡。

在一种特殊情况下,当该节点平均负载计算值大于上限阈值Wh时 网络中所有节点都处于工作状态而不存在休眠节点,此时在步骤S108 中可启动至少一个新节点以实现网络负载平衡。

在本发明另一个实施例中,相应提供了一种在分布式网络中实现 动态负载均衡的系统100。如图4所示,该系统100包括如下单元:

(1)节点平均负载计算值确定单元102,用于确定分布式网络 的节点平均负载计算值;

(2)阈值比较单元104,用于将该节点平均负载计算值与一下 限阈值和一上限阈值分别进行比较;

(3)休眠单元106,用于当该节点平均负载计算值低于该下限 阈值的时候,将分布式网络中至少一个节点置于休眠状态;以及

(4)唤醒单元108,用于当该节点平均负载计算值高于该上限 阈值的时候,将分布式网络中至少一个已休眠节点唤醒。

本发明实施例中的上述系统在网络负载较低时可使部分空闲节 点节点休眠,在网络负载较高时再将已休眠的节点唤醒,这样很好地 均衡了网络节点间的负载,同时提高了分布式网络的能耗效率,降低 了网络系统能源消耗。而且,本发明方法在考虑分布式网络负载状况 时将节点平均负载计算值作为考虑因素,这相对于现有技术中普遍采 用负载最高节点作为考虑因素的方式更加关注了分布式网络的整体 负载状态,在达到节约网络能源的基础上进一步改善了分布式网络的 整体负载均衡。

下面,结合各附图来详细介绍上述系统中的各单元功能。

(1)节点平均负载计算值确定单元102,用于确定分布式网络 的节点平均负载计算值。

节点平均负载计算值确定单元102以分布式网络的节点平均负 载计算值作为衡量参数,来评价分布式网络的负载状况。具体地,作 为计算的基础数据,可通过分布式网络中的已有负载测量设备,例如 功率仪等,以一定时间间隔周期性地采集分布式网络中各节点的负载 信息,节点平均负载计算值确定单元102基于这些负载信息确定该节 点平均负载计算值。

节点平均负载计算值确定单元102同时考虑节点的CPU负载和 内存负载两方面,这样更加客观地反映了网络节点的实际负载状态, 提高了本系统运行的效率和准确性。具体地,本发明实施例中采用二 维向量来表示节点负载,设置节点的负载向量为L=<Lcpu,Lmem>,其中 Lcpu表示CPU负载,Lmem表示内存负载。为了衡量不同应用中CPU负 载和内存负载的不同影响,同时引入一变量参数p来表示节点负载中 CPU负载所占权重,0<p<1。其中,本领域技术人员可以根据系统 的不同应用场景来设置p的取值。

在一个具体实施方式中,节点平均负载计算值确定单元102可以 用下述方式之一来直接计算当前时刻t的节点平均负载计算值 Load(t):

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。

在另一个具体实施方式中,节点平均负载计算值确定单元102采 用了创新的动态负反馈负载计算方法来确定分布式网络的节点平均 负载计算值。具体地,如图5所示,节点平均负载计算值确单元102 进一步包括如下单元:

第一单元:用于计算当前时刻t的节点平均负载Load(t);

第二单元:用于计算上一时刻t-1的节点平均负载Load(t-1);

第三单元:用于计算当前时刻的节点平均负载与上一时刻的节点 平均负载的差值Load(t)-Load(t-1);以及

第四单元:用于基于当前时刻的节点平均负载Load(t)、当前时刻 的节点平均负载与上一时刻的节点平均负载的差值 Load(t)-Load(t-1),来共同确定分布式网络当前的节点平均负载计算 值Load(t)'。

在一具体实施方式中,第一单元或第二单元可以采用下述方式之 一来计算节点平均负载:

方式1:Load(t)=Σi=1np×Lcpu(ti)2+(1-p)×Lmem(ti)2n;

方式2:Load(t)=Σi=1np×Lcpu(ti)+(1-p)×Lmem(ti)n,

其中,表示节点i在时刻t的CPU负载,表示节点i 在时刻t的内存负载,其中i=1,2,……,n;n表示所述分布式网络 的节点总数。

在一具体实施方式中,第四单元可以采用如下方式之一来确定所 述分布式网络当前的节点平均负载计算值Load(t)':

方式1:Load(t)=Load(t)-Load(t)-Load(t-1)m,其中m是大于等 于3的奇数。在这种方式1中,当当前时刻的节点平均负载比前一时 刻增加时,Load(t)-Load(t-1)为正数,反之为负数,经过开m次方的 调整之后作为负反馈机制的调节量,在直接得到的当前时刻节点平均 负载基础上减去该调节量,这样利用负反馈机制一定程度上抵消了有 可能的负载剧烈变化。本领域技术人员可以根据分布式网络的实际运 行状况来确定m的大小。

方式2:Load(t)'=Load(t)-k×(Load(t)-Load(t-1)),其中k是大于0 的反馈系数。在这种方式2中,当当前时刻的节点平均负载比前一时 刻增加时,Load(t)-Load(t-1)为正数,反之为负数,经过与反馈系数 k的相乘之后作为负反馈机制的调节量,在直接得到的当前时刻节点 平均负载基础上减去该调节量,这样利用负反馈机制一定程度上抵消 了有可能的负载剧烈变化。本领域技术人员可以根据分布式网络的实 际运行状况来确定反馈系数k的大小,k值越大负反馈作用越强。

方式3:Load(t)=Load(t)/(1+Load(t)-Load(t-1)m),其中m是大于 等于3的奇数。在这种方式3中,当当前时刻的节点平均负载比前一 时刻增加时,Load(t)-Load(t-1)为正数,反之为负数,经过开m次方 再与1相加之后作为负反馈机制的调节量,在直接得到的当前时刻节 点平均负载基础上除以该调节量,这样利用负反馈机制一定程度上抵 消了有可能的负载剧烈变化。本领域技术人员可以根据分布式网络的 实际运行状况来确定m的大小。

本领域技术人员可以理解,上述基于动态负反馈机制的节点平均 负载计算值确定单元不仅可以作为本发明中实现动态负载平衡系统 的一个组成单元,也可以作为独立的装置/设备在分布式网络中实施。

(2)阈值比较单元104,用于将该节点平均负载计算值与一下 限阈值和一上限阈值分别进行比较。

节点平均负载计算值确定单元102确定了节点平均负载计算值 后,阈值比较单元104可将其与预设的上限阈值Wh、下限阈值Wl分别 进行比较。本领域技术人员可以根据分布式网络运行的历史记录和经 验等来设定节点平均负载的该上限阈值和下限阈值。

(3)休眠单元106,用于当该节点平均负载计算值低于该下限 阈值的时候,将分布式网络中至少一个节点置于休眠状态。

当该节点平均负载计算值小于下限阈值Wl时,说明当前分布式网 络整体负载较低,休眠单元106将至少一个节点置于休眠状态,以节 约网络能源消耗并达到负载平衡。在本发明具体实施方式中,休眠单 元106可以采用如下几种方法来选择要置于休眠状态的节点:

(i)随机方法

在一个具体实施方式中,当该节点平均负载计算值小于下限阈值 Wl时,休眠单元106从分布式网络的所有节点中随机选择至少一个节 点进行休眠。

(ii)轮询方法

在另一个具体实施方式中,休眠单元106预先将分布式网络中的 节点依次编号,然后当该节点平均负载计算值小于下限阈值Wl时,按 照编号依次选择至少一个节点进行休眠。

(iii)最小负载方法

在另一个具体实施方式中,当该节点平均负载计算值小于下限阈 值Wl时,休眠单元106对分布式网络中所有节点的负载值排序,然后 从中选择当前负载值最小的至少一个节点,将其休眠。

(iv)最小抖动负载积方法

在另一个具体实施方式中,休眠单元106采用最小抖动负载积方 法来选择要置于休眠状态的节点。具体地,如图6所示,该休眠单元 106进一步包括:

第五单元:用于计算当前每个节点的负载值Load(ti);

第六单元:用于计算上一时刻每个节点的负载值Load((t-1)i);

第七单元:用于计算每个节点当前时刻负载值与上一时刻负载值 的差值Load(ti)-Load((t-1)i);

第八单元:用于计算一抖动系数

第九单元:用于计算考虑抖动后的每个节点当前负载值 Load(ti)'=h×Load(ti);

第十单元:用于选择考虑抖动后节点当前负载值最小的至少一个 节点;以及

第十一单元:用于将所选择的至少一个节点置于休眠状态。

在一个具体实施方式中,第五单元或者第六单元可以采用下述方 式之一来计算节点i的负载值:

方式1:Load(ti)=p×Lcpu(ti)2+(1-p)×Lmem(ti)2;

方式2:Load(ti)=p×Lcpu(ti)+(1-p)×Lmem(ti).

(4)唤醒单元108,用于当该节点平均负载计算值高于该上限 阈值的时候,将分布式网络中至少一个已休眠节点唤醒。

当该节点平均负载计算值大于上限阈值Wh时,说明当前分布式网 络整体负载较高,唤醒单元108将至少一个已处于休眠状态的节点唤 醒,以实现网络负载平衡。

在一种特殊情况下,当该节点平均负载计算值大于上限阈值Wh时 网络中所有节点都处于工作状态而不存在休眠节点,此时唤醒单元 108可启动至少一个新节点以实现网络负载平衡。

下面,通过一个具体应用领域中的实施例来进一步介绍本发明的 技术方案和技术效果。

以9个节点构建的一Hadoop集群为实施实例,其中无论主节点 或从节点,每个节点的硬件配置均相同,均为Pentium双核处理器, 512M内存,采用Ubuntu9.10系统。Hadoop版本为Hadoop0.21。本 发明的方法或系统均可基于各节点对应的功率仪所测量数据来进行 分布式网络的动态负载平衡调节。

测试选用Hadoop计算例子WordCount,输入数据分别为50M、 100M、500M、1G、2G,程序运行选择大规模数据,按照设定周期 监控集群资源,在休眠节点的选取过程中分别使用随机算法、轮询算 法、最小负载算法和本发明中介绍的最小抖动负载积方法。

为了衡量各方法对于休眠节点选择的合理性,可以通过调度后负 载均衡的程度来衡量。这里,本实施例采用节点负载方差作为衡量参 数,进行5组测试取平均值,其中归一化之后的方差数据如表2所示:

表2

从结果可以看到,最小抖动负载积方法在实际运行过程中,由于 每次选取的节点抖动比较小,从而使得集群节点负载值方差较小,系 统负载更加均衡。

同时可利用集群能耗模型并统计节点空闲休眠时间,计算出一段 时间内集群的平均利用率和总能耗。为了度量能耗,采用线性能耗模 型:

E=P(u)×Tall=[Pmin+(Pmax-Pmin)×u]×Tall

其中,Pmin是系统空闲时的能耗,Pmax是系统满载时的能耗,u是 服务器Tall时间内的平均利用率,Tall是服务器开始到测试结束开机总 时间,Tr是节点工作时间,Ts是节点空闲时间,因此Tall=Tr+Ts。根据 上述公式,由于总时间Tall相同,Pmin,Pmax均为常数,故系统能耗和 平均利用率基本成正比关系。

设系统空载能耗为Pmin=200W,Pmax为300W,同样完成5组数 据的测试,对比使用本发明中的动态均衡负载方案和未采用本发明方 案情况下的系统能耗如表3所示:

表3

根据上述验证实施例可以进一步看出,本发明的方法和系统在网 络负载较低时休眠部分节点并在网络负载较高时将其唤醒,很好地实 现了网络节点间的负载平衡,同时提高了分布式网络的能耗效率,降 低了网络系统能源消耗。而且,本发明的系统在考虑分布式网络负载 状况时将节点平均负载计算值作为考虑因素,这相对于现有技术中普 遍采用负载最高节点作为考虑因素的方式更加关注了分布式网络的 整体负载状态,在达到节约网络能源的基础上进一步改善了分布式网 络的整体负载均衡。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描 述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和 电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行, 取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每 个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不 应认为超出本发明的范围。

所述功能如果以软件功能单元的形式实现并作为独立的产品销 售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的 理解,本发明的技术方案本质上或者说对原有技术做出贡献的部分或 者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件 产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实 施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移 动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器 (RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程 序代码的介质。

以上实施方式仅用于说明本发明,而并非对本发明的限制,有关 技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下, 还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明 的范畴,本发明的专利保护范围应由权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号