内容节点双向聚类的系统、装置及方法转让专利

申请号 : CN200810218623.0

文献号 : CN101729387A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李金龙沈静波刘姗姗张进王铁英

申请人 : 华为技术有限公司中国科学技术大学

摘要 :

本发明实施例提供一种内容节点双向聚类系统,包括节点层和内容层;所述节点层中,请求同一内容的节点之间通过节点对内容的查询形成节点松散聚类;所述内容层中,被同一个节点请求的内容之间根据节点的需求形成内容松散聚类。本发明实施例还提供一种查询获取内容的方法、关联列表更新的方法以及内容更新的方法。通过本发明实施例提供的技术方案,在当前网络规模不断增加的情况下,仍能进行高效的内容查询,特别是一个节点查询两个相互关联的内容或者两个相互关联的节点查询同一个内容时,能够迅速的找到拥有符合查询条件的节点,即使用户的关联内容集也处于动态变化之中。

权利要求 :

1.一种内容节点双向聚类系统,其特征在于:包括节点层和内容层;

所述节点层中,请求同一内容的节点之间通过节点对内容的查询形成节点松散聚类;

所述内容层中,被同一个节点请求的内容之间根据节点的需求形成内容松散聚类。

2.根据权利要求1所述的系统,其特征在于:根据对某内容的需求,所述节点层的节点包括:内容寻址网络CAN负责节点CP,用于作为备份节点保存所述内容的信息,并作为查询所述内容时的索引节点;

复制节点RP,用于存储所述内容的副本,和/或对所述内容进行操作或更新。

3.根据权利要求2所述的系统,其特征在于:所述复制节点RP包括:虚拟服务器VS,所述VS和所述CP双向连接,用于产生和发布所述内容,负责对所述内容进行更新并发布;

强一致节点CRP,与所述VS双向连接,当所述VS更新内容时,接收所述VS发布的更新信息;

弱一致节点IRP,与所述VS形成由所述IRP指向所述VS的单向连接,在使用内容前,先向所述VS验证自身版本信息以保持内容的一致性。

4.根据权利要求1所述的系统,其特征在于:所述节点存储的信息包括:自身的键值、键值空间范围、CAN路由表和/或关联列表。

5.根据权利要求1所述的系统,其特征在于:所述关联列表记载的信息包括:所述节点的标识符、IP地址、关联内容相似度、所述关联内容相似度最近一次更新的时间、所述节点拥有的内容总数、最近一段时间通过所述节点进行路由成功召回结果的次数和/或所述节点的综合性能。

6.一种利用如权利要求1-5任一项所述的系统查询获取内容的方法,包括:请求节点向自身关联列表中的节点发送对某内容的第一查询请求,以使得接收所述第一查询请求的第一目标节点根据所述第一查询请求进行处理;

如果所述请求节点接收到所述第一目标节点反馈查询成功,则为所述查询的内容建立一个临时的下载地址列表并下载所述查询的内容;

如果所述请求节点接收到所述第一目标节点反馈查询失败,则向自身当前邻居中距离所述第一目标节点键值最近的节点发送第二查询请求。

7.根据权利要求6所述的方法,其特征在于:所述接收所述第一查询请求的节点根据所述第一查询请求进行处理,具体包括:所述第一目标节点根据所述第一查询请求中的请求节点标识符以及请求节点生成的随机数检索请求缓存栈,判断自身是否已经接收过所述第一查询请求,如果已经接收过,则丢弃所述第一查询请求;

如果判断自身未接收过所述第一查询请求,则所述第一目标节点进一步查看自身的需求内容列表中是否有所述请求节点所查询的内容;

如果所述第一目标节点拥有满足查询的内容,则根据自身相对于所述内容的身份决定发送的信息;

如果所述第一目标节点没有满足查询的内容,则直接丢弃查询信息,反馈查询失败。

8.根据权利要求7所述的方法,其特征在于:所述接收所述第一查询请求的第一目标节点根据自身相对于所述内容的身份决定发送的信息,具体包括:如果所述第一目标节点是CP或CRP,则可以直接将自身的地址信息以及所述内容VS的地址作为可用下载地址,并携带上自身当前的内容列表发送给所述请求节点;

如果所述第一目标节点是VS,则直接将自身的地址信息以及存储的所述内容所有CRP地址作为可用下载地址,并携带上自身当前的内容列表发送给所述请求节点;

如果所述第一目标节点是IRP,则将所述内容的VS地址作为可用下载地址,并携带上自身当前的内容列表发送给所述请求节点。

9.根据权利要求6所述的方法,其特征在于:还包括:

所述接收所述第二查询请求的第二目标节点根据所述第二查询请求进行处理。

10.根据权利要求9所述的方法,其特征在于:所述接收所述第二查询请求的第二目标节点根据所述第二查询请求进行处理,具体包括:所述第二目标节点根据所述第二查询请求中的请求节点标识符以及请求节点生成的随机数检索请求缓存栈,判断自身是否已经接收过所述查询请求,如果已经接收过,则丢弃所述第二查询请求;

如果判断自身未接收过所述查询请求,则所述节点进一步查看自身的需求内容列表中是否有所述请求节点所查询的内容;

如果所述第二目标节点拥有满足查询的内容,则根据自身相对于所述内容的身份决定发送的信息;

如果所述第二目标节点没有满足查询的内容,则根据键值最近原则进一步转发所述第二查询请求。

11.根据权利要求10所述的方法,其特征在于:所述接收所述第二查询请求的第二目标节点根据自身相对于所述内容的身份决定发送的信息,具体包括:如果所述第二目标节点是CP或CRP,则可以直接将自身的地址信息以及所述内容VS的地址作为可用下载地址,并携带上自身当前的内容列表发送给所述请求节点;

如果所述第二目标节点是VS,则直接将自身的地址信息以及存储的所述内容所有CRP地址作为可用下载地址,并携带上自身当前的内容列表发送给所述请求节点;

如果所述第二目标节点是IRP,则将所述内容的VS地址作为可用下载地址,并携带上自身当前的内容列表发送给所述请求节点;

12.一种利用如权利要求1-5任一项所述的系统进行关联列表更新的方法,包括:获取关联列表中某节点当前的内容列表;

计算请求节点与所述关联列表中某节点的关联相似度;

根据计算得到的关联相似度更新请求节点的关联列表。

13.根据权利要求12所述的方法,其特征在于:所述获取关联列表中某节点当前的内容列表,具体包括:通过查询获取内容的流程获取关联列表中某节点反馈的当前的内容列表;或通过对关联列表中某节点周期性的定时检测获取所述内容列表。

14.根据权利要求13所述的方法,其特征在于:所述通过对关联列表中某节点周期性的定时检测获取所述内容列表,具体包括:设置关联内容相似度的有效期为T,检测到关联列表中的所述某节点最近一次更新时间距离当前时间的间隔超过了有效期T;

向所述某节点发送询问其当前内容列表的请求;

接收所述某节点返回的其自身当前的内容列表。

15.一种利用如权利要求1-5任一项所述的系统进行内容更新的方法,包括:接收请求内容更新的节点向产生和发布内容的节点发送更新请求;

所述产生和发布内容的节点对接收的更新请求进行审核,并根据审核结果进行处理;

所述产生和发布内容的节点在更新后发布更新结果和新的版本号。

16.根据权利要求15所述的方法,其特征在于:所述请求内容更新的节点向产生和发布内容的节点发送更新请求,具体包括:所述请求内容更新的节点判断自身的类型:

如果是CRP,则可以直接内容进行操作,并向所述产生和发布内容的节点发送更新请求,所述请求包括:操作结果和当前的版本号;

如果是IRP,则先向所述产生和发布内容的节点发送当前版本号来检测版本信息,如果该版本号和所述产生和发布内容的节点上存储的当前版本一致,则所述产生和发布内容的节点返回确认信息,如果不一致,则所述产生和发布内容的节点返回当前最新版本的内容信息;此后所述IRP向所述产生和发布内容的节点发送更新请求。

17.根据权利要求15所述的方法,其特征在于:所述产生和发布内容的节点对接收的更新请求进行审核,并根据审核结果进行处理,具体包括:所述产生和发布内容的节点判断内容的版本号是否是最新的版本号,如果是,则接受更新并修改版本号,同时返回确认信息;否则,拒绝更新,并返回最新版本信息。

18.根据权利要求15所述的方法,其特征在于:如果有两个同时提交的更新请求,则所述产生和发布内容的节点根据所述更新请求的时间戳来判定更新的有效性,接受时间戳较早的更新。

19.根据权利要求15所述的方法,其特征在于:所述产生和发布内容的节点在更新后发布更新结果和新的版本号,具体包括:所述产生和发布内容的节点接受更新之后,将更新结果和新的版本号发送给CP和所有CRP。

20.一种查询获取内容的系统,其特征在于:包括:

请求节点,用于向关联列表中的第一目标节点发送第一查询请求、在接收到所述第一查询请求查询失败的反馈时向距离第一目标节点键值最近的第二目标节点发送第二查询请求,以及根据所述第一或第二目标节点反馈的内容列表为查询的内容建立临时的下载地址列表并下载所述内容;

目标节点,包括第一目标节点或第二目标节点,分别用于接收所述第一或第二查询请求,并根据所述查询请求进行处理。

21.根据权利要求20所述的系统,其特征在于:所述目标节点进一步包括:第一判断单元,用于根据第一查询请求或第二查询请求中的请求节点标识符以及请求节点生成的随机数检索请求缓存栈,判断所述目标节点是否已经接收过所述查询请求,如果已经接收过,则丢弃所述查询请求;

第二判断单元,用于当所述第一判断单元判断目标节点未接收过所述查询请求时,进一步判断目标节点需求内容列表中是否有所述查询的内容;

第一控制单元,用于当所述第二判断单元判断目标节点的需求内容列表中有满足查询的内容时,根据目标节点相对于所述内容的身份决定发送的信息;

第二控制单元,用于当所述第二判断单元判断目标节点的需求内容列表中没有满足查询的内容时,根据查询的类型进行不同的处理。

22.一种关联列表更新的装置,其特征在于:包括:

获取单元,用于获取关联列表中某节点当前的内容列表;

计算单元,用于计算请求节点与所述关联列表中某节点的关联相似度;

更新单元,用于根据计算得到的关联相似度更新请求节点的关联列表。

23.根据权利要求22所述的装置,其特征在于:所述获取单元可以通过查询获取内容的流程获取关联列表中某节点反馈的当前的内容列表;也可以通过对关联列表中某节点周期性的定时检测获取所述内容列表。

说明书 :

技术领域

本发明涉及通信领域,尤其涉及一种内容节点双向聚类的系统、装置及方法。

背景技术

对等网络P2P(Peer-to-Peer)提供了一种分布式内容共享的有效途径,可以根据所需内容的关键属性,找到所需的内容,并可以获得拥有所需内容的一组节点。但随着用户的不断增加,网络中的节点数、内容数以及内容的副本数也在不断增加,内容查找和副本管理的复杂度也在加大。目前主要通过降低内容查找的通信量,缩短内容查找所需的时间,来优化分布式网络的拓扑结构。比如基于DHT(Distributed Hash Table,分布式哈希表)结构的Chord、Pastry等P2P网络结构,还有基于混合结构的P2P网络,如SWOP,这些模型都通过构建额外的路由表优化拓扑,提高内容查找的效率。
例如,现有方案一中,基于语义或本体论的模型首先通过语义或本体论的方式对内容或兴趣进行划分,构建成一个语义网络或一个本体树,预定义两点之间的关联和边的权重,或者直接使用已有的词典或本体树,并将这些知识存储在所有的节点上或放置在一个所有节点都可以查询的位置。这样每个节点都可以根据这些知识对内容和节点的兴趣进行描述和关联,并计算节点之间的关联度,然后根据兴趣形成聚类。在这种聚类结构中,由于关联的内容一般位于相同的聚类之内,所以这种方式一定程度可以提高内容查找的效率,特别是关联内容查找的效率。
又如,现有方案二中,基于行为或历史信息的方式使用用户的行为或历史记录进行分析,获取内容和节点之间的关联,在此基础上形成聚类,加速查找。
在实现本发明的过程中,发明人发现现有技术至少存在以下缺陷:现有的方案虽然在一定程度上提高了内容查找的效率,但并没有充分利用用户之间以及内容之间的固有关联,在动态变化的网络和不断更新的内容下,内容的查找效率依然不高,也无法适应多副本的应用环境。

发明内容

有鉴于此,有必要提供一种内容节点双向聚类的系统、装置及方法,以便在当前网络规模不断增加的情况下,仍能进行高效的内容查询、关联列表更新或内容更新。
本发明实施例提供一种内容节点双向聚类系统,包括节点层和内容层;所述节点层中,请求同一内容的节点之间通过节点对内容的查询形成节点松散聚类;所述内容层中,被同一个节点请求的内容之间根据节点的需求形成内容松散聚类。
本发明实施例还提供一种查询获取内容的方法,包括:
请求节点向自身关联列表中的节点发送对某内容的第一查询请求;
所述接收所述第一查询请求的第一目标节点根据所述第一查询请求进行处理;
如果所述请求节点接收到所述第一目标节点反馈查询成功,则为所述查询的内容建立一个临时的下载地址列表并下载所述查询的内容;
如果所述请求节点接收到所述第一目标节点反馈查询失败,则向自身当前邻居中距离所述第一目标节点键值最近的节点发送第二查询请求。
本发明实施例还提供一种关联列表更新的方法,包括:
获取关联列表中某节点当前的内容列表;
计算请求节点与所述关联列表中某节点的关联相似度;
根据计算得到的关联相似度更新请求节点的关联列表。
本发明实施例还提供一种内容更新的方法,包括:
请求内容更新的节点向产生和发布内容的节点发送更新请求;
所述产生和发布内容的节点对接收的更新请求进行审核,并根据审核结果进行处理;
所述产生和发布内容的节点在更新后发布更新结果和新的版本号。
本发明实施例还提供一种查询获取内容的系统,包括:
请求节点,用于向关联列表中的第一目标节点发送第一查询请求、在接收到所述第一查询请求查询失败的反馈时向键值距离所述第一目标节点键值最近的第二目标节点发送第二查询请求,以及根据所述第一或第二目标节点反馈的内容列表为查询的内容建立临时的下载地址列表并下载所述内容;
目标节点,包括第一目标节点或第二目标节点,分别用于接收所述第一或第二查询请求,并根据所述查询请求进行处理。
本发明实施例还提供一种关联列表更新的装置,包括:
获取单元,用于获取关联列表中某节点当前的内容列表;
计算单元,用于计算请求节点与所述关联列表中某节点的关联相似度;
更新单元,用于根据计算得到的关联相似度更新请求节点的关联列表。
通过本发明实施例提供的技术方案,在当前网络规模不断增加的情况下,通过第一查询提高关联内容的查询效率,增加返回的满足查询的节点数;并通过第二查询提高普通内容的查询效率,并保证在第一查询失败时至少能返回一个满足查询的节点,这样使得即使用户的关联内容集处于动态变化之中,也能够迅速的找到符合查询条件的节点。此外,能够适合当前多内容副本的应用环境,能在动态变化的网络和不断更新的内容下,保证副本的一致性和有效性。

附图说明

图1是本发明实施例一一种内容节点双向聚类的系统的原理示意图;
图2是本发明实施例一中一个内容的关联节点之间关系示意图;
图3是本发明实施例一中关联列表的数据结构示意图;
图4是本发明实施例一中节点的数据结构示意图;
图5是本发明实施例二一种查询获取内容的方法的具体流程示意图;
图6是本发明实施例二中查询请求的数据结构示意图;
图7是本发明实施例三一种关联列表更新的方法的流程示意图;
图8是本发明实施例三中获取当前内容列表的具体流程示意图;
图9是本发明实施例四一种内容更新的方法的流程示意图;
图10是本发明实施例五一种查询获取内容的系统的结构示意图;
图11是本发明实施例六一种关联列表更新的装置的结构示意图。

具体实施方式

在实际网络中,用户的需求是有趋向性的,用户在一段时间内频繁需求的内容可以视为用户在该时刻的关联内容集,也就是节点的兴趣集。这些内容彼此之间会存在相似性或其他的关联,可以视为一个内容间的松散聚类。而同一内容也会被需求它的用户缓存,从而在网络中拥有很多副本。存储了这些副本的用户由于请求了同一内容,所以他们的关联内容集在不同程度上有所交叉,从而在这些用户之间形成了关联,可以视为一个节点间的松散聚类。这两种聚类分别描述了内容之间的关联和用户之间的关联,而内容和用户之间的需求关系则在这两种松散聚类之间建立了连接。
内容是存储在节点之上,内容之间的松散聚类客观上形成了存储内容节点之间的松散聚类,这些节点之间的关联是建立在关联内容集相似的基础上。因此可以利用这种关联提高内容查找的效率。另一方面,节点间的松散聚类是建立在对同一内容的需求之上,这个聚类可以被用来对内容的副本进行管理,在尽量低的通信量之下保证内容的更新发布以及副本的有效性和一致性。
以下结合附图对本发明实施例进行详细描述。
如图1所示,本发明实施例一内容节点双向聚类系统包括节点层和内容层,所述节点层中,请求同一内容的节点之间通过节点对内容的查询形成节点松散聚类;所述内容层中,被同一个节点请求的内容之间根据节点的需求形成内容松散聚类。例如,节点P1,P2,P3,P4,P6形成了针对内容A的节点松散聚类;而内容A,D,E则是由节点P4的需求而形成的内容松散聚类。
节点之间采用CAN(Content-Addressable Network,内容寻址网络)路由构建了d维空间;而内容则根据DHT机制分配到键值最接近的节点之上。
每个内容通过DHT映射到一个键值最接近的节点上,这个节点称为该内容的CAN负责节点(CAN Peer:CP),如图1中的节点P1是内容A的CP。CP本身并不负责内容的管理和更新,而是作为一个备份节点保存内容的信息,并作为查询时的索引节点。
每个内容可能会被其他节点需要,这些节点对内容进行访问,存储了内容的副本,并可能对内容进行操作或更新,这些节点称为该内容的复制节点(Replica Peer:RP),如图1中,节点P2、P3、P4、P6都是内容A的RP。RP之间通过建立层次结构完成对内容以及副本的维护和更新。RP分为三类:虚拟服务器(Virtual Server:VS)、强一致节点(Consistent Replica Peer:CRP)、弱一致节点(Inconsistent Replica Peer:IRP)。
VS是产生和发布内容的节点,负责对内容进行更新并发布。VS和CP保持双向连接,并周期性的探测存活。
CRP是和VS保持强一致的节点,CRP上存储的内容副本一直保持最新的版本,在内容更新后,CRP会接收到VS发布的更新信息。CRP和VS之间保持双向连接,并保持定时器,在一定周期内若没有交互信息,则会主动发送信息探测存活。
IRP是和VS保持弱一致的节点,IRP上存储的副本可能是陈旧的版本,在内容发生更新后,不会接收到VS发布的更新信息。在IRP使用内容前,需要先向VS验证版本信息来保持内容的一致性。
本发明实施例根据节点对内容的需求以及历史信息,在内容之间以及节点之间建立了两种松散聚类结构,并利用节点对内容的需求在两种松散聚类之间建立了连接,从而形成了内容节点的双向聚类拓扑结构。在这个双向松散聚类拓扑下,具有相似关联内容集的节点之间以较大的概率建立连接。本发明实施例通过利用这些连接提高了内容查找的能力范围和响应速度,特别是关联内容的查询效率。此外,本发明实施例还可通过利用请求同一个内容的节点之间形成的松散聚类对副本进行管理,在内容更新的情况下保证了副本的一致性和有效性。
同一内容的关联节点之间的关系如图2所示,节点根据自身的需求和性能决定是成为CRP还是IRP。CP和VS之间、VS和CRP之间的连接是双向的,VS和IRP之间的连接是单向的,从IRP指向VS。此外,网络中还随机存在着若干在查询路由时建立的由IRP或CRP发起的指向CRP的单向连接。这些连接都是远程连接。
由于VS、CRP、IRP这三种节点存储内容或其副本这个行为都是建立在节点本身对这个内容的需求之上,所以这些节点的关联内容集包含了这个内容,即它们的兴趣具有相似性。
可以使用节点上存储的内容作为节点的关联内容集,用两个节点共同存储的内容数表示这两个节点当前的关联内容相似度,即:
节点的关联内容相似度=两个节点重复存储的内容个数    (1)
每个节点保持一个关联列表,存储了和自己当前关联内容相似度最高的Nm个节点。在关联列表中,对于每个节点都记载了该节点的标识符、IP地址、关联内容相似度、该节点关联内容相似度最近一次更新的时间、该节点拥有的内容总数、最近一段时间通过该节点进行路由成功召回结果的次数以及节点的综合性能。关联列表的数据结构如图3所示。
关联列表中节点的综合性能和节点当前的关联内容相似度、拥有的内容总数、以及最近一段时间满足查询的次数相关。节点当前的关联内容相似度越高、拥有的内容数越多、最近一段时间满足查询的次数越多,则该节点在以后的查询中能够返回所需内容的可能性越大,则该节点当前的综合性能越好。
可以使用下列公式来计算节点的综合性能:
Pf(PX)=αNS(PX)+βNT(PX)+χNR(PX)    (2)
其中:Pf(PX)是节点Px的综合性能,NS(PX)是节点Px和节点自身的关联内容相似度(由公式(1)可得),NT(PX)是节点Px拥有的内容数,NR(PX)是节点Px在最近一段时间满足查询的次数。α、β、χ是人工设置的常量。应当理解,如果调整上述三个因素(节点关联内容相似度、拥有的内容数,以及最近一段时间满足查询的次数)之间的权重比例,或选择其中一到两个因素使用,作为综合性能计算公式,原理仍是相同,仍然属于本发明的保护范围。
对任意普通节点而言,只要它所负责的键值空间内有内容存在,它即作为CP负责这些内容。当它需要其他内容并需要持续保持这些内容时,它将成为内容的RP。所以,一个普通节点对于相关内容有且仅有以下CP、VS、CRP、IRP这些身份中的一个。
普通节点中存储的信息可以包括:自身的键值、键值空间范围、CAN路由表、需求内容表和关联列表,其中:
CAN路由表由CAN协议产生,记录所有与本节点逻辑邻接的节点的键值和地址信息;
需求内容表记录了该节点所需的所有内容的键值,内容的具体信息,该内容所在的CP和VS的键值和地址信息;
关联列表存储了和自己关联内容相似度最高的Nm个节点的相关属性。
本发明实施例二:
由实施例一可知,节点上不仅在CAN路由表中存储了CAN邻居节点的信息,还因为节点对内容的需求而在需求内容列表中存储了一些远处节点的信息,此外在关联列表中还存储了一些和自身关联内容相似度较高的节点。
节点对内容的查询可以分为3类:
1、一个节点查询一个指定内容;
2、一个节点查询两个相互关联的内容;
3、两个节点查询同一个内容;
本实施例利用实施例一所述的内容节点双向聚类系统,采用“二元查询”实现对内容的查找和获取。二元查询包括:(1)第一查询:即向位于关联列表中的节点并行的发送“一步”查询作为“关联查询”,用于加速关联内容查询效率,增加返回的满足查询的节点数,从而以较高的概率实现了第2类、第3类查询;(2)第二查询:即通过将远程连接和CAN路由相结合作为小世界模型中的“捷径”,采用“贪心查询”,提高普通内容的查询效率,从而保证了第1类查询的高效性,并保证在关联查询失败时至少能返回一个满足查询的节点。
具体的,关联查询是并发的向关联列表中的若干个节点发送查询信息,关联列表中的节点在接收到消息之后会检索自身存储的内容:如果有满足查询的内容则返回;如果没有,则直接丢弃查询信息,而不会进一步转发。由于关联列表中的节点和查询节点自身在关联内容集上具有相似性,所以关联列表中的节点会以较高概率拥有满足查询的内容,通过查询关联列表中的节点可以加速关联内容的查询速度,并可以在较短的时间内返回尽量多的满足查询请求的节点。而在关联查询失败时,不继续转发信息查询,则可以避免查询信息在网络中呈指数增长。此外,由于关联列表中节点的关联列表所存储的节点和查询节点的关联内容相似度会进一步降低,再继续转发查询信息,成功的概率只会进一步降低,所以关联查询信息在查询失败的情况下不会被转发。
贪心查询是从CAN路由表中的节点信息以及需求列表中的节点信息中,选择节点键值距离目标键值最近的节点发送贪心查询请求,如此反复,直到找到拥有满足查询请求内容的节点。这种查找过程不同于CAN在键值空间连续的逼近目的地,而是通过利用网络中的远程连接作为“捷径”的跳跃式逼近,可以在最初一两跳(hop)内迅速地跳到目标节点附近,然后再通过局部的精确定位找到目标节点。
请参照图5所示,本实施例查询获取内容的方法的具体流程如下:
步骤51,请求节点PA向关联列表中性能较好的NK个节点发送第一查询请求——关联查询请求,如图6所示,查询请求包括:目标内容的键值,请求节点标识符,请求节点生成的随机数,请求节点IP地址,关联路由和贪心路由的标识位。可以通过一个布尔值标识一个查询请求是关联路由还是贪心路由。其中,请求节点标识符和请求节点生成的随机数可以唯一标示一个查询请求。
步骤52,接收所述第一查询请求的节点,根据所述查询请求进行处理。
每个节点拥有一个请求缓存栈,用于暂存最近一段时间接收到的查询请求。该请求缓存栈记录了查询请求的请求节点标识符和请求节点生成的随机数,根据先进先出FIFO原则替换。
进一步的,步骤52具体包括:
步骤521,当一个节点接收到查询请求之后,首先根据查询请求中的请求节点标识符以及请求节点生成的随机数检索请求缓存栈,判断自身是否已经接收过这个查询请求:如果已经接收过,则丢弃;否则,转入步骤522。
步骤522,所述节点查看自身的需求内容列表中是否有节点PA所查询的内容:如果有满足查询的内容,则转入步骤523;否则转入步骤524。
步骤523,所述节点拥有满足查询的内容,根据自身相对于所述内容的身份决定发送的信息:
a、如果是CP或CRP,则自身存储的内容本身就是最新的版本,可以直接将自身的地址信息以及所述内容VS的地址作为可用下载地址,并携带上自身当前的内容列表发送给节点PA;
b、如果是VS,则直接将自身的地址信息以及存储的所述内容所有CRP地址作为可用下载地址,并携带上自身当前的内容列表发送给节点PA;
c、如果是IRP,由于自身存储的内容可能不是最新的版本,则将所述内容的VS地址作为可用下载地址,并携带上自身当前的内容列表发送给节点PA。
步骤524,所述节点没有满足查询的内容,则直接丢弃查询信息,反馈查询失败。
步骤53,如果节点PA接收到查询成功的反馈,则为所述查询的内容建立一个临时的下载地址列表并下载内容。
节点PA在接收到其他节点的反馈信息后,将反馈信息中的可用下载地址存储到下载地址列表中。下载地址列表中已经包含的地址,不会重复存储。此后,节点PA使用下载地址列表中的地址建立连接,开始下载。本实施例中节点PA接收到查询成功的反馈即是指接收到反馈的所查询内容的可用下载地址。
CP、VS或CRP作为反馈节点向请求节点返回查询信息时,会主动捎带自身的内容列表,如果CP、VS或CRP并不在请求节点PA的关联列表中,则请求节点PA将计算反馈节点综合性能,如果反馈节点的综合性能优于当前关联列表中综合性能最差的节点,则用反馈节点替换该节点。
步骤54,如果节点PA接收到查询失败的反馈,则请求节点PA将向当前邻居中键值距离目标键值最近的节点发出第二查询请求——贪心查询请求。
例如上述步骤524中,该节点没有满足查询的内容,则向节点PA反馈查询失败,此时节点PA将再发起第二查询请求,以保障第一查询请求失败时能返回至少一个满足查询的节点。
步骤55,接收所述查询请求的节点,根据所述查询请求进行处理。
与步骤52类似,步骤55具体包括:
步骤551,当一个节点接收到查询请求之后,首先根据查询请求中的请求节点标识符以及请求节点生成的随机数检索请求缓存栈,判断自身是否已经接收过这个查询请求:如果已经接收过,则丢弃;否则,转入步骤552。
步骤552,所述节点查看自身的需求内容列表中是否有节点PA所查询的内容:如果有满足查询的内容,则转入步骤553;否则转入步骤554。
步骤553,所述节点拥有满足查询的内容,根据自身相对于所述内容的身份决定发送的信息:
a、如果是CP或CRP,则自身存储的内容本身就是最新的版本,可以直接将自身的地址信息以及所述内容VS的地址作为可用下载地址,并携带上自身当前的内容列表发送给节点PA;
b、如果是VS,则直接将自身的地址信息以及存储的所述内容所有CRP地址作为可用下载地址,并携带上自身当前的内容列表发送给节点PA;
c、如果是IRP,由于自身存储的内容可能不是最新的版本,则将所述内容的VS地址作为可用下载地址,并携带上自身当前的内容列表发送给节点PA。
步骤554,所述节点没有满足查询的内容,则根据键值最近的原则进一步转发。
步骤56,节点PA为所述查询的内容建立一个临时的下载地址列表。
节点PA在接收到其他节点的反馈信息后,将反馈信息中的可用下载地址存储到下载地址列表中。下载地址列表中已经包含的地址,不会重复存储。此后,节点PA使用下载地址列表中的地址建立连接,开始下载。
CP、VS或CRP作为反馈节点向请求节点返回查询信息时,会主动捎带自身的内容列表,如果CP、VS或CRP并不在请求节点PA的关联列表中,则请求节点PA将计算反馈节点综合性能,如果反馈节点的综合性能优于当前关联列表中综合性能最差的节点,则用反馈节点替换该节点。
本实施例提高了内容的查询能力,可以同时解决前述第1、2、3三类查询,例如:
对于第2类查询,一个节点查询两个相互关联的内容:如节点P1查询两个相互关联的内容A和B。在节点P1查询第一个内容A时,节点P1通过节点P2获得了内容A。如果节点P1和P2的内容列表具有较高的相似性,则节点P1会将节点P2添加到关联列表中。在节点P1要寻找和内容A相互关联的内容B时,由于内容A和内容B相互关联,所以节点P2很可能同时存储内容A和B。节点P1通过向关联列表中的P2发送关联查询请求,就可以仅通过一个hop就直接获得内容B。
对于第3类查询,两个节点查询同一个内容:如节点P1和P2都查询内容A。在节点P1查询了内容A后,内容A会缓存在节点P1的内容列表中。当节点P2查询内容A时,由于节点P1和P2请求了同一个内容,节点P1和P2可能是相互关联的节点,可能在彼此的关联列表中,节点P2通过向节点P1发送关联查询请求,即可以仅通过一个hop就直接获得内容A。
通过本实施例的二元查询中的第一查询,本实施例可以在第1个hop之后就返回一部分满足查询请求的节点,从而开始下载;此时,二元查询中的第二查询继续在网络中路由,直到找到内容的VS,从而返回VS以及所有的CRP节点,增加可以下载的源节点。也就是说,本实施例内容的下载分为两步:先在第1个hop找到少量的节点开始下载,再通过第二查询增加下载源。
本实施例可以以更快的速度开始下载,从而减少用户的等待时间。特别是当网络中的节点数很多的时候,这种差异更加明显。比如网络中有10000个节点时,CAN模型的平均查询路径长度是16.49,本实施例是2.63。也就是说,CAN模型要在平均16.49跳之后才能返回第一个满足查询的节点,而本实施例在第1个hop之后就可以返回一小部分节点开始下载,而在2.63跳之后,进一步增加下载源。本实施例的反应速度比CAN快了13.49跳,可以大幅降低用户的等待时间。
并且,随着网络中节点数目的增加,本实施例这种第1跳就能够返回一部分节点开始下载的能力并不会发生变化,本实施例可以提高查询响应速度的能力反而会更加明显。
由于本实施例在二元查询的第一查询中并发地发送了NK个关联查询消息,但这NK个通信量只是从请求节点发送到关联列表中的节点,并不会在网络中转发,不会增加中转节点的通信量,而是仅仅增加了客户端的通信量。而客户的请求并不是一个频繁的过程,而是相对稀疏的,对于每次查询多承担一点通信量并不会对客户的性能产生影响。所以,第一查询所增加的通信量并不会对本实施例的性能带来负面的影响,是可以忽略的。
本发明实施例三:
为了保证实施例二中第一查询能够以较高的概率获得满足查询请求的节点,关联列表中的节点应该和请求节点自身保持较高的关联内容相似度。由于节点的需求处于动态变化之中,节点上存储的内容也在动态变化,此外网络上的内容也随着节点的加入离开而不断变化,所以节点之间的关联内容相似度也是处于变化中的,需要对关联列表进行更新,以便能够精确的描述节点当前的需求,使得节点之间能根据需求形成较好的聚类。
请参照图7所示,本实施例关联列表更新的方法,包括:
步骤71,获取关联列表中某节点当前的内容列表;
具体的获取方式有两种:
1、在例如实施例二的查询内容的流程中获取;
由实施例二可知,在CP、VS或CRP向请求节点返回查询信息时,会主动捎带自身的内容列表,这种在网络中现有消息的基础上有选择的附带上节点自身的内容列表,可以尽量减少增加的通信量。
由于只有CP、VS或CRP有最新版本的内容信息,所以当请求节点PA发送查询请求之后,经过若干次转发,查询信息最终会落到这三种节点上。这三种节点在返回内容信息时,会捎带上自身的内容列表。内容列表仅包括一个节点上存储内容的标识符,不包括具体内容信息。此处,在请求节点发送查询信息时,并不会捎带自身的内容列表,原因有两点:(1)由于查询请求需要经过若干次转发才能到达目标节点,如果捎带了内容列表,会增加所有转发节点的通信量;(2)由于请求节点此时还没有所需内容的信息,内容列表在请求信息返回之后还会发生变化,所以此时的内容列表并不准确。
2、定时获取;请参照图8所示,具体流程如下:
步骤81,设置关联内容相似度的有效期为T,检测到节点PA的关联列表中的某一节点(例如PB)最近一次更新时间距离当前时间的间隔超过了有效期T;
步骤82,节点PA向节点PB发送询问节点PB当前内容列表的请求;
步骤83,节点PA接收节点PB返回的其自身当前的内容列表。
这种方式可以周期性的定时检测并获取关联列表中的某一节点最新的内容列表。
通过上述两种方式,请求节点即可获取关联列表中某节点当前的内容列表。
步骤72,请求节点计算自身与所述节点的关联相似度;
步骤73,请求节点根据计算得到的关联相似度更新自身关联列表。
具体的,请求节点将根据计算得到的关联相似度更新自身关联列表中所述节点(例如PB)的相关属性。
本实施例中,根据节点当前存储的内容描述节点的关联内容集以及计算节点之间的关联内容相似度,从而避免了语义和本体论的方式所需的庞大知识库所消耗的存储空间。
本发明实施例四:
由于所有内容的RP上都会保存一份该内容的副本,所以整个网络中会存在内容的多个副本。为了保证所有节点都能在较低的通信量下,获得新鲜有效的内容并能对内容进行合法的操作,本实施例通过对内容及其副本所在节点进行松散节点聚类,实现对副本的控制和更新。
产生和发布内容的节点作为内容的VS负责内容的更新和发布。CP作为索引和备份节点,和VS建立双向连接保持强一致。其他节点在请求内容之后,根据自身的需求和性能选择成为内容的CRP或IRP。如果查询节点需要经常访问该内容,且自身性能较好(例如:带宽较大,处理速度较快等),则可以选择成为CRP,和VS建立双向连接保持强一致。如果查询节点并不需要经常访问该内容,或自身性能并不太好,也可以选择成为IRP,和VS建立单向连接保持弱一致。VS、CP、CRP以及IRP通过这些连接形成针对同一内容的一个松散聚类,并在这个聚类的基础上根据节点的类型采用不同的内容更新和更新发布模式,以降低通信量。
为了能在内容更新之后区分内容的不同版本,每个内容都有一个版本号,由该内容的VS在每次合法更新之后对版本号进行操作。
请参照图9所示,本实施例内容更新的方法,包括:
步骤91,请求内容更新的节点(例如CRP或IRP)向产生和发布内容的节点(例如VS)发送更新请求;
具体的,当一个RP要对内容进行操作及更新时,首先会判断自身的类型:
如果是CRP,则该节点本身就存储了内容的最新版本,可以直接内容进行操作,并向VS发送更新请求,该请求包括:操作结果和当前的版本号;
如果是IRP,则该节点上存储的副本可能是陈旧版本,需要先向VS发送当前版本号来检测版本信息,如果该版本号和VS上存储的当前版本一致,则VS返回确认信息,如果不一致,则VS返回当前最新版本的内容信息。此后IRP采用和CRP同样的方式对内容进行操作并向VS发送更新请求。
步骤92,VS对接收的更新请求进行审核,并根据审核结果进行处理;
VS接收到更新请求后,先判断内容的版本号是否是最新的版本号,如果是,则接受更新并修改版本号,同时返回确认信息;否则,拒绝更新,并返回最新版本信息。如果有两个RP同时提交更新结果,VS根据更新请求的时间戳判定更新的有效性,接受时间戳较早的更新。
步骤93,VS在更新后发布更新结果和新的版本号;
在VS接受更新之后,会将更新结果和新的版本号发送给CP和所有CRP。由于IRP和VS之间是弱一致,所以并不需要向IRP发布更新信息。
本实施例中,VS、CP、CRP以及IRP通过它们之间的双向或单向的连接,形成了针对同一内容的节点松散聚类,并在这个聚类的基础上根据节点的类型采用不同的内容更新和更新发布模式,以降低通信量。本实施例通过主动向所有CRP发布更新,避免了CRP频繁访问内容所带来的大量询问信息;通过IRP在使用内容前主动向VS询问内容的最新版本,从而避免了向访问内容频率较低的IRP频繁发布更新所带来的通信量。基于这个节点松散聚类,本实施例在较低的通信量下实现了对内容及其副本的管理和控制,保证了所有节点在对内容进行访问时都能获得最新鲜的版本,并保证了所有更新操作都是在最新版本的基础上累计递增的,而不会出现对陈旧版本的更新操作。此外还有效地降低了系统通信量,并能适应动态变化环境的需求。
本发明实施例五:
请参照图10所示,本发明实施例五提供一种查询获取内容的系统,包括:
请求节点101,用于向关联列表中的节点发送第一查询请求、在接收到所述第一查询请求查询失败的反馈时向键值距离目标节点键值最近的节点发送第二查询请求,以及根据目标节点反馈的内容列表为查询的内容建立临时的下载地址列表并下载所述内容;
目标节点102,用于接收所述第一或第二查询请求,并根据所述查询请求进行处理。
进一步的,所述目标节点102包括:
第一判断单元1021,用于根据查询请求中的请求节点标识符以及请求节点生成的随机数检索请求缓存栈,判断目标节点是否已经接收过所述查询请求,如果已经接收过,则丢弃所述查询请求;
第二判断单元1022,用于当第一判断单元1021判断目标节点未接收过所述查询请求时,进一步判断目标节点需求内容列表中是否有所述查询的内容;
第一控制单元1023,用于当所述第二判断单元1022判断目标节点的需求内容列表中有满足查询的内容时,根据目标节点相对于所述内容的身份决定发送的信息;
具体的,如果目标节点是CP或CRP,则其自身存储的内容本身就是最新的版本,可以直接将自身的地址信息以及所述内容VS的地址作为可用下载地址,并携带上自身当前的内容列表发送给请求节点;
如果目标节点是VS,则直接将自身的地址信息以及存储的所述内容所有CRP地址作为可用下载地址,并携带上自身当前的内容列表发送给请求节点;
如果目标节点是IRP,则将所述内容的VS地址作为可用下载地址,并携带上自身当前的内容列表发送给请求节点。
第二控制单元1024,用于当所述第二判断单元1022判断目标节点的需求内容列表中没有满足查询的内容时,根据查询的类型进行不同的处理:
如果是第一查询,则直接丢弃查询信息,不做任何处理;
如果是第二查询,则根据键值最近的原则进一步转发。
本发明实施例六:
请参照图11所示,本发明实施例六提供一种关联列表更新的装置,包括:
获取单元111,用于获取关联列表中某节点当前的内容列表;
计算单元112,用于计算请求节点与所述关联列表中某节点的关联相似度;
更新单元113,用于根据计算得到的关联相似度更新请求节点的关联列表。
进一步的,所述获取单元111可以通过查询获取内容的流程获取关联列表中某节点反馈的当前的内容列表;也可以通过对关联列表中某节点周期性的定时检测获取所述内容列表。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。