CN103916327A - 一种hp2p网络负载平衡的方法 - Google Patents
一种hp2p网络负载平衡的方法 Download PDFInfo
- Publication number
- CN103916327A CN103916327A CN201410106285.7A CN201410106285A CN103916327A CN 103916327 A CN103916327 A CN 103916327A CN 201410106285 A CN201410106285 A CN 201410106285A CN 103916327 A CN103916327 A CN 103916327A
- Authority
- CN
- China
- Prior art keywords
- group
- load
- node
- network
- hp2p
- 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
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种HP2P网络负载平衡的方法,其包括,HP2P网络群间负载平衡的方法,通过群分裂以及群在网络地址空间的移动来实现群之间的负载转移,并通过新节点加入负载较大的群诱导群发生分裂和合并从而使得负载较大的地址空间群数目较多,负载较小的地址空间群数目较少;HP2P网络群内负载平衡的方法,通过超级节点对群内负载有效的调度,使群内负载率较低的节点找到群内负载率较高的节点。
Description
技术领域
本发明属于互联网计算技术领域,主要涉及P2P网络,尤其涉及混合层次化P2P网络(HP2P),具体是一种HP2P网络的负载平衡方法。本发明可以应用于各种基于HP2P的网络软件。
背景技术
近几年来,随着点对点网络技术的迅速发展,基于点对点(Peer-to-Peer,简称P2P)网络技术的软件受到了大量互联网用户的青睐。现在一些国内比较流行的网络软件比如迅雷、腾讯QQ、PPTV、酷狗音乐等都使用了P2P网络技术。在P2P网络软件中,由于用户对资源需求的不均衡性以及网络中计算机能力的异构性,使得P2P网络中一直存在节点(P2P网络中的计算机)负载不平衡的现象。而近些年来随着P2P网络软件用户的快速增长,网络中节点负载不平衡的现象愈发明显,进而引起请求延时、网络拥塞等问题,严重影响了P2P网络的整体性能。
当前,对于P2P网络负载平衡问题的研究主要集中在结构化P2P网络领域,并且已经出现了一些比较有代表性的解决该问题的方法。比如虚拟服务器方法(Virtual Server)、多哈希选择方法(Power of Two Choices)、地址空间平衡方法(Address-Space Balancing)、存储文件平衡方法(Item Balancing)。其中:
虚拟服务器方法:在P2P网络中,每个物理节点虚拟化为多个虚拟服务器,每个虚拟服务器单独维护一段地址空间。每个虚拟服务器都拥有自己独立的路由表和数据对象,当需要对数据对象进行定位时,定位的过程是在虚拟服务器上发起的,而不是在实际的节点之上。当节点出现负载过重或者过轻的时候,以虚拟服务器为最小的负载迁移单位。通过一个物理节点上的虚拟节点“离开网络”,同时在另一个物理节点中,“离开”的虚拟节点重新加入网络,最后接收该虚拟节点负责的数据对象,完成负载的迁移。由于每个虚拟服务器都需要维护自身的路由表,所以这相当于一个物理节点需要维护多个路由表,这将浪费大量带宽。同时,由于一个物理节点管理了P2P网络中的多个虚拟服务器,所以当一个物理节点加入或离开网络时,相当于有多个虚拟服务器加入或离开网络,这将大大增加网络的抖动,这将对稳定性本就较差的结构化P2P网络造成致命的影响。
多哈希选择方法:该方法假设有d>=2个众所周知的哈希函数h1(),...,hd()。当结构化P2P网络中一个节点需要向网络中增添一个资源x时,该节点将根据d个哈希函数为资源x计算d个哈希值h1(x),...,hd(x)。而后该节点将向负责在结构化P2P网络中维护这d个哈希值的节点询问它们当前的负载情况,并从这d个节点中选择一个负载最轻的节点A负责维护资源x的索引,同时另外d-1个节点将存放一个指向节点A的指针。同时网络中的每个节点都具有一个负载触发器,当一个节点的负载过大时,触发器事件将会被触发。触发事件选择要进行迁移的资源索引,然后把这些资源以重新加入网络的方式把资源索引转移到其他节点上。
地址空间平衡方法:该方法假设网络中的每个节点在结构化P2P网络中具有O(logN)个潜在的ID,但是一个时间只有一个ID处于激活状态。节点根据当前整个网络的负载情况来确定自己ID来完成负载之间的迁移,从而实现P2P网络的负载平衡。
存储文件平衡方法:该方法中li表示一个节点i的负载,并且确定一个常数ε(0<ε<1)。节点i随机的在网络中选择另一个节点j,如果它们的负载满足比较式lj<ε·li,那么节点j就需要根据改变自身地址空间的方式实现负载迁移。若i=j+1,表明i是j的后继节点,这时节点j增加他的地址空间,使i的部分负载转到j。若i≠j+1,节点j就把自己的地址空间转移到i-1和i之间,把原来的负载就交给j+1负责,然后节点j获取部分节点i的负载。对于基于洪泛查询的非结构化P2P网络,由于每个节点只维护自身所发布的资源,所以无法调节每个节点所维护的资源数目。现今对于非结构P2P网络负载平衡的研究主要集中于如何在网络中设计合理缓存机制以及如何在节点频繁加入和退出网络的情况下,仍能保证整个非结构化P2P网络保持随机图的特性。
基于洪泛的非结构P2P网络和基于分布式哈希表(DHT)的结构化P2P网络是当前P2P应用领域比较流行的P2P网络。其中,非结构化P2P网络结构较为简单,容易实现,且稳定性很高,但是其网络负载高,可扩展性较差;结构化P2P网路网络负载小,查询效率高,但是其稳定性较差。混合多层P2P网络(Hybrid Hierarchical P2P Network,简称HP2P)结合了结构化P2P和非结构化P2P各自的优点,得到了一种稳定高、查询效率高、可扩展较好的新型P2P网络。
在HP2P中,网络中的节点首先按照群(Cluster)的方式进行组织,群的内部使用非结构化P2P网络中的洪泛方式进行消息传递。群内由少量超级节点和大量普通节点组成。群之间使用改进的Chord协议组织成一个结构化P2P网络。每个群在Chord上作为一个虚拟的节点存在,虚拟节点的路由表由群中的若干个超级节点共同维护。而群内普通节点与上层Chord网络的通信都需要通过这些超级节点帮忙转发。
由于HP2P网络拓扑结构的特殊性,所以当前的结构化P2P网络的负载平衡方法都无法解决HP2P网络群间负载平衡的问题。同时由于群内节点能力的异构性以及需要维护网络中其它节点发布的元数据(资源的索引),所以群内网络的负载平衡问题与传统的非结构化P2P网络负载平衡问题有很大不同。
发明内容
为了解决上述问题,本发明提供一种HP2P网络负载平衡的方法,其特征在于:其包括,
HP2P网络群间负载平衡的方法,通过群分裂以及群在网络地址空间的移动来实现群之间的负载转移,并通过新节点加入负载较大的群诱导群发生分裂和合并,使负载较大的地址空间群数目增多,负载较小的地址空间群数目减少,其中负载定义为该群中节点单位时间所需要处理消息的平均数目;
HP2P网络群内负载平衡的方法,通过超级节点对群内负载有效的调度,使群内负载率较低的节点找到群内负载率较高的节点,其中根据HP2P网络特性,负载近似定义为群内节点所需要维护的元数据数目,负载率定义为负载与节点能力的比值,且所述元数据为资源的索引。
在上述技术问题的基础上,所述HP2P网络群间负载平衡的方法包括:
步骤(A1)群A的超级节点S随机地向周围k·log2N个群发送群负载请求消息,获取所述k·log2N个群的负载信息,并通过计算这k·log2N个群的负载平均值来估算出当前整个HP2P网络的群平均负载Loadavg,其中k是一个在区间[1,N/log2N]取值的整数,N为网络中群的数目;
步骤(A2)如果群A当前负载Load>γ·Loadavg,且群分裂成的两个小群中节点数目均大于HP2P网络群节点数目下限,则将该群分裂成两个群,其中γ是一个大于1的实数,HP2P网络群间负载平衡方法本次执行结束;否则转至步骤(A3);
步骤(A3)构建HP2P网络的Chord环,群A向其前驱群和后继群发送负载请求消息,从而获取前驱群和后继群的当前负载情况,其中前驱群为HP2P网络Chord环中离群A最近的前一个群,后继群为HP2P网络Chord环中离群A最近的后一个群;
步骤(A4)如果群A当前负载Load>Loadavg则转至步骤(A5),如果Load<Loadavg则转至步骤(A8);否则HP2P网络群间负载平衡方法本次执行结束;
步骤(A5)如果群A负载Load≥Loadlight/(1-2·β),则表示群A能将部分负载转移到邻居群从而将自身负载降低β,其中β是一个在区间(0,0.5)取值的实数,并转至步骤(A6);否则转至步骤(A8);其中Loadlight为该群的前驱群和后继群中负载较小的群的负载;
步骤(A6)如果Loadlight为群A的前驱群的负载,则群A通知其前驱群沿着Chord环顺时针移动,移动的地址空间长度为(Load-Loadlight)×Length/(2×Load),并将相应的元数据转移到前驱群中,HP2P网络群间负载平衡方法本次执行结束,其中Length为群A在Chord环中所维护的地址空间长度;否则转至步骤(A7);
步骤(A7)Loadlight为群A的后继群的负载,则该群沿着Chord环逆时针移动,移动的地址空间长度为(Load-Loadlight)×Length/(2×Load),并将相应的元数据转移到后继群中,而后HP2P网络群间负载平衡方法本次执行结束;
步骤(A8)如果Load≤(1-2·β)·Loadheavy,则表示群A能从邻居群获取部分负载从而将邻居群负载下降β,其中Loadheavy为该群的前驱群和后继群中负载较重群的负载,β是一个在区间(0,0.5)取值的实数,转至步骤(A9);否则HP2P网络群间负载平衡方法本次执行结束;
步骤(A9)如果Loadheavy为群A的前驱群的负载,则群A通知其前驱群沿着Chord环逆时针移动,移动的地址空间长度为(Loadheavy-Load)×Lengthpredecessor/(2×Loadheavy),并从前驱群获取相应的元数据,其中Lengthpredecessor为前驱群在Chord环中所维护的地址空间长度,而后HP2P网络群间负载平衡方法本次执行结束;否则转至步骤(A10);
步骤(A10)Loadheavy为群A的后继群的负载,则群A沿着Chord环顺时针移动,移动的地址空间长度为(Loadheavy-Load)×Lengthsuccessor/(2×Loadheavy),并从后继群获取相应的元数据,其中Lengthsuccessor为后继群在Chord环中所维护的地址空间长度,此时HP2P网络群间负载平衡方法本次执行结束。
在上述技术问题的基础上,在节点加入网络过程中,节点从k·log2N个群中选择一个负载最大群进行加入,其中k与步骤(A1)中所涉及的参数k为同一参数,N为HP2P网络中群的数目;从HP2P网络群间负载平衡方法步骤(A1)可知,每个群的超级节点都具有其它k·log2N个群的负载信息,所以超级节点可以从k·log2N群中选择负载最大的群用于新节点加入的过程并不会带来其它额外的开销。
在上述技术问题的基础上,所述HP2P网络群内负载平衡的方法包括普通节点群内负载平衡方法与超级节点群内负载平衡方法。
HP2P网络群内负载平衡的方法中的超级节点需要维护一个哈希表如图2和一个有序链表如图3。其中,有序链表具有五个数据项分别为负载率、需移动元数据量、消息时间戳、节点ID、指向链表下一个节点的指针,哈希表的键为节点的ID,值有两个数据项分别为消息的时间戳和节点ID所对应链表节点的地址。
在上述技术问题的基础上,所述群内普通节点负载平衡方法包括:
步骤(B1)普通节点从超级节点处获取该群当前的平均负载率
步骤(B2)如果节点的负载率则认为节点负载率较高,此时该节点将向群中超级节点通报自身的负载率以及所需要向群内其它节点转移的元数据数目为然后普通节点群内负载平衡方法本次执行结束,其中capacity为该节点的能力,α为区间(1,2)之间的一个实数;否则转至步骤(B3)。
步骤(B3)如果节点的负载率则认为该节点负载率较低;此时,该节点向群中超级节点通报自身的负载率以及可以从群内其它节点接收的最大元数据数目其中capacity为该节点的能力,普通节点群内负载平衡方法本次执行结束。
在上述技术问题的基础上,所述超级节点平衡方法包括:超级节点建立哈希列表与有序链表,所述哈希表的键为节点的ID,值有两个项分别为消息的时间戳和节点ID所对应链表节点的地址,所述有序链表包括分别为负载率、需移动元数据量、消息时间戳、节点ID、指向链表下一个节点的指针五个数据项;当超级节点S接收到群内负载率较高的节点A请求转移元数据的消息时:步骤(C1)如果节点A负载率较高的消息已经存在于哈希表中且时间戳没有过期,则更新哈希表中的相应的时间戳以及有序链表中节点A的负载率、需要移动数据量,并在有序链表中根据节点A当前的负载率按照负载率从高到低的顺序将该链节点移动到有序链表的合适位置,超级节点群内负载平衡方法本次执行结束;否则转至步骤(C2);
步骤(C2)如果节点A负载率较高的消息已经存在于哈希表中但是时间戳已经过期,则首先在哈希表中删除这条记录,并在哈希表以及有序链表的相应位置创建一条新记录,超级节点群内负载平衡方法本次执行结束;否则转至步骤(C3);
步骤(C3)由于哈希表中不存在节点A所对应的记录,所以在哈希表以及有序链表的相应位置创建这一条记录,超级节点群内负载平衡方法本次执行结束;
当超级节点S接收到群内负载率较低的节点B的请求转移元数据的消息时:
步骤(D1)超级节点S获取节点B所能接收的元数据数目N;
步骤(D2)若有序链表不为空,则超级节点S从有序链表中取出第一个节点C,获取节点C的节点负载率rateC和所需要转移的元数据数目M,转至步骤(D3);否则说明本群暂时没有负载率过高的节点,超级节点群内负载平衡方法本次执行结束;
步骤(D3)如果M>N,则超级节点通知节点C将N个元数据转移给节点B,并更新节点C的负载率为 如果 则根据节点C的最新负载率更新其在有序链表中的位置,否则将节点C在哈希表和有序链表中删除,其中α为区间(1,2)之间的一个实数,超级节点群内负载平衡方法本次执行结束;否则转至步骤(D4);
步骤(D4)超级节点通知节点C将M个元数据转移给节点B,并将节点C从哈希表和有序链表中删除,将N更新为N=N-M,并转至步骤(D2)。
与现有技术相比,本发明解决了HP2P网络群间和群内负载不平衡的技术问。
附图说明
图1HP2P网络负载平衡方法整体流程图;
图2HP2P网络群内负载平衡方法中超级节点所维护的哈希表;
图3HP2P网络群内负载平衡方法中超级节点所维护的有序链表;
图4HP2P网络群间负载平衡方法流程图;
图5HP2P网络群内负载平衡方法中普通节点的流程图;
图6HP2P网络群内负载平衡方法中超级节点的流程图;
图7不同网络规模下最大负载群的负载与平均负载比值;
图8不同网络规模下的群负载相对标准差;
图9不同数目元数据下最大负载群的负载与平均负载比值;
图10不同数目元数据下的群负载相对标准差;
图11不同节点资源请求率下的最大负载群的负载与平均负载比值;
图12不同节点资源请求率下的群负载相对标准差;
图13网络规模保持不变时负载最大群的负载与群平均负载的比值和β、γ的关系;
图14网络规模保持不变时群负载相对标准差和β、γ的关系;
图15网络规模保持不变时群间负载平衡方法中元数据移动量和β、γ的关系;
图16网络规模减小时负载最大群的负载与群平均负载的比值和β、γ的关系;
图17网络规模减小时群负载相对标准差和β、γ的关系;
图18网络规模减小时群间负载平衡方法中元数据移动量和β、γ的关系;
图19网络规模增大时负载最大群的负载与群平均负载的比值和β、γ的关系;
图20网络规模增大时群负载相对标准差和β、γ的关系;
图21网络规模增大时群间负载平衡方法中元数据移动量和β、γ的关系;
图22不同网络规模下群内负载率最大节点的负载率与群内平均负载率比值;
图23不同网络规模下群内负载率相对标准差;
图24不同数目元数据下群内负载率最大节点的负载率与群内平均负载率比值;
图25不同数目元数据下群内负载率相对标准差;
图26群内负载率最大节点的负载率与群内平均负载率的比值与α的关系;
图27群内负载率相对标准差与α的关系;
图28群内负载平衡方法中元数据移动数目与α的关系。
具体实施方式
A.HP2P群间负载平衡方法具体实施方式
参见图4,本发明中HP2P网络群间负载平衡方法具体实现步骤如下:
(A1)群A中超级节点S通过消息夹带的办法从群内普通节点周期性向其发送的保活消息中获取该节点的当前负载,所以超级节点S可以很容易的获取该群内所有节点的当前负载,并以此计算出当前群A的平均负载Load。
(A2)超级节点S随机地向周围k·log2N个群获取这些群的负载Load1,Load2,…,Loadk·log2N。通过计算来估算出整个HP2P网络的群平均负载,其中k可以在区间[1,4]内取值。
(A3)如果Load=Loadavg,则说明群A暂时不需要做任何群间负载平衡操作,HP2P群间负载平衡方法本次执行结束。
(A4)如果Load>γ·Loadavg,且分裂之后的两个群的节点数目大于HP2P网络群内节点数目下限,则根据HP2P网络群分裂理论将群A分裂成两个群A1和A2,HP2P群间负载平衡方法本次执行结束,此处γ可以取2.0;否则转至(A5)。
若原群A在Chord环上所维护的地址空间(ID1,ID2],则群分裂之后,群A1所维护的地址空间为群A2所维护的地址空间为
(A5)群A获取它的前驱群B和后继群C的群负载LoadB和LoadC。如果Load>Loadavg,则转至(A6),否则转至(A8)。
(A6)如果LoadB≥LoadC,且则群A沿Chord环逆时针移动,移动的地址空间长度为其中Length为当前群A所需要维护的地址空间长度,β此处可以取0.25,群A将相应的元数据转移到群C中,HP2P群间负载平衡方法本次执行结束;否则跳至(A7)。
若群A地址空间中的ID为IDA,Chord环的地址空间大小为ChordField,则群A的新ID为 而地址空间为(IDA_NEW,IDA]的元数据将从群A转移到群C。
(A7)如果LoadB<LoadC,且则群A通知群B让其沿Chord环顺时针移动,移动的地址空间长度为其中Length为当前群A所需要维护的地址空间长度,β此处可以取0.25。群A将相应的元数据转移到群B中,HP2P群间负载平衡方法本次执行结束;否则HP2P群间负载平衡方法本次执行结束。
若群B地址空间中的ID为IDB,Chord环的地址空间大小为ChordField,则群B的新ID为 而地址空间在区间(IDB,IDB_NEW]的元数据将从群A转移到群B。
(A8)如果LoadB≥LoadC,且Load≤(1-2·β)·LoadB,则群A通知群B让其沿Chord环逆时针移动,移动的地址空间长度为其中LengthB为群B所需要维护的地址空间长度,β此处可以取0.25。群B将相应的元数据转移到群A中,并转至(A10)。否则转至(A9)。
若群B地址空间中的ID为IDB,Chord环的地址空间大小为ChordField,则群B的新ID为 而地址空间在区间[IDB_NEW,IDB)的元数据将从群B转移到群A。
(A9)如果LoadB≤LoadC,且Load≤(1-2·β)·LoadC,则群A沿Chord环顺时针移动,移动的地址空间长度为其中LengthC为当前群C所需要维护的地址空间长度,此处β可以取0.25,群C将相应的元数据转移到群A中,HP2P群间负载平衡方法本次执行结束;否则HP2P群间负载平衡方法本次执行结束。
若群A地址空间中的ID为IDA,Chord环的地址空间大小为ChordField,则群A的新ID为 而地址空间在区间(IDA,IDA_NEW]的元数据将从群B转移到群A。
同时,当有新节点X想通过群A的超级节点S加入HP2P网络时,超级节点S从Load1,Load2,…,Loadk·log2N中选取负载最大的群Cluster,并通知新节点加入到HP2P网络中的群Cluster中,其中k与实施方式(A2)中所涉及的参数k为同一参数。
B.HP2P群内负载平衡方法具体实施方式
参见图5,本发明中HP2P网络群内负载平衡方法中普通节点的具体实现步骤如下:
(BN1)普通节点N从本群A的超级节点S获取本群的群内节点平均负载率其中超级节点S使用类似于实施方式(A1)中消息夹带的方式获取群内节点平均负载率
(BN2)如果节点N的负载率则认为节点N负载率过高,节点N向超级节点S发送请求转移元数据的消息,该消息中包含节点N的负载率rate、需要转移的元数据数目以及当前时间戳T,其中capacity为节点N的能力,普通节点的群内负载平衡方法本次执行结束;否则转至(BN3)。
(BN3)如果节点N的负载率则认为节点N负载率过低,节点N向超级节点S发送请求获取元数据的消息,该消息中包含节点N的负载率以及节点N可以接收的元数据数目,普通节点的群内负载平衡方法本次执行结束。
参见图6,本发明中HP2P网络群内负载平衡方法中超级节点的具体实现步骤如下:
(BS1)如果超级节点S接收的消息是由群内普通节点A发来的请求转移元数据的消息,获取节点A的当前负载率RateA,所需要转移的元数据数目MA,并转至(BS2);如果该消息是群内普通节点A发来的请求获取元数据的消息,则节点S获取节点A所能接收的元数据数目NA,并跳至(BS5)。
(BS2)如果节点A负载率较高的信息已经存在于哈希表中且时间戳T1没有过期,则将哈希表中节点A对应负载记录的时间戳更新为当前时刻T2。同时将有序链表中节点A的负载率和需要转移的元数据量分别更新为RateA和MA,并在有序链表中根据节点A当前负载率RateA按照负载率从高到低的顺序将节点A移动至有序链表的合适位置,超级节点群内负载平衡方法本次执行结束;否则转至(BS3)。
(BS3)如果节点A负载信息已经存在于哈希表中但时间戳T1已经过期,则在哈希表中删除这条记录,并根据节点A当前的负载率RateA、需要转移的元数据数目MA以及当前时刻时间戳T2在哈希表以及有序链表的相应位置创建一条新记录,超级节点群内负载平衡方法本次执行结束;否则转至(BS4)。
(BS4)哈希表中不存在节点A所对应的负载信息记录,根据节点A当前的负载率RateA、需要转移的元数据数目MA以及当前时刻时间戳T2在哈希表以及有序链表的相应位置创建这一条记录,超级节点群内负载平衡方法本次执行结束。
(BS5)如果链表为空,则说明群内暂时没有负载率较高的节点,超级节点群内负载平衡方法本次执行结束;否则,超级节点S获取有序链表第一个节点B的负载率rate1以及所需要转移的元数据M,并转至(BS6)。
(BS6)如果M≤N,则转至(BS7)。否则,超级节点S通知节点A从节点B处获取N个元数据,同时节点B的负载率rate1修改为M的值改为M=M-N;若此时则根据rate1更新节点B在有序链表中的位置,否则在哈希表和有序链表中将节点B的负载信息删除;最后超级节点群内负载平衡方法本次执行结束。
(BS7)超级节点S通知节点A从节点B处获取M个元数据,同时将节点B从哈希表和有序链表中删除,将N值改为N=N-M,重新转至(BS5)。
以上为HP2P网络负载平衡方法的具体实施方式。
本发明的效果可以通过以下的仿真进一步的说明
1.仿真内容
选用PEERSIM仿真软件对本发明的负载平衡效果以及参数取值进行仿真。每次试验重复20次,实验结果为平均值。
对于HP2P网络负载平衡方法的仿真中,我们使用不同的网络配置对本发明进行仿真,以确定本发明是否对不同状况下的HP2P网络都有效果。网络仿真参数如表1所示。
表1HP2P网络负载平衡方法仿真参数设置
2.仿真结果
从附图7~12可以看出,当HP2P网络中加入本发明之后,无论在不同网络规模、网络中具有不同数目资源、不同的资源请求率下,网络中负载最大群的负载与网络平均负载从5倍上下的关系变为2倍左右的关系,同时群负载相对标准差从1.0左右降至0.2上下。所以加入HP2P网络群间负载平衡方法之后,HP2P网络群间的负载均衡度大大提升。
从附图13~21可以看出,当网络规模不断减小或者大体维持不变时,HP2P网络的群负载均衡度和元数据移动数目都主要由参数β的取值决定,且随着β的增大而降低;当β∈[0.4,0.5)时,网络中群负载均衡度随着β的增大而急剧降低,而β∈[0.1,0.2]时,元数据移动量也随着β的增大而快速降低;同时γ取较小的值时,可以使得规模较大且负载较大的群可以通过群分裂的方式快速降低负载,且基本不会引入更多的元数据移动量;所以网络规模不断减小或者大体维持不变时,γ应取2.0,β可以在区间[0.2,0.4]取值。当网络规模迅速扩大时,群负载均衡度整体比较高,所以γ取2.0,β在区间[0.4,0.5)内取值。
从附图22~25可以看出,当HP2P网络中加入本发明之后,无论在不同网络规模、网络中具有不同数目资源下,HP2P网络群内负载率最大节点的负载率是群内平均负载率的4至7倍降至2倍以下。群内负载相对标准差也从0.7至1.1之间降至0.3左右。所以本发明同样很好地提高了HP2P网络群内负载均衡度。
从附图26~28可以看出,群内负载率最高的节点的负载率与群内平均负载率的比值和群内负载率相对标准差都随着参数α的增大而增大,且增长速度随着α的增大而放慢。当网络规模迅速变大时,元数据的移动量远大于另外两种情况,这是由于当有大量元数据加入网络时,整个网络的元数据总体数目增加而且为了让这些新发布的元数据放置到群中的合适的位置,需要额外的元数据转移。当α取1.2时,群内负载率标准差仍然大于0.2,这说明由于群内节点不断地加入和离开网络,群内负载率相对标准差很难控制在0.2之内。所以当α取1.2时,将导致超级节点的哈希表和有序链表中存放大量节点负载信息。所以参数α应在区间[1.4,1.8]内取值,且具体取值可以结合实际对于HP2P网络软件负载平衡的要求程度来决定。
以上仿真实验和数据结果表明,HP2P网络负载平衡方法很好地解决了HP2P网络群间和群内负载不平衡的问题。如将此发明应用到基于HP2P的网络中,必将大大提升基于HP2P的网络软件的性能。
综上所述,仅为本发明之较佳实施例,不以此限定本发明的保护范围,凡依本发明专利范围及说明书内容所作的等效变化与修饰,皆为本发明专利涵盖的范围之内。
Claims (6)
1.一种HP2P网络负载平衡的方法,其特征在于:其包括,
HP2P网络群间负载平衡的方法,通过群分裂以及群在网络地址空间的移动来实现群之间的负载转移,并通过新节点加入负载较大的群诱导群发生分裂和合并,使负载较大的地址空间群数目增多,负载较小的地址空间群数目减少,其中负载定义为该群中节点单位时间所需要处理消息的平均数目;
HP2P网络群内负载平衡的方法,通过超级节点对群内负载有效的调度,使群内负载率较低的节点找到群内负载率较高的节点,其中根据HP2P网络特性,负载近似定义为群内节点所需要维护的元数据数目,负载率定义为负载与节点能力的比值,且所述元数据为资源的索引。
2.如权利要求1所述的一种HP2P网络群间负载平衡的方法,其特征在于:所述HP2P网络群间负载平衡的方法包括:
步骤(A1)群A的超级节点S随机地向周围k·log2N个群发送群负载请求消息,获取所述k·log2N个群的负载信息,并通过计算这k·log2N个群的负载平均值来估算出当前整个HP2P网络的群平均负载Loadavg,其中k是一个在区间[1,N/log2N]取值的整数,N为网络中群的数目;
步骤(A2)若群A当前负载Load>γ·Loadavg,且群分裂成的两个小群中节点数目均大于HP2P网络群节点数目下限,则将该群分裂成两个群,其中γ是一个大于1的实数,HP2P网络群间负载平衡的方法本次执行结束;否则转至步骤(A3);
步骤(A3)构建HP2P网络中Chord环,群A向其前驱群和后继群发送负载请求消息,从而获取前驱群和后继群的当前负载情况,其中前驱群为HP2P网络Chord环中离群A最近的前一个群,后继群为HP2P网络Chord环中离群A最近的后一个群;
步骤(A4)如果群A当前负载Load>Loadavg则转至步骤(A5),如果Load<Loadavg则转至步骤(A8);否则HP2P网络群间负载平衡的方法执行结束;
步骤(A5)如果群A负载Load≥Loadlight/(1-2·β),则将自身负载降低β,其中β是一个在区间(0,0.5)取值的实数,并转至步骤(A6);否则转至步骤(A8);其中Loadlight为该群的前驱群和后继群中负载较小的群的负载;
步骤(A6)如果Loadlight为群A的前驱群的负载,则群A通知其前驱群沿着Chord环顺时针移动,移动的地址空间长度为(Load-Loadlight)×Length/(2×Load),并将相应的元数据转移到前驱群中,HP2P网络群间负载平衡的方法本次执行结束,其中Length为群A在Chord环中所维护的地址空间长度;否则转至步骤(A7);
步骤(A7)Loadlight为群A的后继群的负载,则该群沿着Chord环逆时针移动,移动的地址空间长度为(Load-Loadlight)×Length/(2×Load),并将相应的元数据转移到后继群中,而后HP2P网络群间负载平衡的方法本次执行结束;
步骤(A8)如果Load≤(1-2·β)·Loadheavy,并转至步骤(A9);其中Loadheavy为该群的前驱群和后继群中负载较重群的负载,β是一个在区间(0,0.5)取值的实数,否则HP2P网络群间负载平衡方法执行结束;
步骤(A9)如果Loadheavy为群A的前驱群的负载,则群A通知其前驱群沿着Chord环逆时针移动,移动的地址空间长度为(Loadheavy-Load)×Lengthpredecessor/(2×Loadheavy),并从前驱群获取相应的元数据,其中Lengthpredecessor为前驱群在Chord环中所维护的地址空间长度,而后HP2P网络群间负载平衡方法本次执行结束;否则转至步骤(A10);
步骤(A10)Loadheavy为群A的后继群的负载,则群A沿着Chord环顺时针移动,移动的地址空间长度为(Loadheavy-Load)×Lengthsuccessor/(2×Loadheavy),并从后继群获取相应的元数据,其中Lengthsuccessor为后继群在Chord环中所维护的地址空间长度,此时HP2P网络群间负载平衡方法执行结束。
3.如权利要求2所述的一种HP2P网络群间负载平衡的方法,其特征在于:为了进一步HP2P网络群间负载的均衡性,在节点加入网络过程中,节点从k·log2N个群中选择一个负载最大群进行加入,其中k与步骤(A1)中所涉及的参数k为同一参数,N为HP2P网络中群的数目。
4.如权利要求1所述的一种HP2P网络负载平衡的方法,其特征在于:所述HP2P网络群内负载平衡的方法包括普通节点群内负载平衡方法与超级节点群内负载平衡方法。
5.如权利要求4所述的一种HP2P网络群内负载平衡的方法,其特征在于:所述普通节点群内负载平衡方法包括:
步骤(B1)普通节点从超级节点处获取该群当前的平均负载率
步骤(B2)如果节点的负载率则认为节点负载率较高,此时该节点将向群中超级节点通报自身的负载率以及所需要向群内其它节点转移的元数据数目为然后普通节点群内负载平衡方法本次执行结束,其中capacity为该节点的能力,α为区间(1,2)之间的一个实数;否则转至步骤(B3);
步骤(B3)如果节点的负载率则认为该节点负载率较低;此时,该节点向群中超级节点通报自身的负载率以及可以从群内其它节点接收的最大元数据数目其中capacity为该节点的能力,普通节点群内负载平衡方法本次执行结束。
6.如权利要求4所述的一种HP2P网络群内负载平衡的方法,其特征在于:所述超级节点平衡方法包括:超级节点需要建立哈希列表与有序链表,所述哈希表的键为节点的ID,值有两个项分别为消息的时间戳和节点ID所对应链表节点的地址,所述有序链表包括分别为负载率、需移动元数据量、消息时间戳、节点ID、指向链表下一个节点的指针五个数据项;当超级节点S接收到群内负载率较高的节点A的请求转移元数据的消息时:
步骤(C1)如果节点A负载率较高的消息已经存在于哈希表中且时间戳没有过期,则更新哈希表中的相应的时间戳以及有序链表中节点A的负载率、需要移动数据量,并在有序链表中根据节点A当前的负载率按照负载率从高到低的顺序将该链节点移动到有序链表的合适位置,超级节点群内负载平衡方法本次执行结束;否则转至步骤(C2);
步骤(C2)如果节点A负载率较高的消息已经存在于哈希表中但是时间戳已经过期,则首先在哈希表中删除这条记录,并在哈希表以及有序链表的相应位置创建一条新记录,超级节点群内负载平衡方法本次执行结束;否则转至步骤(C3);
步骤(C3)由于在哈希表中不存在节点A所对应的记录,所以在哈希表以及有序链表的相应位置创建这一条记录,超级节点群内负载平衡方法本次执行结束;
当超级节点S接收到群内负载率较低的节点B的请求转移元数据的消息时:
步骤(D1)超级节点S获取节点B所能接收的元数据数目N;
步骤(D2)若有序链表不为空,则超级节点S从有序链表中取出第一个节点C,获取节点C的节点负载率rateC和所需要转移的元数据数目M,转至步骤(D3);否则超级节点群内负载平衡方法执行结束;
步骤(D3)如果M>N,则超级节点通知节点C将N个元数据转移给节点B,并更新节点C的负载率为M的值修改为M=M-N,如果则根据节点C的最新负载率更新其在有序链表中的位置,否则将节点C在哈希表和有序链表中删除,超级节点群内负载平衡方法本次执行结束;否则转至步骤(D4);
步骤(D4)超级节点通知节点C将M个元数据转移给节点B,并将节点C从哈希表和有序链表中删除,将N更新为N=N-M,并转至步骤(D2)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410106285.7A CN103916327B (zh) | 2014-03-21 | 2014-03-21 | 一种hp2p网络负载平衡的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410106285.7A CN103916327B (zh) | 2014-03-21 | 2014-03-21 | 一种hp2p网络负载平衡的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103916327A true CN103916327A (zh) | 2014-07-09 |
CN103916327B CN103916327B (zh) | 2017-02-08 |
Family
ID=51041737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410106285.7A Active CN103916327B (zh) | 2014-03-21 | 2014-03-21 | 一种hp2p网络负载平衡的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103916327B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612980A (zh) * | 2017-08-28 | 2018-01-19 | 西安电子科技大学 | 一种结构化p2p网络中可调节且可靠的一致性维护方法 |
CN108254025A (zh) * | 2018-01-25 | 2018-07-06 | 曹凯 | 一种全自动碳基微生物菌肥连续化生产系统 |
CN108599975A (zh) * | 2018-01-31 | 2018-09-28 | 宋星 | 一种智能楼宇管理系统 |
CN109249815A (zh) * | 2018-10-15 | 2019-01-22 | 深圳市安和威电力科技股份有限公司 | 一种基于afe的高压充电控制系统及控制方法 |
CN109568047A (zh) * | 2018-11-26 | 2019-04-05 | 焦建洪 | 一种心内科智能专用床、控制系统及控制方法 |
CN109667599A (zh) * | 2018-12-28 | 2019-04-23 | 中国水利水电第四工程局有限公司 | 一种隧洞施工用管片卸载器 |
CN110633151A (zh) * | 2019-09-20 | 2019-12-31 | 北京小米移动软件有限公司 | 分布式发布消息集群分区平衡的方法、装置及存储介质 |
CN110838870A (zh) * | 2019-11-14 | 2020-02-25 | 北航(四川)西部国际创新港科技有限公司 | 一种分布式多地面站ads-b数据融合方法 |
-
2014
- 2014-03-21 CN CN201410106285.7A patent/CN103916327B/zh active Active
Non-Patent Citations (3)
Title |
---|
张星: "Hp2p网络群分裂与合并策略研究、仿真与实现", 《中国硕士学位论文全文数据库》 * |
彭卓: "HP2P-混合多层P2P网络结果研究及应用", 《中国优秀硕士学位论文全文数据库》 * |
曹杨: "Hp2p网络中chord层的研究与设计", 《中国硕士学位论文全文数据库》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612980A (zh) * | 2017-08-28 | 2018-01-19 | 西安电子科技大学 | 一种结构化p2p网络中可调节且可靠的一致性维护方法 |
CN107612980B (zh) * | 2017-08-28 | 2020-07-17 | 西安电子科技大学 | 一种结构化p2p网络中可调节且可靠的一致性维护方法 |
CN108254025A (zh) * | 2018-01-25 | 2018-07-06 | 曹凯 | 一种全自动碳基微生物菌肥连续化生产系统 |
CN108599975A (zh) * | 2018-01-31 | 2018-09-28 | 宋星 | 一种智能楼宇管理系统 |
CN109249815A (zh) * | 2018-10-15 | 2019-01-22 | 深圳市安和威电力科技股份有限公司 | 一种基于afe的高压充电控制系统及控制方法 |
CN109568047A (zh) * | 2018-11-26 | 2019-04-05 | 焦建洪 | 一种心内科智能专用床、控制系统及控制方法 |
CN109667599A (zh) * | 2018-12-28 | 2019-04-23 | 中国水利水电第四工程局有限公司 | 一种隧洞施工用管片卸载器 |
CN110633151A (zh) * | 2019-09-20 | 2019-12-31 | 北京小米移动软件有限公司 | 分布式发布消息集群分区平衡的方法、装置及存储介质 |
CN110838870A (zh) * | 2019-11-14 | 2020-02-25 | 北航(四川)西部国际创新港科技有限公司 | 一种分布式多地面站ads-b数据融合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103916327B (zh) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103916327A (zh) | 一种hp2p网络负载平衡的方法 | |
Gu et al. | Memory or time: Performance evaluation for iterative operation on hadoop and spark | |
CN110830562B (zh) | 一种基于虚拟节点的有限负载一致性哈希负载均衡策略 | |
Fredj et al. | Efficient semantic-based IoT service discovery mechanism for dynamic environments | |
Qian et al. | H-tree: An efficient index structurefor event matching in content-basedpublish/subscribe systems | |
Xiang et al. | Cache and consistency in NOSQL | |
CN109344348A (zh) | 一种资源更新方法及装置 | |
Wang et al. | Merlin hugeCTR: GPU-accelerated recommender system training and inference | |
CN101399765B (zh) | 降低对等网络中热点节点负荷的方法和系统 | |
CN106570113A (zh) | 一种海量矢量切片数据云存储方法及系统 | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems | |
Kumar et al. | M-Grid: a distributed framework for multidimensional indexing and querying of location based data | |
Wang et al. | On data staging algorithms for shared data accesses in clouds | |
Zou et al. | Semantic overlay network for large-scale spatial information indexing | |
Xie et al. | On massive spatial data retrieval based on spark | |
Deng et al. | Dynamic and scalable storage management architecture for Grid Oriented Storage devices | |
Qi et al. | A balanced strategy to improve data invulnerability in structured P2P system | |
Zhang et al. | GraphA: Efficient partitioning and storage for distributed graph computation | |
Marx et al. | A decentralized architecture for SPARQL query processing and RDF sharing: a position paper | |
Li et al. | A PR-quadtree based multi-dimensional indexing for complex query in a cloud system | |
Zhou et al. | ABR-Tree: An efficient distributed multidimensional indexing approach for massive data | |
Sakouhi et al. | Hammer lightweight graph partitioner based on graph data volumes | |
Liqing et al. | A K-shell decomposition based heuristic algorithm for influence maximization in social networks | |
Bok et al. | Dynamic partitioning of large scale RDF graph in dynamic environments | |
LU102289B1 (en) | Method for mining large-scale high utility patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |