用于负载分配的方法、装置、系统和计算机可读介质与流程

文档序号:17376024发布日期:2019-04-12 23:19阅读:180来源:国知局
用于负载分配的方法、装置、系统和计算机可读介质与流程
本公开内容涉及对等网络领域,更具体而言,涉及在采用分布式哈希算法的对等网络中用于负载分配的方法、装置、系统和计算机可读介质。
背景技术
:现有的数字资源系统(诸如视频系统)通常采用集中式管理方法。在该方法中,将视频文件、音频文件等数字资源存储在专用服务器上,通过客户端向服务器发送请求来将相应的文件分发给客户端。这不仅需要针对专用服务器的专门硬件投入,而且存在一旦服务器损坏、那么分发服务就将暂停的单点故障问题,并且大量的文件仅仅存放在专用服务器上,为网络性能带来了瓶颈障碍。为了处理集中式管理的专门硬件投入和由此带来的单点故障和瓶颈问题,一种有效的方式是采用对等网络进行分布式存储。具体而言,在对等网络中,利用分布式哈希算法为网络中的每个节点和文件分配哈希id(哈希编号),根据节点的哈希id和文件的哈希id将文件存储在对等网络中的不同节点上,由此实现分布式存储。网络中的节点根据基于哈希id空间建立的路由表,利用文件的哈希id在相应的节点上查找到该文件。例如,在对等网路中利用chord算法能够建立chord环。在chord算法中,一致性哈希函数使用安全散列算法sha1为每个节点的ip地址或mac地址、以及文件的关键字分配m位标识符作为其哈希id,m的大小足以避免不太可能的冲突。这样,节点和文件能够存在于同一哈希id空间中。将节点按照哈希id的大小顺时针从小到大排列在一个环上,得到与对等网络对应的逻辑环,这个环也被成为哈希环。根据从文件的关键字得到的哈希id,将文件分配到哈希id大于文件的哈希id的第一个节点。在为节点建立路由表的过程中,每个节点存储m个表项,每个表项包含值为n+2i-1的字段和指示下一跳节点的字段,其中n是该节点的哈希id,1≤i≤m,下一跳节点是哈希id大于等于n+2i-1的第一个节点。根据节点收到的消息中的目标哈希id查找路由表的表项,选择目标哈希id刚好不超过n+2i-1的字段对应的表项来转发该消息,由此实现路由。当在对等网络中采用除了chord算法之外的分布式哈希算法时,同样能够为节点和文件分配哈希id,从而在逻辑上构建诸如chord环那样的哈希环,实现文件的存储和根据哈希id的路由转发。在现有的采用分布式哈希算法的对等网络中,如上所述,通过哈希函数为节点和文件随机生成哈希id,节点基于消息中的哈希id选择下一个路由跳。分布式哈希路由的路径常常是由起始节点和目标节点之间的应用级路由跳组成的,仅仅考虑了哈希id来进行消息转发,这使得同一消息可能在不同的物理网络之间来回转发,造成极大的端到端延时。此外,由于分布式哈希模型的路由表是基于哈希id建立的,因此路由路径尽管在哈希id空间是优化的,但是在主机能力空间却是随机的。由于在文件存储的过程中没有考虑到主机能力,因此有可能在能力较弱的节点上存储有大量的文件,而在能力较强的节点上存储的文件量却不足,这使得基于哈希id进行文件分配和路由对于能力较弱的节点造成了较大的压力,而对于能力较强的节点则没有充分利用其资源,存在资源利用率不高和网络瓶颈的问题。技术实现要素:本公开内容提出了一种用于负载分配的方法、装置、系统和计算机可读存储介质,能够在利用分布式哈希算法的对等网络中实现负载均衡。根据本发明的一方面,提供了一种用于负载分配的方法,该方法包括:获取物理网络内的每个节点的前继弧长和节点能力信息;根据每个节点的前继弧长和节点能力信息确定所述物理网络的平均负载率;基于通过每个节点的前继弧长和节点能力信息得到的该节点的负载率与所述平均负载率之间的比较,确定节点的负载率大于所述平均负载率的重载节点和节点的负载率小于所述平均负载率的轻载节点;在重载节点之一管理的哈希id中确定待转移给轻载节点之一的至少一个哈希id;以及向所述物理网络内的节点指示所述至少一个哈希id由所述轻载节点之一管理。根据本发明的另一方面,提供了一种用于负载分配的装置,该装置包括:获取单元,用于获取物理网络内的每个节点的前继弧长和节点能力信息;平均负载率确定单元,用于根据每个节点的前继弧长和节点能力信息确定所述物理网络的平均负载率;重载和轻载节点确定单元,用于基于通过每个节点的前继弧长和节点能力信息得到的该节点的负载率与所述平均负载率之间的比较,确定节点的负载率大于所述平均负载率的重载节点和节点的负载率小于所述平均负载率的轻载节点;调整单元,用于在重载节点之一管理的哈希id中确定待转移给轻载节点之一的至少一个哈希id;以及指示单元,用于向所述物理网络内的节点指示所述至少一个哈希id由所述轻载节点之一管理。根据本发明的再一方面,提供了一种网络系统,该网络系统包括相互通信的多个节点,所述多个节点之一是上述装置。根据本发明的又一方面,提供了一种用于负载分配的系统,该系统包括:存储有计算机可执行指令的存储器;以及与存储器耦接的处理器,所述处理器被配置为在所述计算机可执行指令运行时执行上述方法。根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令在运行时使得处理器执行上述方法。在本发明的实施例的技术方案中,不仅无需采用专用服务器对数字资源进行集中式管理,而且通过根据节点的前继弧长和节点能力信息确定各个节点是重载节点还是轻载节点,可以将重载节点管理的部分哈希id转移给轻载节点,使得能够减轻重载节点的负担并使轻载节点的资源得以更充分的利用,从而可以实现负载均衡。这既可以避免节点由于无力承担过多的负载而出现瓶颈,又可以避免节点由于承担的负载过少而浪费资源。通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。附图说明构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:图1a和1b分别示出了物理网络的例子以及该物理网络对应的哈希环的例子,并示出了根据现有技术的消息转发路径的例子。图2示出了在分布式哈希网络中的前继弧长和负载之间的关系。图3示出了根据本发明实施例的用于负载分配的方法的流程图。图4示出了在示例性物理网络内将重载节点j的负载分配给轻载节点k的过程中调整节点的前继弧长的示意图。图5示出了根据本发明实施例的用于调整节点的前继弧长的方法的流程图。图6示出了以轻载节点a、重载节点b为例的前继弧长调整的示意图。图7示出了根据本发明实施例的用于负载分配的装置的结构框图。图8示出了根据本发明实施例的用于负载分配的装置的另一结构框图。图9示出了根据本发明实施例的用于负载分配的系统的结构框图。具体实施方式现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。随着计算机网络的发展,若干个由主机节点通过集线器、交换机和/或路由器等构成的物理网络经由物理网络与物理网络之间的互联设备可以相互通信。在图1a中具体示出了三个物理网络1_1、1_2和1_3。这些物理网络内的每一个可能是局域网,也可能是城域网,还可能是公司或一栋楼的网络。根据预先的设置或规定,可以将一定区域中的网络设置为一个物理网络。图1a所示的三个物理网络分别包含节点a、b、c、d、e,节点f、g、h、i,以及节点j、k。这些节点可以包括计算机、网关服务器、移动电话以及其他具有信息处理能力的计算设备。通过利用分布式哈希算法,这些节点分别被分配m位的哈希id(如果利用哈希算法得到的数值大于2m,则对于2m进行求模运算将该数值转换到小于2m的范围内,作为哈希id),将这些节点按照哈希id由小到大的顺序顺时针分布在圆环的外周,得到哈希环,如图1b所示。对于某个节点而言,在顺时针方向上位于该节点上游的与该节点相邻的节点被称为该节点的前继节点,该节点与前继节点之间的弧长被称为该节点的前继弧长,前继弧长的数值等于该节点的哈希id与其前继节点的哈希id之差。如果该节点的哈希id小于其前继节点的哈希id,则将该节点的哈希id增加2m再与其前继节点的哈希id求差。例如。假设节点k的哈希id为60,其前继节点b的哈希id为40,则节点k的前继弧长bk的数值为60-40=20。再例如,假设节点a的哈希id为10,节点h的哈希id为120,哈希id用7位比特串表示,那么节点a的前继弧长ha的数值为10+27-120=18。哈希环中的每个节点具有各自的路由表,该路由表包含m个表项,每个表项指向的下一跳节点是哈希id刚好不小于该表项中的n+2i-1的节点。例如,假设图1b中节点a~h的用7位比特串表示的哈希id分别为10、20、26、40、60、80、85、90、100、110和120,那么节点a的路由表如表1所示:表1节点a的路由表哈希id下一跳节点10+20i10+21i10+22i10+23i10+24e10+25k10+26d通过利用相同的分布式哈希算法对诸如视频文件、音频文件之类的数字资源的关键字(诸如文件名称、文件的开头20个字节等)进行哈希运算,得到哈希id(同样,如果利用哈希运算得到的数值大于2m,则对于2m进行求模运算得到处于小于2m的范围内的哈希id)。将文件分布到哈希id比文件的哈希id大的第一个节点。文件的分布可以是将文件保存在相应的节点上,也可能是将与文件有关的信息保存在相应的节点上,这些信息可以是文件存放的数据库、服务器等的ip地址等,也可能是文件的其他索引信息。在图1a所示的例子中,节点a发送查找文件“xx”的请求消息,根据文件“xx”的哈希id,节点a通过它自己的路由表将请求消息发送给节点k,节点k进一步根据它自己的路由表将请求消息转发给d,接下来各节点通过各自的路由表将请求消息依次转发给g、j和h,h发现自己存储有关于文件“xx”的信息,于是按照原来的路径将响应消息返回节点a。可见,尽管对于图1b所示的在逻辑上与图1a的物理网络对应的哈希环,由粗实线指示的路由是最佳的,但是,在图1a所示的物理网络中由虚线表示的分布式哈希路径在不同的物理网络之间来回穿梭,增加了网络的时延,路由效率低下。为了提高分布式哈希路由的路由效率,本发明的实施例在进行路由选择时考虑了对等节点在哈希id空间和物理网络两者上的邻近性。在预先规定的物理网络(诸如局域网、公司网络等)内指定一个或多个超级节点,由这些超级节点来帮助物理网络内的其他节点更新路由信息。所谓超级节点是指,在哈希id空间上,不仅能作为物理网络内的其他节点的下一跳节点,而且物理网络内的其他节点也均能作为该超级节点的下一跳节点。超级节点可以是物理网络内的网关节点,也可以是物理网络内预先确定的某节点,该节点能够在哈希id空间中与物理网络内的其他所有节点直接通信。通过连接矩阵可以更清楚地理解超级节点的含义。下面对连接矩阵进行描述以帮助理解超级节点。分布式哈希模型可以表示为有向图g=(v,e),其中v是对等节点的集合,e是有向边的集合。图(v,e)的连接矩阵表示为式(1)。r={r1,r2,...,ri,...,rn}ti=1,...,n(1)其中,n为由至少一个物理网络构成的整个网络中的节点个数,向量ri是节点vi,vi∈v的路由表,并由该节点维护。向量ri包含m个表项(m是表示哈希id的比特数),可由式(2)表示。ri={ri1,ri2,...,rij,...,rim}i=1,...,nj=1,...,m(2)其中e为有向图的边集。基于上述定义,图1b中的节点之间的连接关系可表示为式(3)所示的连接矩阵r:将物理邻近且属于同一管理域的节点聚集为一类,在每个聚类内可以人工设置或节点之间相互协商设置一个或多个超级节点,超级节点可以指向聚类内的所有客户节点(客户节点是聚类内除了超级节点之外的节点),与此同时,每个客户节点可以指向超级节点。聚类后的物理网络定义如下:对于一个分布式哈希模型有向图g=(v,e),存在k个聚类v1,v2,…,vk,如果满足:(1)vi∩vj=φ,1<i,j≤k,(2)则vl,vm物理邻近(其中l和m不同,其大小在1和第i聚类vi内的总节点个数之间)。那么,分布式哈希模型包含的聚类v1,v2,…,vk分别对应于不同的物理网络,又称聚类物理网络。对于任意一个vi,vi内存在一个或多个超级节点,超级节点维护客户节点信息,vi的客户节点与超级节点相关联。将客户节点的路由表表示为ti,那么聚类物理网络的所有路由表信息r’由式(4)表示:r'={t1,t2,...,ti,...,tn}ti=1,...,n(4)其中,n是聚类物理网络中包含的节点个数。ti进一步由式(5)表示:ti={ti1,ti2,...,tij,...,tin}i=1,...,n;j=1,...,n(5)其中:图1a中的物理网络1_1、1_2和1_3的连接矩阵t可由式(6)表示:由t可知,该物理网络有三个邻近节点的聚类。这三个聚类分别是:v1={a,b,c,d,e},v2={f,g,h,i},v3={j,k}。在这三个聚类中,节点e、i和k是超级节点。矩阵t2表示聚类内节点之间实现全连接,即每个节点与聚类内其他节点互为邻居。t2ij为矩阵t2中第i行,第j列的元素,t2ij值由式(7)表示:式(7)中的加法运算和乘法运算是布尔运算。对于图1a所示的多个物理网络来说,如式(8)所示,t2表示为:这样,在图1a所示的每个物理网络内设置有一个超级节点,物理网络内的其他节点的下一跳节点均可以是该超级节点,而且物理网络内的其他节点也均可以作为该超级节点的下一跳节点。通过每个物理网络内的超级节点,能够实现所有节点的全连接。上面描述了在物理网络或者说聚类中设置超级节点,接着可以通过超级节点来在物理网络中调整节点管理的哈希id,从而对负载分配进行调整以实现负载均衡。下文将对此进行详细描述。如上所述,分布式哈希算法采用哈希技术将节点和文件均匀地分布在m位(例如160位)的哈希id空间中,文件存储在哈希id比文件的哈希id大的第一个节点上。由于哈希id是随机分布在整个哈希id空间中的,故节点的负载随着该节点管理的哈希id空间的增加而增加。在分布式哈希算法中,对等节点所管理的哈希id空间为该节点的哈希id与前继节点的哈希id之差。由于在分布式哈希网络中在逻辑上节点分布在哈希环上,所以节点负责的哈希id空间大小即为该节点与前继节点之间的弧段长,本文称该弧段为节点的前继弧,前继弧的长度为前继弧长。例如,如图1b所示,节点k的前继节点为b,那么节点k的前继弧为从b到k的弧,该前继弧的长度表示为bk。由于分布式哈希算法的哈希id是随机生成的,故对等节点的前继弧长不会完全相等。若分布式哈希环的总长度为l(例如,在用160位表示哈希id的情况下,l=2160),那么n个节点随机地分布在哈希环上。在对等网络中,对等节点的前继弧长越长,节点的负载越高。发明人通过实验考察了前继弧长与负载之间的关系。实验环境为28800个节点的分布式哈希网络,采用分布式哈希算法为节点分配160位的哈希id。每个节点随机地发出10次查找请求,统计各节点的负载,并以节点路由的消息数作为衡量节点负载的测度。图2示出了通过该实验得到的对等节点的前继弧长与负载之间的关系,横坐标为节点的前继弧长,纵坐标为相应节点的负载。通过上述实验得到的前继弧长与负载之间的关系表明:(1)虽然前继弧长的期望值为2160/28800,但由于节点哈希id是通过哈希算法得到的,故每个节点的前继弧长并不完全相同;(2)节点之间的负载差异很大;以及(3)从概率上来说,节点的负载与该节点的前继弧长成正比。令节点s的前继弧长为as,分布式哈希模型的前继弧长的总和为a(a即为哈希id空间的大小,例如,在用160位表示哈希id的分布式哈希网络中,哈希id空间的大小为2160),分布式哈希模型(哈希环)中的所有节点的负载总和为w,那么,从概率上来说,节点s的负载ws与前继弧长as的关系如式(9)所示。如上所述,由于节点的负载与该节点的前继弧长成正比,所以ws正比于as,表示为ws∝as。每个节点由于硬件配置、网络连接状况等的不同,可能具有不同的节点能力。节点所具有的节点能力可以是指节点的处理能力、存储能力、网络接口读写能力等,通过采用常规技术能够测得节点的节点能力。令节点s的节点能力为cs,那么节点s的负载率λs可以如式(10)所示。由于ws∝as,所以:分布式哈希模型中的所有节点的平均负载率λ0可以如式(12)所示,其中,c是所有节点的节点能力之和。由于w∝a,所以:若λs>λ0则节点s过载,节点s可以被称为重载节点。若λs<λ0则节点s欠载,节点s可以被称为轻载节点。通常,用式(11)和(13)来表征节点负载率和平均负载率,以确定节点是重载节点还是轻载节点。为了充分利用各节点的资源并避免某节点由于负载超过其能力而出现瓶颈,希望能够在分布式哈希模型中实现负载均衡,将重载节点承载的过多的负载转移给还能够承受负载的轻载节点。令ws′为负载均衡时节点s的负载,则ws′满足式(14)。本发明实施例通过调整节点的前继弧长来调整节点的负载。令as为调整后的节点s的前继弧长。由于分布式哈希模型中节点的负载与节点的前继弧长成正比,故as′可由式(15)得到。由于对等节点动态地加入与退出网络,因此很难得到系统中所有节点的总能力,本发明以预先设置或规定的物理网络或聚类为单位进行负载平衡,并可以周期性地确定总节点能力。令c0为聚类内各节点的能力总和,a0为聚类内各节点的前继弧长总和,如式(16)所示。分布式哈希模型负载平衡时的节点s的前继弧长可由式(17)求得。△as=as-as′(18)通过式(18)可得到△as,若△as为正,则s为重载节点,若△as为负,则s为轻载节点。为了优化重载节点与轻载节点的负载分配,聚类内的各节点可以将它们各自的△a发布到超级节点,超级节点通过△a的匹配做出负载平衡的决定。也可以聚类内的各节点将它们各自的前继弧长和节点能力信息发布给超级节点,以供超级节点根据式(11)和(13)确定节点的负载率和网络的平均负载率,并根据式(16)至(18)计算得到节点各自的△a。如上所述,本发明实施例通过改变节点的前继弧长,将重载节点管理的过多的负载基于轻载节点还能够承受的负载分配给轻载节点,使得重载节点的负载率可以接近或等于网络的平均负载率,从而实现负载均衡。图3示出了根据本发明实施例的在采用分布式哈希算法的分布式哈希网络中用于负载分配的方法300的流程图。图3的方法300可以由物理网络中或物理网络外的任何一个节点执行,优选地,可以由物理网络内的超级节点执行。在s310中,获取物理网络内的每个节点的前继弧长和节点能力信息。在图1a所示的例子中,对于物理网络1_1,可以由超级节点e获取节点a、b、c、d和它自己的前继弧长aa、ab、ac、ad和ae以及节点能力信息ca、cb、cc、cd和ce。在s320中,根据每个节点的前继弧长和节点能力信息确定物理网络的平均负载率。在图1a所示的例子中,超级节点e可以根据节点的前继弧长aa、ab、ac、ad和ae得出物理网络的总前继弧长a=aa+ab+ac+ad+ae,根据节点的节点能力ca、cb、cc、cd和ce得出物理网络的总节点能力c=ca+cb+cc+cd+ce,从而将a/c确定为网络的平均负载率λ0。在s330中,基于通过每个节点的前继弧长和节点能力信息得到的该节点的负载率与s320中确定的平均负载率之间的比较,确定节点的负载率大于平均负载率的重载节点和节点的负载率小于平均负载率的轻载节点。在图1a所示的例子中,超级节点e根据它获取的节点a、b、c、d和e的前继弧长和节点能力信息,通过求其比值可以得到各节点的负载率,然后通过将各节点的负载率与平均负载率进行比较来确定节点是重载节点还是轻载节点。例如,节点e将aa/ca确定为节点a的负载率λa,如果λa大于λ0,则节点a为重载节点,如果λa小于λ0,则节点a为轻载节点。可替代地,超级节点e可以将确定的平均负载率λ0发送给节点a、b、c和d。节点a、b、c和d根据其自身的前继弧长和节点能力计算比值以得到它自己的负载率,进而根据它自己的负载率和平均负载率的大小关系确定它是重载节点还是轻载节点,再将判断结果上报给超级节点e。在s340中,在重载节点之一管理的哈希id中确定待转移给轻载节点之一的至少一个哈希id。在图1a所示的例子中,假设在s330中确定节点a是轻载节点,节点b是重载节点,那么超级节点e确定节点b管理的一部分哈希id可以转移给节点a。以图1a所示的物理网络1_3为例,图4中示出了将重载节点j的负载分配给轻载节点k的过程中调整节点的前继弧长的示意图。其中,图4(a)示出了物理网络1_3(又被表示为c)中的节点j和k在ip网路中的位置,该物理网络的总节点能力等于节点j的节点能力cj和节点k的节点能力ck之和,在该例子中节点能力指节点的处理能力。图4(b)示出了节点j和k的处理能力cj和ck。图4(c)示出了节点j和节点k的前继弧长aj和ak。图4(d)示出了由节点j和k之一或外部节点确定的待从重载节点j转移给轻载节点k的部分哈希id对应的前继弧长改变量aj-aj’对节点j和k的前继弧长的影响,使得经过负载均衡处理的节点j和k的前继弧长分别为aj’和ak’。在图5中具体示出了根据本发明实施例的用于调整节点的前继弧长的方法500的流程图。通过方法500能够确定哪些重载节点的多少前继弧长需要转移给哪些轻载节点,方法500将在下文中具体描述。在对方法500进行描述之前,接着描述方法300。在s350中,向物理网络内的节点指示s340中的至少一个哈希id由s340中的轻载节点之一管理。在图1a所示的例子中,由于在s340中超级节点e确定将重载节点b管理的一部分哈希id转移给轻载节点a,那么在该步骤中,超级节点e向物理网络1_1中的节点a、b、c和d指示该部分哈希id被转移给轻载节点a,以使得轻载节点a能够管理这部分哈希id,同时其他节点b、c和d可以和超级节点e一样获知这部分哈希id被轻载节点a管理。这样,之后寻址到这部分哈希id的消息将不再被转发到重载节点b,而是被转发到轻载节点a,从而负载从重载节点转移到了轻载节点,实现了负载均衡。根据本发明的实施例,可以通知s340中的轻载节点之一存储与对应于s340中的至少一个哈希id的文件有关的信息,并通知物理网络内的节点将寻址到所述至少一个哈希id的消息发送给该轻载节点之一。在图1a所示的例子中,由于轻载节点a需要管理原本由重载节点b管理的部分哈希id,因此,轻载节点a存储这部分哈希id对应的文件相关的信息,包括存储文件本身、存储文件的存放地址、存储指向文件的其他信息等。另外,节点b、c和d需要通过从超级节点e接收消息来修改它们各自的路由表以便将与这部分哈希id对应的下一跳节点修改为节点a。与转移给节点a的哈希id对应的文件相关的信息由于被轻载节点a存储了,因此节点b存储的相关信息可以被删除,当然,也可以不对节点b上的这部分信息进行处理从而实现信息冗余。由于其他节点不会将寻址到这部分哈希id的消息再转发给节点b,所以即便信息未被删除,节点b的处理负担也会减小。通过方法300,借助于节点的前继弧长和节点能力信息,能够确定节点是重载节点还是轻载节点,从而通过改变节点的前继弧长来调整节点管理的负载,这样可以实现负载均衡,避免资源浪费和瓶颈的出现。接下来,描述如何基于重载节点和轻载节点的划分来调整负载分配的过程,具体如图5的方法500所示。在s510中执行排序步骤,其中,对所有的重载节点按过载量进行排序以得到重载节点列表,以及对所有的轻载节点按欠载量进行排序以得到轻载节点列表。例如,为了计算聚类内的节点的平均负载率,每个客户节点(例如节点s)在加入物理网络时向超级节点提交它的节点能力信息cs和前继弧长as。超级节点计算聚类内的节点的平均负载率λ0′,并由式(19)计算节点s所需调整的前继弧长△as。△as=as-λ0′×cs(19)若△as>0,则从概率上来说节点s为重载节点,其过载量等于△as;若△as<0,则从概率上来说节点s为轻载节点,其欠载量等于-△as。可以通过将重载节点的与过载量对应的过载弧长部分或全部转移到轻载节点。确定了各个节点的过载量或欠载量之后,针对重载节点,按照过载量的大小进行排序,针对轻载节点,按照欠载量的大小进行排序,得到重载节点列表和轻载节点列表。在s520中执行第一确定步骤,其中,确定重载节点列表中过载量最大的重载节点的过载量与轻载节点列表中欠载量最大的轻载节点的欠载量之间的较小者。例如,假设a为轻载节点,b为重载节点。令△aa为根据式(19)得到的节点a所需调整的前继弧长,△ab为根据式(19)得到的节点b所需调整的前继弧长,可以将节点b的前继弧长中的长度为min(|△aa|,|△ab|)的弧长转移给或者说卸载到节点a。在s530中执行第二确定步骤,其中,在过载量最大的重载节点管理的哈希id中确定待转移给欠载量最大的轻载节点的待转移哈希id,所述待转移哈希id的数量等于s520中确定的较小者。图6示出了分布式哈希环上节点分布的例子,并且还示出了a为轻载节点而b为重载节点的情况下的a和b的前继弧长的调整。水平实线为节点a的前继弧长的展开,水平虚线为节点b的前继弧长的展开。aa为节点a最初的前继弧长,△aa为从节点b转移给节点a的弧长,aa’为节点a的经调整后的前继弧长,ab为节点b最初的前继弧长,△ab为节点b过载的弧长,ab’为节点b的经调整后的前继弧长。从图6中可以看出,由于节点a的欠载量小于节点b的过载量,所以仅△ab的一部分转换成了△aa,而△ab的另一部分转移给了哈希环上的其他轻载节点(在图6中未示出)。为了简化说明,假设对等网络的哈希id空间大小为256。在图6中,轻载节点a和重载节点b相关的弧长为:aa=25,△aa=-10,ab=60,△ab=35。执行方法500的节点(例如网络中的超级节点或其他指定的节点)确定节点b需向节点a转移的过载弧长为min(|△aa|,|△ab|)=min(35,10)=10。节点b向a转移过载弧长后,转移后的△ab=35-10=25,转移后的△aa=0,因此节点b仍是重载节点,执行方法500的节点将继续确定节点b需向其他节点转移的负载。若以as.bid表示节点s的前继弧长as的起点哈希id,as.eid表示节点s的前继弧长as的终点哈希id,那么例如,假设节点a与节点b的前继弧长相关的哈希id最初为aa.bid=35、aa.eid=60、ab.bid=128、ab.eid=188。由于如上所述,节点b向节点a转移的哈希id的个数为10个,所以可以从节点b管理的128~188的哈希id空间中任意选择10个哈希id作为待转移哈希id,优选地,待转移哈希id是哈希id空间中的连续的离散点。假设将节点b管理的哈希id为153~162的这部分转移给节点a,那么经过该调整的节点a管理的哈希id包括35~60和153~162,而经过该调整的节点b管理的哈希id包括128~152和163~188。执行方法500的节点可以记录被调整的哈希id和对应的目标节点。例如,对于上述例子,可以记录转移信息如表2所示:表2哈希id的转移信息当然,当有更多的哈希id转移情形时,该表格中记录的转移信息将相应地增多。在s540中执行删除步骤,其中,如果s520中确定的较小者是过载量最大的重载节点的过载量,则从重载节点列表中删除该过载量最大的重载节点,以及如果s520中确定的较小者是欠载量最大的轻载节点的欠载量,则从轻载节点列表中删除该欠载量最大的轻载节点。在s550中,确定重载节点列表和轻载节点列表中是否有一个列表为空。如果两个列表都不为空,则方法500前进到s560。如果两个列表中有一个列表为空,则方法500前进到s570。在s560中执行修改步骤,其中,对s540的删除步骤未从中删除节点的重载节点列表或轻载节点列表重新排序。然后,方法500返回s520。在s570中执行通知步骤,其中,将所有确定的待转移哈希id以及这些哈希id分别待转移给的轻载节点通知给物理网络内的节点,以使得物理网络内的节点将各自路由表中与待转移哈希id对应的目标节点修改为哈希id待转移到的轻载节点。例如,在图1a所示的例子中,对于物理网络1_1,超级节点e将记录的如下表3所示的哈希id转移信息通知给节点a、b、c和d,以使得这些节点在它们各自的路由表中将与哈希id为153~162对应的下一跳节点修改为a,与哈希id为60~72对应的下一跳节点修改为d,与哈希id为73~80对应的下一跳节点修改为e。超级节点e也可以根据该转移信息修改它自己的路由表。可替代地,哈希id可以重新分配到的目标节点可以不涉及超级节点本身。表3哈希id的转移信息当节点基于哈希id的转移信息修改其路由表时,可以采用多种手段将转移的哈希id与其对应的目标节点记录在路由表中。例如,节点可以为现有的路由表增加重定向字段,在重定向字段中指明转移的哈希id及其对应的目标节点。根据本发明的实施例,当节点b接收到来自节点p的查找某哈希id的请求时,节点b判断它自己是否存储有关于该哈希id的信息,如果有,则向节点p返回响应,否则转发该查找请求。在转发的过程中,节点b判断该哈希id是否属于例如重定向字段中记录的转移的哈希id。如果是,则不仅根据新的下一跳节点进行转发,而且还将通知节点p相应的哈希id转移给了新的节点,以便节点p更新它的路由表。例如,在表3的转移情况下,如果节点b确定节点p查找请求中的目标哈希id属于表3中的60~72,则节点b在其路由表中根据60~72对应的新的下一跳节点d进行转发。并且,由于节点p不知晓该部分哈希id已经转移的事实,节点b确定节点p和它不属于同一物理网络,故向节点p通知该部分哈希id已经转移给了节点d。节点p根据该通知,更新它的路由表,将处于60~72范围的哈希id对应的下一跳节点也修改为节点d。根据本发明的实施例的方法,为了实现负载均衡的目的,在根据节点的前继弧长和节点能力调整节点管理的哈希id的同时,使得物理网络内的节点能够根据该调整来更新它们的路由表,从而优化路由转发,而且物理网络外的节点也能更新其路由表而优化路由转发。因此,不仅能够实现负载均衡而优化资源利用和减少网路瓶颈,而且物理网络内和外的节点都能基于负载均衡的结果调整其路由,从而优化路由。上面描述了根据本发明实施例的在采用分布式哈希算法的对等网络中用于负载分配的方法,接下来将描述用于负载分配的装置、系统和计算机可读存储介质。图7示出了根据本发明实施例的用于负载分配的装置700的结构框图。装置700可以包括获取单元710、平均负载率确定单元720、重载和轻载节点确定单元730、调整单元740和指示单元750。这些单元可以由诸如处理器、可编程专用集成电路、单片机等电子电路实现,也可以由诸如程序段、例程等的功能模块实现。获取单元710可用于获取物理网络内的每个节点的前继弧长和节点能力信息。平均负载率确定单元720可用于根据每个节点的前继弧长和节点能力信息确定所述物理网络的平均负载率。重载和轻载节点确定单元730可用于基于通过每个节点的前继弧长和节点能力信息得到的该节点的负载率与所述平均负载率之间的比较,确定节点的负载率大于所述平均负载率的重载节点和节点的负载率小于所述平均负载率的轻载节点。调整单元740可用于在重载节点之一管理的哈希id中确定待转移给轻载节点之一的至少一个哈希id。指示单元750可用于向所述物理网络内的节点指示所述至少一个哈希id由所述轻载节点之一管理。获取单元710、平均负载率确定单元720、重载和轻载节点确定单元730、调整单元740和指示单元750的上述和其他操作和/或功能可以参考上文关于图3至6的相关描述,本文在此不再进行赘述。图8示出了根据本发明实施例的用于负载分配的装置800的另一结构框图。装置800包含的获取单元810、平均负载率确定单元820、重载和轻载节点确定单元830、调整单元840和指示单元850与装置700包含的获取单元710、平均负载率确定单元720、重载和轻载节点确定单元730、调整单元740和指示单元750基本上相同。根据本发明的实施例,装置800中的调整单元840可以包括排序子单元841、第一确定子单元842和第二确定子单元843。排序子单元841可以用于对所有的重载节点按过载量进行排序以得到重载节点列表,以及对所有的轻载节点按欠载量进行排序以得到轻载节点列表。第一确定子单元842可以用于确定重载节点列表中过载量最大的重载节点的过载量与轻载节点列表中欠载量最大的轻载节点的欠载量之间的较小者。第二确定子单元843可以用于在过载量最大的重载节点管理的哈希id中确定待转移给欠载量最大的轻载节点的待转移哈希id,所述待转移哈希id的数量等于所述较小者。根据本发明的实施例,调整单元840还可以包括删除子单元844和修改子单元845。删除子单元844可以用于如果所述较小者是过载量最大的重载节点的过载量,则从重载节点列表中删除该过载量最大的重载节点,以及如果所述较小者是欠载量最大的轻载节点的欠载量,则从轻载节点列表中删除该欠载量最大的轻载节点。修改子单元845可以用于在重载节点列表和轻载节点列表都不为空的情况下,对删除子单元844未从中删除节点的重载节点列表或轻载节点列表重新排序元。在重载节点列表或轻载节点列表改变的情况下,第一确定子单元842、第二确定子单元843和删除单元844再次进行操作。根据本发明的实施例,调整单元840还可以包括通知子单元846。通知子单元846可以用于在重载节点列表和轻载节点列表中的至少一个为空的情况下,将所有确定的待转移哈希id以及这些哈希id分别待转移给的轻载节点通知给所述物理网络内的节点,以使得所述物理网络内的节点将各自路由表中与待转移哈希id对应的目标节点修改为哈希id待转移到的轻载节点。根据本发明的实施例,指示单元850进一步可以用于通知所述轻载节点之一存储与对应于所述至少一个哈希id的文件有关的信息,并通知所述物理网络内的节点将寻址到所述至少一个哈希id的消息发送给所述轻载节点之一。排序子单元841、第一确定子单元842、第二确定子单元843、删除子单元844、修改子单元845和通知子单元846可以由诸如处理器等电子电路来实现,也可以由诸如程序段等功能模块来实现。这些子单元和指示单元850的上述和其他操作和/或功能可以参考上述关于图3至6的相关描述,本文在此不再赘述。通过采用根据本发明实施例的装置700或800,可以将重载节点管理的部分哈希id转移给轻载节点,使得能够减轻重载节点的负担并使轻载节点的资源得以更充分的利用,从而实现负载均衡。此外,通过基于负载均衡来改变节点的路由表,可以优化路由。根据本发明的实施例,在采用分布式哈希算法的网络系统中,可以包括如上所述的装置700或800,从而在这样的对等网络中能够有利于基于哈希id空间实现负载均衡。图9示出了根据本发明实施例的用于负载分配的系统900的结构框图。系统900可以是现有及未来可能出现的任何具有信息处理能力的装置。系统900包括存储器910和处理器920。存储器910可以是只读存储器、光盘、硬盘、磁盘、闪存或其它任何非易失性存储介质。存储器可以存储用于实现方法300和/或方法500中的一个或多个步骤的计算机可执行指令。处理器920耦接至存储器910,可以作为一个或多个集成电路来实施,例如微处理器或微控制器。该处理器920用于执行存储器910中存储的用于实现方法300和/或方法500中的一个或多个步骤的计算机可执行指令,由此可以在对等网络中实现负载均衡,并能有利于诸如视频文件等的数字资源在对等网络中的均衡分布,避免集中式管理的弊端。如现有计算机装置中那样,处理器920可以通过总线耦合至存储器910。系统900可以通过读写接口连接至外部存储装置以便调用外部数据,还可以通过网络接口连接至网络或者其他计算机装置,此处不再进行详细描述。根据本发明的实施例,计算机可读存储介质上可以存储有用于执行方法300和/或方法500中的一个或多个步骤的计算机可执行指令,当所述指令被处理器运行时,能够使得处理器执行相应的步骤,从而在采用分布式哈希算法的对等网络中能够基于哈希id空间实现负载均衡。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1