选举超级节点、搜索网络节点或资源的方法、装置及系统的制作方法

文档序号:7643667阅读:263来源:国知局
专利名称:选举超级节点、搜索网络节点或资源的方法、装置及系统的制作方法
技术领域
本发明涉及通信领域,特别涉及一种选举超级节点、搜索网络节点或资源的方法、装置及系统。
背景技术
随着对等P2P(Peer-to-Peer)计算软件的大量使用,对于P2P网络拓扑结构的研究也越来越深入,目前,大量的研究集中在如何构造一个高度结构化的系统,新的研究成果体现在采用分布式散列表DHT(Distributed Hash Table)的完全分布式结构化拓扑网络。
分布式散列表DHT使用分布式哈希算法来解决结构化的分布式存储问题,分布式哈希算法的核心思想是将存储对象的特征(如关键字)进行哈希运算得到键值(HashKey),并根据该键值进行对象的分布式存储,即将所有存储对象映射到一个具体的数值范围内,重叠网中的每个节点负责数值范围内的特定段落(该段落可以是不连续的),例如节点A负责存储键值在1000-1999范围内的对象,节点B负责存储键值在2000-2999范围内的对象。这样,就实现了对象集合分布式存储在所有的节点中,节点可以直接存储对象本身,如文件中的一个片断;也可以存储对象的索引,如该对象所在节点的IP地址等。
通过上述方式可以实现结构化的分布式存储对象,但是在存在大量节点(如100万个)的P2P系统中,任何节点都不可能拥有全部节点的键值和存储内容之间的对应关系,因此,用户获得键值后如何找到该键值对应的节点就被成为DHT的路由问题。不同的DHT协议定义了不同的路由算法,如麻省理工学院的Chord协议、AT&T ACIRI中心的CAN协议、微软研究院的Pastry协议(参见图1)和Bittorent采用的Kademlia协议。
DHT拓扑结构能够自适应节点的动态加入和退出,有着良好的可扩展性、鲁棒性、节点标识分配的均匀性和自组织能力,由于重叠网络采用了确定性拓扑结构,DHT可以提供精确的发现技术,即只要目标节点存在于网络中DHT就可以发现该节点,因而保证了发现的准确性。
DHT发现技术完全建立在确定性拓扑结构的基础上,从而表现出对网络中路由的指导性和网络中节点与数据管理的较强控制力。但是,由于衡量DHT的发现算法的两个重要参数度数(用于表示邻居关系数、路由表的容量)和链路长度(用于表示发现算法的平均路径长度)之间存在渐进曲线的关系,如果获得更短的路径长度,则必然导致度数的增加;而网络实际连接状态的变化造成大度数邻居关系的维护复杂程度增加;另外,O(logN)、甚至O(logN/loglogN)的平均路径长度也不能满足网络状态变化剧烈的网络应用的需求,新的发现算法受到上述折衷关系制约的根本原因在于DHT对网络拓扑结构的确定性认识。
为了降低确定式拓扑结构对发现算法的限制,提出了半分布式结构,该结构结合中心化结构和全分布式非结构化拓扑的优点,选择性能(如处理、存储、带宽等性能)较高的节点作为超级节点,在各个超级节点上存储系统中其他部分节点的信息,发现算法仅在超级节点之间转发,超级节点再将查询请求转发给适当的叶子节点。半分布式结构是一个层次式结构,超级节点之间构成一个高速转发层,超级节点和所负责的普通节点构成若干层次。该半分布式结构如图2所示,为典型的KaZaa拓扑结构。
目前有一些研究从提高发现算法的可靠性和寻找随机图中的最短路径两个方面展开对重叠网络的重新认识。其中,small world特征和幂规律证明了实际网络的拓扑结构既不是非结构化系统所认识的一个完全随机图,也不是DHT发现算法采用的确定性拓扑结构。
实际网络体现的幂规律分布的含义可以解释为在网络中有少数节点具有较高的“度”,多数节点具有较低的“度”,所谓的“度”是指某一节点的相邻节点的数量;因而度数较高的节点同其他节点的联系较多,通过该节点可以找到待查信息的概率较高,据研究分析发现节点的连接具有偏好依附的特性。因此,网络规模随着新节点的加入而增大,但新加入的节点偏向于连接到已经存在的具有较大连接度的节点上去。
small world模型的特性为网络拓扑具有“高聚集度”和“短链”的特性,所谓的高聚集度是指某个节点与所相邻节点之间有联系的可能性很大,而短链是指节点之间的平均距离很小,也就是某个节点要找到其他节点的步骤很少。在符合small world特性的网络模型中,可以根据节点的聚集度将节点划分为若干簇,在每个簇中至少村子一个度数最高的节点为中心节点,则簇内的节点和簇与簇之间的节点就存在短链现象。
因此,P2P发现算法中如何缩短路径长度的问题变成了如何找到这些短链的问题,下面介绍两种解决该问题的现有技术1、Kademlia(下文简称Kad)协议Kad是一种DHT技术,通过独特的以异或(XOR)算法为距离度量基础,建立一种全新的DHT拓扑结构,相比其他发现算法,提高了路由查询速度。
Kad网络中每个节点都有一个160bit的标识ID值作为标志符,Key也是一个160bit的标志位,每一个加入Kad网络的计算机都会在160bit的空间内被分配一个节点ID值,<key,value>对的数据存放在ID值“最”接近key值的节点上。
两个节点x,y之间的距离基于数学上的异或二进制计算,即d(x,y)=xy,两个节点对应位相同时结果为0,不同时结果为1。
Kad的路由表由一些称之为K桶的表格组成,对每一个0≤i≤160,每个节点都保存与本节点的距离范围在区间[2i,2i+1)内的节点的信息,这些信息由(Node ID,IP address,UDP port)数据列表构成,每个这样的数据列表都称之为一个K桶,并且每个K桶内部的信息存放位置是根据上次看到的时间顺序排列,即最近看到的放在头部,最后看到的放到尾部。每个K桶都有不超过k个的数据项。由于每个K桶覆盖距离的范围成指数关系增长,这就形成了离自己近的节点的信息多,而离自己远的节点的信息少,从而可以保证路由查询过程是收敛的。K桶的更新机制有效实现了一种最近看到的节点更新策略,除非在线节点一直未从K桶中移出过,也就是在线时间长的节点具有较高的可能性继续保留在K桶列表中。
Kad网络的一个特点是能够提供快速的节点查找机制,并且还可以通过参数进行查找速度的调节,每个查找操作都是根据目标ID在众多K桶中搜索与该目标ID最接近的节点的信息。该查询过程是递归的,由于每次查询都能从更接近的K桶中获取信息,这样的机制保证了每一次递归操作都能够至少获得距离减半的效果,从而保证整个查询过程的收敛速度为O(logN),这里N为网络节点的总数量。
Kad网络的另一个特点是新节点加入网络时,该新节点必须要和一个存在于Kad网络中的节点取得联系,从而更新自己的K桶;而节点离开Kad网络时不需要发布任何信息,从而实现Kad协议能够弹性工作在任意节点随时失效的情况下。
Kad协议提高了路由查询速度,但是Kad协议从完全对等的角度假设网络中所有节点的能力是相同的,这对于规模较小的系统较为有效,但这种假设并不适合大规模的网络。在实际P2P网络中,节点本身往往是计算能力相差较大的异构节点,当每一个节点都被赋予了相同的职责而没有考虑其计算能力和网络带宽,局部性能较差的节点将会导致整体网络性能的恶化,在这种异构节点的环境中难以实现优化的资源管理和负载平衡。
另外,Kad协议假设网络节点的连接度比较均匀,即每个节点与其他节点的连接度都近似相等;而实际网络中的small world特征和幂规律表明,各个节点度数是有很大差别的,通过度数较大的节点找到待查信息的概率较高。
2、Kazaa协议Kazaa模型是P2P混合模型的典型代表,其在纯P2P分布式模型基础上引入超级节点的概念,综合了集中式P2P快速查找和纯P2P去中心化的优势。
Kazaa模型将节点按能力(如计算能力、内存大小、连接带宽、网络延迟时间等)不同区分为普通节点和超级节点;其中,超级节点与其邻近的若干普通节点之间构成一个自治的簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P模式将超级节点相连起来,或者在各个超级节点之间再次选取性能最优的节点,或者另外引入一个新的性能最优的节点作为超级节点来保存整个网络中可以利用的超级节点信息,并且负责维护整个网络的结构。
由于普通节点的文件搜索先在本地所属的簇内进行,只有查询结果不充分的时候再通过超级节点之间进行有限的泛洪,这样,有效消除纯P2P结构中使用泛洪算法带来的网络拥塞、搜索迟缓等不利影响;同时,由于每个簇中的超级节点监控所有普通节点的行为,这也能确保一些恶意的攻击行为能在网络局部得到控制,并且超级节点的存在也能在一定程度上提高整个网络的负载平衡。
虽然,基于超级节点的混合式P2P网络结构具有较大程度的改进,但是,由于超级节点在遭受恶意攻击或其他原因临时退出网络时,网络表现出较大的脆弱性,可能会导致其簇内的节点处于瘫痪状态,因此这种局部索引网络节点的方法仍然存在一定的局限性。

发明内容
本发明实施例提供一种选举超级节点、搜索网络节点或资源的方法、装置及系统,用于解决现有技术中网络负载不均衡以及局部查找节点而导致网络稳定性较差的问题。
一种选举超级节点的方法,包括步骤网络中的普通节点根据普通节点成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较;以及所述普通节点确定本节点的性能满足成为超级节点的条件时,向与本节点通信的其他节点发送本节点为超级节点的消息。
一种搜索网络节点的方法,包括步骤源节点根据本节点与目标节点的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶,其中,由网络中的普通节点根据成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较选举出超级节点;所述源节点从查找到的K桶中获取k个节点,其中,按照超级K桶优先原则获取节点,k为K桶中保存节点的最大数目;所述源节点从所述k个节点中选择α个节点,并向该α个节点中的各节点发送查找所述目标节点的消息,所述各节点按所述源节点查找K桶和获取节点的方式分别获取最接近目标节点的k个节点并将该k个节点的信息返回给所述源节点;以及所述源节点根据节点返回的信息确定最接近目标节点的k个节点,其中,所述源节点每次在接收到一个节点返回的k个节点的信息时,从已确定最接近目标节点的k个节点和返回的k个节点中确定最接近目标节点的k个节点,并向该k个节点中未查找过目标节点的节点发送查找所述目标节点的消息,直到源节点确定的最接近目标节点的k个节点均已查找过目标节点、并且均已向源节点回复信息。
一种搜索网络资源的方法,包括步骤源节点根据本节点与目标资源的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶,其中,由网络中的普通节点根据成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较选举出超级节点;所述源节点从查找到的K桶中获取k个节点,其中,按照超级K桶优先原则获取节点,k为K桶保存中节点的最大数目;所述源节点从所述k个节点中选择α个节点,并向该α个节点中的各节点发送查找所述目标资源的消息;当所述α个节点中任意一个节点存储所述目标资源时,该任意节点将所述目标资源返回给所述源节点,并结束搜索;否则,该任意节点按所述源节点查找K桶和获取节点的方式分别获取最接近目标资源的k个节点并将该k个节点的信息返回给所述源节点;以及所述源节点根据节点返回的信息确定最接近目标资源的k个节点,其中,所述源节点每次在接收到一个节点返回的k个节点的信息时,从已确定最接近目标资源的k个节点和返回的k个节点中确定最接近目标资源的k个节点,并向该k个节点中未查找过目标资源的节点发送查找所述目标资源的消息,直到有节点向所述源节点返回所述目标资源。
一种网络节点,包括用于向其他节点发送消息的单元;用于根据普通节点成为超级节点的条件将本节点的性能参数值与所述条件规定的阈值进行比较,并在确定本节点的性能满足成为超级节点的条件时,向与本节点通信的其他节点发送本节点为超级节点的消息的单元;用于接收其他节点发送的消息的单元;用于存储本节点所有超级K桶和所有普通K桶的单元,其中,所述超级K桶存储超级节点信息,所述普通K桶存储普通节点信息。
一种点对点网络,包括多个网络节点,其中,普通节点根据成为超级节点的条件将本节点的性能参数值与所述条件规定的阈值进行比较选举出超级节点,并且,一个超级节点或一个普通节点都连接多个超级节点和多个普通节点。
本发明实施例网络中的普通节点通过将本节点的性能参数值与普通节点成为超级节点的条件所规定的阈值进行比较选举成为超级节点,各节点根据本身的节点性能承担相应的负载量,从而保证了网络的负载均衡;选举产生的超级节点具有在线时间长的特点,所以也进一步保证了网络的稳定性;本发明实施例中节点通过根据本节点与目标节点/目标资源的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶,并按照超级K桶优先原则从查找到的K桶中获取节点,这种优先查找超级节点的方式有效地提高了网络节点/资源的查询效率。


图1为现有技术中Pastry网络的消息路由示意图;图2为现有技术中Kazza网络拓扑结构示意图;图3为本发明实施例中Newkad网络拓扑结构示意图;图4为本发明实施例中普通节点选举超级节点的实现流程图;图5为本发明实施例中节点更新K桶的实现流程图;图6为本发明实施例中lookup算法的实现示意图;图7为本发明实施例中节点加入网络的实现流程图;图8为本发明实施例中搜索节点的实现流程图;图9为本发明实施例中搜索资源的实现流程图;图10为本发明实施例中存储资源的实现流程图;图11为本发明实施例中一种网络节点的结构示意图;图12为本发明实施例中一种网络节点的结构示意图。
具体实施例方式
为了克服现有Kademlia协议中假设所有网络节点的能力相同和连接度均匀与实际网络中的节点特征不符合的缺点,并且同时克服现有Kazaa协议中由于超级节点比较脆弱而导致其簇内的节点孤立的缺点,本实施例在现有Kademlia协议的基础上引入超级节点的概念,结合中心化结构和全分布式结构化结构的优点,采用NewKad协议来实现路由查询。
Newkad网络中每个节点都有一个160位的随机产生的标识(ID)值作为标志符,Key也是一个160位的标志符,每个加入Newkad网络的计算机都会在160位的空间内被分配一个节点ID值。
Newkad网络中新节点加入网络一段时间后,根据节点性能(如计算能力、连接带宽、网络延迟时间、度数、在线时间等)不同,将节点区分为普通节点和超级节点;度数较高的超级节点就是寻找短链的中心点,而且搜索节点时优先查询超级节点,对外发布的<key,value>信息不仅存储在最接近的K个节点处,还存储在查找到的超级节点处。
参阅图3,本实施例中的Newkad网络拓扑结构由超级节点层和普通节点层构成的三维拓扑结构,其中,超级节点层由多个超级节点组成,普通节点层由多个普通节点组成,并且每个普通节点或超级节点都对应多个超级节点和多个普通节点;该网络拓扑结构中的超级节点由普通节点通过将本节点的性能参数值与普通节点成为超级节点的条件所规定的阈值进行比较选举产生。
新加入网络的节点都默认为普通节点,在其登录时间达到规定的时间后(该时间可以根据网络的运行情况确定),判断本节点的性能是否满足成为超级节点的条件;普通节点成为超级节点时至少满足下述条件1、节点的CPU频率不小于门限值f,内存不小于门限值m1,节点的网络带宽不小于门限值b,节点的网络延迟时间不大于门限值d;2、与本节点通信的其他节点的总数目(度数)不小于门限值n;3、节点的在线时间不低于门限值t;4、每分钟与其他节点的通信总量不大于门限值q;5、预定时间内CPU平均使用率不大于门限值p,内存平均使用率不大于门限值m2。
在网络实际运行过程中,可以根据网络规模和网络实际查找效率提高或降低上述条件中任意一个条件、部分条件或全部条件中的门限值,以减少或增加网络中超级节点的数量,从而保证整个网络的稳定性和负载均衡,上述条件中的各门限值需要经过长时间测试才能确定是否适合该网络。
当一个普通节点成为超级节点后,会有更多的节点联系该超级节点,因此,所有超级节点必须贡献出比普通节点更多的资源,Newkad协议采取奖励机制补偿超级节点资源消耗较大的损失,即Newkad协议统计超级节点与其他节点之间的通信量,按比例提高该超级节点下载文件或其他数据的速度;同时当超级节点的性能降低并满足一定的条件时,该超级节点下降为普通节点;一个超级节点的性能满足如下条件之一时,向与其通信的其他节点宣布本节点下降为普通节点1、每分钟与其他节点之间的通信量大于对应的阈值。
2、预定时间内CPU的使用率和内存的使用率,两者中任意一个使用率大于对应的阈值。
如图4所示,普通节点选举超级节点的实现过程如下步骤400、根据普通节点成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较。
步骤401、确定本节点的性能满足成为超级节点的条件时,向与本节点通信的其他节点发送本节点为超级节点的消息。
新加入网络的普通节点定时判断本节点的在线时间,当在线时间不小于门限值t时,计算本节点的CPU频率和内存容量、网络带宽和网络延迟是否满足相应的门限值,如果满足则每隔一定时间计算与本节点联系的其他节点的总数目,即度数是否不小于门限值m,如果满足,则判断本节点与其他节点每分钟的通信量是否不大于门限值q,如果满足,则判断本节点在一段时间内的CPU使用率和内存使用率是否都不大于门限值p和m,如果满足,则该普通节点宣布成为超级节点。
普通节点成为超级节点后,可以向与其联系的所有节点发送本节点成为超级节点的信息,为了节省网络资源,该节点也可以只向当前与其通信交互的节点发送本节点成为超级节点的信息,该信息携带在通信交互的消息中,例如,节点A与节点B当前进行通信交互,节点B与节点C当前进行通信交互,节点A与节点C当前没有通信交互;则节点A在与节点B交互的消息中携带节点A成为超级节点的信息,节点C在查询过程中与节点B交互,则节点B在返回给节点C的消息中携带节点A为超级节点的信息,节点C因此获知节点A为超级节点。
Newkad协议中的普通节点通过上述方式选举成为超级节点后,该超级节点具有如下特点1、Newkad协议的超级节点在P2P网络中通过限制普通节点成为超级节点的条件选举生成;2、Newkad协议的超级节点都是在线时间长的节点,根据对Gnutella网络上大量用户行为习惯的研究结果表明,在线时间长的节点在下一段时间内还继续在线的概率也是很高的,从而保证了网络的稳定性;3、Newkad协议的超级节点与普通节点之间、超级节点与超级节点之间采用分布式的Kademlia协议,由于在查找时通过超级节点查找的概率比较大,因此该超级节点在节点查询时具有查询的优先权,但是本实施例中不局限于必须通过超级节点进行查询,也可以通过普通节点查询,这样整个网络还保持着很强的分布式结构化的拓扑结构;4、Newkad网络的一个普通节点对应多个超级节点和多个普通节点,保证了网络的稳定性和查找的高效性。
Newkad协议与Kademlia协议相同,路由表也通过一些称之为K桶的表格构造而成,Newkad协议拥有两种路由表超级路由表和普通路由表,分别由超级K桶列表组成和普通K桶列表组成;超级路由表里存放160个超级K桶,每个超级K桶里存放k个超级节点的信息;普通路由表存放160个普通K桶,每个普通K桶里存放k个普通节点的信息,其中,k为K桶中存储节点信息的最大数目,根据网络规模确定。
每个K桶为一个列表,该列表保存着本节点和其他节点的距离在区间范围[2i,2i+1)内的k个节点的信息,这些信息由(Node ID,IP address,UDP port)数据构成,本节点与其他节点的距离通过对该两个节点的标识进行异或运算得到,每个K桶内部信息存放位置是根据本节点与其他节点的最近联系时间顺序排列,即联系时间最近的放在列表尾部,联系时间最远的放在列表头部。
每个K桶的模型如下表1所示

表1每个节点与其他节点进行通信后需要对其内部的K桶进行更新,假设节点A收到节点B发送的操作时,如果节点B是普通节点,则先确定与本节点和节点B的距离对应的超级K桶里面是否存在节点B的信息,如果不存在,则直接更新对应的普通K桶,如果存在,则删除超级K桶中节点B的信息,然后更新对应的普通K桶;如果节点B是超级节点,则先确定与本节点和节点B的距离对应的普通K桶里面是否存在节点B的信息,如果不存在,则直接更新对应的超级K桶,如果存在,则删除普通K桶中节点B的信息,然后更新对应的超级K桶。
本实施例中更新超级K桶和普通K桶的更新策略与Kadmelia协议的K桶更新策略相同,假设节点A接收到节点B发送的操作时,如图5所示,节点A更新K桶的实现过程如下步骤500、判断节点B是否为超级节点,如果不是,则执行步骤501至步骤505;否则,步骤506至步骤510。
步骤501、计算节点A与节点B之间的距离。
步骤502、查找两节点之间的距离对应的超级K桶。
步骤503、查询超级K桶中是否存在节点B的信息,如果存在,则执行步骤504;否则,执行步骤505。
步骤504、删除超级K桶中节点B的信息。
步骤505、确定两节点之间的距离对应的普通K桶,继续步骤511。
步骤506、计算节点A与节点B之间的距离。
步骤507、查找两节点之间的距离对应的普通K桶。
步骤508、查询普通K桶中是否存在节点B的信息,如果存在,则执行步骤509;否则,执行步骤510。
步骤509、删除普通K桶中节点B的信息。
步骤510、确定两节点之间的距离对应的超级K桶,继续步骤511。
步骤511、查询K桶中节点B的信息是否存在,如果存在,则执行步骤512;否则,执行步骤513。
步骤512、将节点B的信息移到K桶尾部。
步骤513、判断K桶中的记录条数是否小于k,如果是,则执行步骤514;否则,执行步骤515。
步骤514、将节点B的信息移到K桶尾部。
步骤515、向该K桶头部记录的节点C发送Test操作。
步骤516、判断节点C是否回复,如果是,则执行步骤517;否则,执行步骤518。
步骤517、将节点C的信息移到K桶尾部,忽略节点B的信息。
步骤518、删除节点C的信息,并将节点B的信息插入到K桶尾部。
上述实现过程描述了节点A在接收到节点B发送的操作时,对其拥有的K桶进行访问和更新的实现过程,在实际情况中,节点A拥有的某个K桶可能在一段时间之内没有被任何操作访问,这时节点A就随机从这个K桶里面找α个节点发送Test操作来维护该K桶的活跃程度,以保证K桶内所有节点都尽可能有效。
Newkad协议的操作分为底层操作和上层操作,其中,底层操作为上层操作提供服务,上层操作面向用户,下面对各操作进行分别说明。
Newkad协议包括四种底层操作,分别是Test操作、Store操作、Find_Node操作、Find_Value操作;为了防止伪造地址,在所有底层操作中,接收者都需要响应一个随机的160位的ID值。
下面对上述四种底层操作进行说明Test操作探测一个节点是否在线,如节点A向节点B发送Test操作,则节点A收到节点B的返回信息后,判断节点B在线,否则,判断节点B不在线。
Store操作以<key,value>对为参考,指示接收本操作的节点保存该<key,value>对,以供以后取用。
Find_Node操作以一个160位的ID作为操作,接收本操作的节点尽可能返回其知道的更接近目标节点标识的k个节点的信息(IP address,UDP port,Node ID)。
节点在执行Find_Node操作时,采用lookup算法从对应的超级K桶和普通K桶中获取由k个节点组成的节点串,如图6所示,构造节点串的lookup算法的具体实现过程如下1、考虑到网络中节点的优先级,而且超级节点具有高优先级,因此优先从与目标节点ID距离最近的超级K桶中取出里面所有的超级节点。
2、如果取出的超级节点个数不满足k个,则从与目标节点ID距离最近的普通K桶中取出里面的普通节点以满足k个。
3、如果两个K桶中的所有节点加起来还是不满足k个,则从邻近超级K桶中选择超级节点来凑足k个节点返回;邻近超级K桶是指在超级K桶中列表中,除了与目标节点ID距离最近的超级K桶外的其他超级K桶,共有159个;选取邻近超级K桶时依然遵循与目标节点ID的距离较近原则优先从超级K桶中获取,直到节点串中取满k个节点为止。
4、如果取出的节点个数还不满足k个,则从邻近普通K桶中选择普通节点来凑足k个节点返回;同样的,邻近普通K桶的选择方式与上述邻近超级K桶的选择方式相同,依次将邻近普通k桶里面的节点信息取出来,直到节点串中取满k个节点为止。
如果该节点的所有超级K桶和普通K桶中的所有节点个数不满足k个,则返回取出的所有节点。
Find_Value操作Find_Value操作以一个160位的ID/Key作为参数,如果接收节点先前已经收到一个Store操作,而且Store操作的参数之一(Key)就是当前Find_Value的参数,该接收节点则将Store操作的另一个参数(Value)返回给发送操作的节点;否则,该发送节点执行Find_Value操作的过程与执行Find_Node操作的过程相同,由接收节点查找与该信息ID最接近的k个节点,并将查找到的节点的信息返回给发送操作的节点。
Newkad协议包括五种上层操作,分别是节点加入网络、查询节点操作、存储操作、搜索资源操作和节点退出网络,下面分别对其进行说明。
如图7所示,节点A加入网络的实现过程如下步骤700、节点A获取一个已经在网络中的节点B的节点信息(Node ID,IP address,UDP port)。
步骤701、节点A将节点B的信息加入到对应的K桶中。
步骤702、节点A进行查找节点操作,查找的目标节点为节点A本身,由于节点A的K桶中只有节点B的信息,因此,节点A向节点B发送Find_Node操作,目标节点为节点A本身。
步骤703、节点B通过lookup算法向节点A返回最接近节点A的k个节点的信息。
步骤704、节点A接收到信息后,向k个节点中未查找过节点A的节点发送Find_Node操作,直到节点A获取的k个节点都已经查找过节点A,并且都已经返回信息给节点A。
Newkad协议的查询操作与Kadmelia协议的查询操作过程类似,只是在查询时通过lookup算法优先查询超级节点,如图8所示,Newkad协议中节点A搜索节点C的实现过程如下
步骤800、节点A使用lookup算法从本节点的K桶列表中获取最接近节点C的k个节点,并按照先获取先插入原则将该k个节点插入到最接近列表中。
步骤801、节点A从最接近列表中选择α个节点,并向该α个节点中的各节点发送Find_Node操作,其中,α的取值根据网络规模确定。
步骤802、α个节点中的各节点通过lookup算法从本节点的K桶中分别获取k个节点,并将获取的k个节点分别返回给节点A。
步骤803、判断α个节点中是否有节点回复超时,如果是,则执行步骤804;否则,执行步骤805。
步骤804、将回复超时的节点从最接近列表中删除。
步骤805、从节点A获取的k个节点和α个节点中的各节点分别返回的k个节点中选择最接近节点C的k个节点,并按照与节点C的距离从小到大的原则将其插入到最接近列表中。
步骤806、判断最接近列表中的k个节点是否都接收过节点A发送的Find_Node操作,如果是,则执行步骤808;否则,执行步骤807。
步骤807、向没有接收到Find_Node操作的节点发送Find_Node操作,返回步骤803。
步骤808、判断最接近列表中是否还有节点没有回复信息给节点A,如果是,返回步骤803;否则,执行步骤809。
步骤809、每隔一定时间判断最接近列表中的k个节点是否没有发生变化,如果是,则执行步骤810;否则,返回步骤806。
步骤810、确定最接近列表中的k个节点为最接近节点C的节点。
从上述实现过程可以看出,Newkad协议与kademlia协议和Kazaa协议相比,在执行查询操作时有如下特点1、通过lookup算法优先获取逻辑上最接近目标节点的超级节点,由于超级节点度数较大,因此提高了查询效率;而在kademlia的查询操作中,为了找到k个与目标节点ID最接近的节点,每一次Find_Node操作都是返回逻辑上更接近的节点,它无法解决这样一种情况,即返回来的某些节点的度数比较低,经过该节点查找其他节点时导致跳数比较多,从而影响了查找的效率。
2、Newkad算法通过选出性能很好,度数很高的超级节点让网络的流量尽可能地通过超级节点来承担;而在Kademlia查询中,有些节点的度数很大,其他节点经过该节点查找的频率会越来越高,但如果这些节点的机器性能不强或网络带宽很窄,就会导致网络瓶颈的出现,从而影响整个网络的效率。
3、Newkad网络中各个节点的信息(包括超级节点的信息)都会冗余地存放在其他邻近的节点上,而且在执行查询操作可以优先通过某些超级节点查询,也可以通过某些普通节点查询,这样如果节点与某个超级节点失去了联系,还可以与其他超级节点和/或其他普通节点通信;因此,即使是某个超级节点被恶意搞掉线或正常离开,对整个网络的影响不大,从而保证了整个网络的稳定性。
与上述查询操作类似,搜索资源只是以搜索的资源Key为目标参数,使用Find_Value操作代替Find_Node操作,如果接收到其他任何节点返回的与该Key对应的Value,则搜索过程结束。搜索成功时,发起搜索的节点将这个<key,value>对信息不仅存储到最近的、但没有返回该Value的节点上,还将其存储在搜索过程中访问过的所有超级节点上,这样,以后如果搜索该Key,则可能首先找到存储<key,value>对的节点,而不是直接找到最接近该Key的节点。如果一个Key被频繁搜索,则对应的<key,value>对很可能被缓存到很多不太接近Key的节点中,特别是很多超级节点中,这样可以提高搜索效率。
如图9所示,节点A搜索资源的实现过程如下步骤900、节点A使用lookup算法从本节点的K桶列表中获取最接近目标资源的k个节点,并按照先获取先插入原则将该k个节点插入到最接近列表中。
步骤901、节点A从k个节点中选择α个节点,并向该α个节点中的各节点发送Find_Value操作。
步骤902、α个节点中各节点判断本节点是否存储了目标资源,如果是,执行步骤903;否则,执行步骤904。
步骤903、将所述目标资源返回给节点A,并结束搜索流程。
步骤904、各节点通过lookup算法从本节点的K桶列表中分别获取最接近目标资源的k个节点,并将该k个节点的信息返回给节点A。
步骤905、节点A从获取的k个节点和各节点分别返回的k个节点中选择最接近目标资源的节点,并按照与目标资源的距离从小到大的原则将其插入到最接近列表中。
步骤906、节点A向最接近列表中没有接收到Find_Value操作的节点发送Find_Value操作,直到k个节点中有节点返回目标资源。
节点A根据节点返回的信息确定最接近目标资源的k个节点时,节点A每次在接收到一个节点返回的k个节点的信息时,从已确定最接近目标资源的k个节点和返回的k个节点中确定最接近目标资源的k个节点,并向该k个节点中未查找过目标资源的节点发送查找所述目标资源的消息,采用递归查询方式直到有节点向所述源节点返回所述目标资源时,结束资源搜索。
节点执行存储资源操作时,主要是为了实现资源的发布,如图10所示,节点A存储资源的实现过程如下步骤1000、节点A使用lookup算法从本节点的K桶列表中获取最接近目标资源的k个节点。
步骤1001、节点A向k个节点中的各节点发送存储<key,value>对的Store操作。
步骤1002、k个节点中的各节点在本节点存储<key,value>对。
k个节点的每一个节点在一定时间内需要重新发布本节点所拥有的所有<key,value>对信息;节点A定期(如24小时)向k个节点重新发布<key,value>对信息,否则在发布后的定期时间后该<key,value>对信息过期。
Newkad算法中,无论是普通节点还是超级节点退出网络时,都不需要执行任何操作,因为Newkad协议的Find_Value操作和Store操作已经保证该节点保存的信息都冗余地存放在邻近的节点上。
本实施例中实现搜索网络节点的过程中对应的网络节点的结构如图11所示,包括接收单元110,用于接收其他节点发送的消息。
发送单元111,用于向其他节点发送消息。
选举单元112,用于根据普通节点成为超级节点的条件将本节点的性能参数值与所述条件规定的阈值进行比较,并在确定本节点的性能满足成为超级节点的条件时,通知发送单元111向与本节点通信的其他节点发送本节点为超级节点的消息。
监控单元113,用于超级节点在确定本节点的性能满足超级节点下降为普通节点的条件时,通知发送单元111向与本节点通信的其他节点发送本节点下降为普通节点的消息。
存储单元114,用于存储本节点所有超级K桶和所有普通K桶,其中,所述超级K桶存储超级节点信息,所述普通K桶存储普通节点信息。
第一搜索单元115,用于根据本节点与目标节点的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶。
第一获取单元116,用于从查找到的K桶中获取k个节点,其中,按照超级K桶优先原则获取节点,k为K桶保存中节点的最大数目;当接收单元110接收到查找目标节点的消息时,通知发送单元111将获取的k个节点的信息发送给发送查找目标节点的消息的节点。
第一选择单元117,用于从所述k个节点中选择α个节点,并通知发送单元111向该α个节点中的各节点发送查找所述目标节点的消息。
第一确定单元118,用于根据其他节点返回的信息确定最接近目标节点的k个节点,从已确定最接近目标节点的k个节点和接收单元接收到的其他节点返回的k个节点中确定最接近目标节点的k个节点,该k个节点均已查找过目标节点、并且均已向本节点回复信息;当k个节点中存在未查找过目标节点的节点时,通知发送单元111向其发送查找所述目标节点的消息。
更新单元119,用于在接收到其他节点发送的信息后更新所述存储单元114中相应的超级K桶和普通K桶。
本实施例中实现搜索网络资源的过程中对应的网络节点的结构如图12所示,包括接收单元110,用于接收其他节点发送的消息。
发送单元111,用于向其他节点发送消息。
选举单元112,用于根据普通节点成为超级节点的条件将本节点的性能参数值与所述条件规定的阈值进行比较,并在确定本节点的性能满足成为超级节点的条件时,通知发送单元111向与本节点通信的其他节点发送本节点为超级节点的消息。
监控单元113,用于超级节点在确定本节点的性能满足超级节点下降为普通节点的条件时,通知发送单元111向与本节点通信的其他节点发送本节点下降为普通节点的消息。
存储单元114,用于存储本节点所有超级K桶和所有普通K桶,其中,所述超级K桶存储超级节点信息,所述普通K桶存储普通节点信息。
第二搜索单元215,用于根据本节点与目标资源的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶。
第二获取单元216,用于从查找到的K桶中获取k个节点,其中,按照超级K桶优先原则获取节点,k为K桶保存中节点的最大数目;当接收单元110接收到查询目标资源的消息时,并且本节点没有存储目标资源时,通知发送单元111将获取的k个节点的信息发送给发送查询目标资源的消息的节点。
第二选择单元217,用于当所述k个节点从所述k个节点中选择α个节点,并通知发送单元111向该α个节点中的各节点发送查找目标资源的消息。
判断单元218,用于在接收单元110接收到查询目标资源的消息时,判断本节点是否拥有或存储所述目标资源,如果是,则通知发送单元111将目标资源发送给发送查找目标资源的消息的节点,以及向访问过的所有超级节点和本节点确定的最接近目标资源的k个节点中没有向本节点返回目标资源信息的节点发送存储目标资源信息的消息;否则,指示第二搜索单元215执行操作;在接收单元110接收到其他节点发送的k个节点的信息时,将该节点信息发送给第二确定单元219。
第二确定单元219,用于根据其他节点返回的信息确定最接近目标资源的k个节点,从已确定最接近目标节点的k个节点和接收单元接收到的其他节点返回的k个节点中确定最接近目标节点的k个节点;当k个节点中存在未查找过目标资源的节点时,通知发送单元111向其发送查找所述目标资源的消息,直到有节点向本节点返回目标资源。
更新单元119,用于在接收到其他节点发送的信息后更新所述存储单元114中相应的超级K桶和普通K桶。
本实施例中的网络节点可以同时实现搜索网络节点和网络资源,因此,上述两种网络节点中的功能单元可以单独或者合并设置在同一网络节点中。
综上所述,本发明实施例技术方案具有如下有益效果1、可扩展性好本发明实施例根据节点性能普通节点动态竞争成为超级节点,若增加某些管理功能,可以将该功能直接加载在超级节点上;例如,在某些超级节点中增加节点的标识分配功能,超级节点管理网络节点信誉度等。
2、稳定性高本发明实施例中的超级节点都是在线时间长的节点,根据对Gnutella网络上大量用户行为习惯的研究结果表明,在线时间长的节点在下一段时间内还继续在线的概率较高,从而可以保证网络的稳定性。
另外,由于使用类似于Kad协议的算法,各个节点的信息(包括超级节点信息)都冗余地记录在与该节点通信过的某些节点上,在执行查询操作时优先查询超级节点,也可以查询普通节点;这样,如果与某个超级节点通信中断,还可以与其他超级节点或其他普通节点通信,所以在某些超级节点被恶意攻击下线或正常离开时,不会导致簇内节点孤立的问题,从而提高了整个网络的稳定性。
3、负载平衡Newkad协议使各个节点按节点本身的能力承担不同的负载量,从而使得整个网络达到真正的负载平衡,避免了现有Kad协议中可能使一些自然生成度数较高但是能力较差的节点的负载越来越大,从而使该节点成为整个网络的瓶颈,而影响查找效率的问题。
4、查找效率高Newkad协议中的超级节点与普通节点之间、超级节点与超级节点之间采用类似的分布式Kad协议,从而保证了查找效率。
同时,Newkad协议在查找信息时优先查找多个超级节点,也可以查找普通节点,相对加快了查找速度;而且在查找信息的过程中,将查找的信息存储在查找到的逻辑距离最接近的多个普通节点上,还将该信息存储在经过的所有超级节点上,从而提高了查找相同资源的查找效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种选举超级节点的方法,其特征在于,包括步骤网络中的普通节点根据普通节点成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较;以及所述普通节点确定本节点的性能满足成为超级节点的条件时,向与本节点通信的其他节点发送本节点为超级节点的消息。
2.如权利要求1所述的方法,其特征在于,普通节点成为超级节点的条件包括CPU的频率和内存容量不低于相应的阈值;节点的网络带宽不低于相应的阈值;节点的网络延迟不大于相应的阈值;与本节点通信的其他节点的总数目不小于相应的阈值;节点的在线时间不低于相应的阈值;每分钟与其他节点的通信总量不大于相应的阈值;预定时间内CPU平均使用率不大于相应的阈值,内存平均使用率不大于相应的阈值。
3.如权利要求1所述的方法,其特征在于,所述普通节点成为超级节点后,当其节点性能满足下述条件之一时,向与本节点通信的其他节点发送本节点下降为普通节点的消息每分钟与其他节点的通信总量大于相应的阈值;预定时间内CPU平均使用率大于相应的阈值;预定时间内内存平均使用率大于相应的阈值。
4.如权利要求2或3所述的方法,其特征在于,普通节点成为超级节点的条件中的各阈值根据网络规模设置。
5.如权利要求1至4任一项所述的方法,其特征在于,新加入网络的节点默认为普通节点,并在预定时间后确定本节点的性能是否满足成为超级节点的条件。
6.如权利要求5所述的方法,其特征在于,网络中的节点根据其他节点发送的消息确定该其他节点地位变化时,更新对应的存储节点信息的K桶。
7.如权利要求6所述的方法,其特征在于,所述K桶包括存储超级节点信息的超级K桶和存储普通节点信息的普通K桶。
8.一种搜索网络节点的方法,其特征在于,包括步骤源节点根据本节点与目标节点的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶,其中,由网络中的普通节点根据成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较选举出超级节点;所述源节点从查找到的K桶中获取k个节点,其中,按照超级K桶优先原则获取节点,k为K桶中保存节点的最大数目;所述源节点从所述k个节点中选择α个节点,并向该α个节点中的各节点发送查找所述目标节点的消息,所述各节点按所述源节点查找K桶和获取节点的方式分别获取最接近目标节点的k个节点并将该k个节点的信息返回给所述源节点;以及所述源节点根据节点返回的信息确定最接近目标节点的k个节点,其中,所述源节点每次在接收到一个节点返回的k个节点的信息时,从已确定最接近目标节点的k个节点和返回的k个节点中确定最接近目标节点的k个节点,并向该k个节点中未查找过目标节点的节点发送查找所述目标节点的消息,直到源节点确定的最接近目标节点的k个节点均已查找过目标节点、并且均已向源节点回复信息。
9.如权利要求8所述的方法,其特征在于,当节点从根据本节点与目标节点的距离查找到的超级K桶中获取的超级节点的数目少于k个时,进一步从对应的普通K桶中获取普通节点。
10.如权利要求9所述的方法,其特征在于,当节点从根据本节点与目标节点的距离查找到的超级K桶和普通K桶中获取的节点的数目少于k个时,进一步从与所述距离邻近的距离所对应的超级K桶或普通K桶中获取节点,直到获取到的节点的数目为k个。
11.如权利要求10所述的方法,其特征在于,当节点从所有超级K桶和所有普通K桶中获取的节点的数目少于k个时,确定获取到的节点为当前最接近目标节点的节点。
12.如权利要求8至11任一项所述的方法,其特征在于,将当前节点的标识与所述目标节点的标识进行异或运算,根据运算结果确定当前节点与所述目标节点的距离。
13.如权利要求12所述的方法,其特征在于,接收到所述源节点发送的查找目标节点消息的节点更新对应的超级K桶和普通K桶。
14.一种搜索网络资源的方法,其特征在于,包括步骤源节点根据本节点与目标资源的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶,其中,由网络中的普通节点根据成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较选举出超级节点;所述源节点从查找到的K桶中获取k个节点,其中,按照超级K桶优先原则获取节点,k为K桶保存中节点的最大数目;所述源节点从所述k个节点中选择α个节点,并向该α个节点中的各节点发送查找所述目标资源的消息;当所述α个节点中任意一个节点存储所述目标资源时,该任意节点将所述目标资源返回给所述源节点,并结束搜索;否则,该任意节点按所述源节点查找K桶和获取节点的方式分别获取最接近目标资源的k个节点并将该k个节点的信息返回给所述源节点;以及所述源节点根据节点返回的信息确定最接近目标资源的k个节点,其中,所述源节点每次在接收到一个节点返回的k个节点的信息时,从已确定最接近目标资源的k个节点和返回的k个节点中确定最接近目标资源的k个节点,并向该k个节点中未查找过目标资源的节点发送查找所述目标资源的消息,直到有节点向所述源节点返回所述目标资源。
15.如权利要求14所述的方法,其特征在于,当节点从根据本节点与目标资源的距离查找到的超级K桶中获取的超级节点的数目少于k个时,进一步从对应的普通K桶中获取普通节点。
16.如权利要求15所述的方法,其特征在于,当节点从根据本节点与目标资源的距离查找到的超级K桶和普通K桶中获取的节点的数目少于k个时,进一步从与所述距离邻近的距离所对应的超级K桶或普通K桶中获取节点,直到获取到的节点的数目为k个。
17.如权利要求14至16任一项所述的方法,其特征在于,将所述目标资源信息保存到在搜索目标资源过程中访问过的所有超级节点上和所述源节点当前确定的最接近目标资源的k个节点中没有向源节点返回目标资源的节点上。
18.如权利要求17所述的方法,其特征在于,将当前节点的标识与所述目标资源的标识进行异或运算,根据运算结果确定当前节点与所述目标资源的距离。
19.如权利要求18所述的方法,其特征在于,接收到所述源节点发送的查找目标资源消息的节点更新对应的超级K桶和普通K桶。
20.一种网络节点,其特征在于,包括用于向其他节点发送消息的单元;用于根据普通节点成为超级节点的条件将本节点的性能参数值与所述条件规定的阈值进行比较,并在确定本节点的性能满足成为超级节点的条件时,向与本节点通信的其他节点发送本节点为超级节点的消息的单元;用于接收其他节点发送的消息的单元;用于存储本节点所有超级K桶和所有普通K桶的单元,其中,所述超级K桶存储超级节点信息,所述普通K桶存储普通节点信息。
21.如权利要求20所述的网络节点,其特征在于,所述网络节点还包括用于超级节点在确定本节点的性能满足超级节点下降为普通节点的条件时,向与本节点通信的其他节点发送本节点下降为普通节点的消息的单元。
22.如权利要求21所述的网络节点,其特征在于,所述网络节点还包括用于根据本节点与目标节点的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶的单元;用于从查找到的K桶中获取k个节点的单元,其中,按照超级K桶优先原则获取节点,k为K桶保存中节点的最大数目;用于从所述k个节点中选择α个节点,并向该α个节点中的各节点发送查找所述目标节点的消息的单元;用于在接收到查找目标节点的消息后向发送查找目标节点消息的节点发送查找到的k个节点的信息的单元;用于根据节点返回的信息确定最接近目标节点的k个节点的单元,其中,本节点每次在接收到一个节点返回的k个节点时,从已确定最接近目标节点的k个节点和返回的k个节点中确定最接近目标节点的k个节点,并向该k个节点中未查找过目标节点的节点发送查找所述目标节点的消息,直到本节点确定的最接近目标节点的k个节点均已查找过目标节点、并且均已向本节点回复信息。
23.如权利要求21所述的网络节点,其特征在于,所述网络节点还包括用于根据本节点与目标资源的距离查找存储超级节点信息的超级K桶和存储普通节点信息的普通K桶的单元;用于从查找到的K桶中获取k个节点的单元,其中,按照超级K桶优先原则获取节点,k为K桶保存中节点的最大数目;用于从所述k个节点中选择α个节点,并向该α个节点中的各节点发送查找所述目标资源的消息的单元;用于在本节点存储所述目标资源时,将所述目标资源返回给查找目标资源的节点的单元;用于在本节点没有存储所述目标节点时,将获取的最接近所述目标资源的k个节点返回给发送查找目标资源的节点的单元;用于根据其他节点返回的信息确定最接近目标资源的k个节点的单元,其中,本节点每次在接收到一个节点返回的k个节点时,从已确定最接近目标资源的k个节点和返回的k个节点中确定最接近目标资源的k个节点,并向该k个节点中未查找过目标资源的节点发送查找所述目标资源的消息,直到有节点向本节点返回所述目标资源。
24.如权利要求23所述的网络节点,其特征在于,所述网络节点还包括用于在获取到目标资源后向在搜索网络资源过程中访问过的所有超级节点和本节点确定的最接近目标资源的k个节点中没有向本节点返回目标资源的节点发送存储目标资源的消息的单元。
25.如权利要求20至24任一项所述的网络节点,其特征在于,所述网络节点还包括用于在接收到其他节点发送的消息时更新相应的超级K桶和普通K桶的单元。
26.一种点对点网络,其特征在于,包括多个网络节点,其中,普通节点根据成为超级节点的条件将本节点的性能参数值与所述条件规定的阈值进行比较选举出超级节点,并且,一个超级节点或一个普通节点都连接多个超级节点和多个普通节点。
27.如权利要求26所述的点对点网络,其特征在于,所述普通节点成为超级节点后,该超级节点在预定时间间隔内判断本节点的性能是否满足下降为普通节点的条件,并在满足条件时下降为普通节点。
全文摘要
本发明公开了一种选举超级节点、搜索网络节点或资源的方法、装置及系统,用于解决现有技术中网络负载不均衡以及局部查找节点而导致网络的稳定性较差的问题,本方案中,网络中的普通节点根据普通节点成为超级节点的条件,将本节点的性能参数值与所述条件规定的阈值进行比较,并在确定本节点的性能满足成为超级节点的条件时,向与本节点通信的其他节点发送本节点为超级节点的消息;并且在搜索网络节点或资源时,优先查找超级节点;采用本发明可以均衡网络负载、提高查找节点的效率以及网络的稳定性。
文档编号H04L29/06GK101064649SQ200710003320
公开日2007年10月31日 申请日期2007年2月2日 优先权日2007年2月2日
发明者孙知信, 宫婧, 郭晓东, 江兴烽 申请人:华为技术有限公司, 南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1