一种构建具有语义的P2P网络的方法.pdf

上传人:54 文档编号:1087764 上传时间:2018-03-30 格式:PDF 页数:22 大小:1.14MB
返回 下载 相关 举报
摘要
申请专利号:

CN200910100682.2

申请日:

2009.07.16

公开号:

CN101616182A

公开日:

2009.12.30

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):H04L 29/08申请日:20090716授权公告日:20120822终止日期:20160716|||授权|||实质审查的生效|||公开

IPC分类号:

H04L29/08; H04L12/56; H04L12/46

主分类号:

H04L29/08

申请人:

浙江理工大学

发明人:

黄理灿

地址:

310018浙江省杭州市江干区下沙高教园区

优先权:

专利代理机构:

浙江杭州金通专利事务所有限公司

代理人:

赵红英

PDF下载: PDF下载
内容摘要

本发明涉及一种构建具有语义的P2P网络的方法,包括按用户需求的主题领域建立网络领域分类的步骤、构建领域分类网络的步骤,其中构建领域分类网络的步骤包括1)网络起始节点设置其路由表内容,并建立虚拟组,路由表内容主要包括节点实体信息,所述实体信息包含节点ID和IP地址,其中节点ID为用户名@域名,域名由几级组成,各分级之间由圆点“.”隔开,各分级均是具有领域分类含义的文字及字符,虚拟组根据领域分类含义划分为分级的域;2)节点根据分级的域加入领域的P2P覆盖网络,它还包括路由表中缓存目标节点的步骤。本发明的方法采用综合多倍的虚拟树型结构化网络和随机缓存的非结构网络来构建P2P覆盖网络,并保留节点的完整语义。

权利要求书

1、  一种构建具有语义的P2P网络的方法,包括按用户需求的主题领域建立网络领域分类的步骤、构建领域分类网络的步骤,其中构建领域分类网络的步骤包括1)网络起始节点设置其路由表内容,并建立虚拟组,路由表内容主要包括节点实体信息,所述实体信息包含节点ID和IP地址,其中节点ID为用户名@域名,域名由几级组成,各分级之间由圆点“.”隔开,各分级均是具有领域分类含义的文字及字符,虚拟组根据领域分类含义划分为分级的域;2)节点根据分级的域加入领域的P2P覆盖网络,它还包括路由表中缓存目标节点的步骤,具体如下:
1a)用户查询或与其他节点通信,确定目标节点的目标虚拟组域名,并包含在查询消息中;
1b)用户节点通过查找其路由表,转发查询消息到更接近目标虚拟组域名的邻近节点作为下一跳节点;
1c)邻近的节点通过查找其路由表,转发查询消息到更接近目标虚拟组域名的节点作为下一跳节点;
1d)判断是否是目标虚拟组,若判断结果是,则执行下一步骤,若判断结果否,则重复步骤1c)~1d);
1e)目标虚拟组一节点D对目标虚拟组的所有节点广播查询消息;
1f)目标虚拟组所有节点检查是否符合查询消息的条件,并将结果返回给查询消息广播节点D;
1g)查询消息广播节点D整合结果,并发送到用户节点;
1h)用户节点将查询消息广播节点D缓存到路由表中。

2、
  如权利要求1所述的一种构建具有语义的P2P网络的方法,其特征在于它还包括节点失效处理步骤,具体步骤如下:
2a)节点H发现节点I通信故障N次,认为节点I失效;
2b)节点H寻找到失效节点I加入的最顶层虚拟组G及其中的一个节点M;
2c)虚拟组G如有下一层虚拟组,节点H寻找并选择虚拟组G的下一层虚拟组的一个节点J,加入虚拟组G;节点J向节点M发出加入消息,节点M向虚拟组G所有其他节点转发节点J加入消息;虚拟组G每个节点在路由表中加入节点J的实体信息,并向节点J发确认消息;节点J将虚拟组G中各个节点的实体信息保存在自己的路由表中;
2d)节点H向节点M发送节点I失效消息;节点M向虚拟组G中每个节点转发节点I失效消息,虚拟组G中每个节点从自己的路由表中将节点I实体信息删除;
2e)判断是否是最底层虚拟组?若是,节点失效处理步骤结束,否则,找到下一层虚拟组G及其中的另一个节点M,重复步骤2c~2d。

3、
  如权利要求1或2所述的一种构建具有语义的P2P网络的方法,其特征在于它还包括节点离开P2P覆盖网络步骤;具体步骤如下:
3a)离开节点B寻找到自己加入的最顶层虚拟组V;
3b)虚拟组V如有下一层虚拟组,节点B选择虚拟组V的下一层虚拟组的一个节点C,加入虚拟组V,节点C向节点B发出加入消息,节点B向虚拟组V中所有其他节点转发节点C加入消息,虚拟组V中每个节点在自己的路由表中加入节点C的实体信息,并向节点C发确认消息,节点C将虚拟组V中各个节点的实体信息保存在自己的路由表中;
3c)离开节点B向虚拟组V中所有其他节点转发离开消息,虚拟组V每个节点从自己的路由表中将离开节点B实体信息删除;
3d)判断是否是最底层虚拟组?若是,节点离开P2P覆盖网络步骤结束,否则,找到下一层虚拟组V,重复步骤3b~3c。

4、
  如权利要求1或2所述的一种构建具有语义的P2P网络的方法,
其特征在于还包括节点选择下一跳邻近节点的步骤,具体如下:
4a)节点计算其自身与目标节点的共享前缀长度(sL);
4b)对所有路由表中的节点计算其与目标节点的共享前缀长度,找出最大的共享前缀长度(mL)以及具有此最大共享长度的节点集合(mSet);
4c)判断节点本身与目标节点的共享前缀长度(sL)是否小于最大共享长度(mL),若判断结果是,从具有最大共享前缀长度的集合(mSet)中随机选择一个节点作为下一跳节点;若判断结果否,则从虚拟组中选择同时是上一级虚拟组的具有网关作用的节点作为下一跳节点。

说明书

一种构建具有语义的P2P网络的方法
技术领域
本发明涉及计算机网络通信领域,具体地说,涉及一种构建具有语义的P2P网络的方法。
背景技术
随着越来越多的计算机连接到Internet上以及越来越多Internet用户,传统的计算模式为客户/服务器,此方法存在单点失败和负载不均衡的缺点。P2P网络即对等(peer to peer)网络,相对于Client/Server计算模型,P2P具有许多优点。目前世界上存在两种P2P网络,一是无结构的P2P网络,采用洪泛协议发现节点,这种P2P网络存在通讯阻塞,不能保证发现适合的节点的缺点,二是有结构的P2P网络,采用DHT将内容与节点映射到相同格式的全局唯一标识,其缺点为节点和内容本身的语义被哈希函数打破了。
发明内容
本发明所要解决的技术问题是:构建一种具有语义的P2P网络的方法,该方法采用综合多倍的虚拟树型结构化网络和随机缓存的非结构网络来构建P2P覆盖网络,与其他P2P网络不同的是保留了节点和内容的完整语义。
为了解决上述技术问题,本发明的方法采用以下技术方案:
一种构建具有语义的P2P网络的方法,包括按用户需求的主题领域建立网络领域分类的步骤、构建领域分类网络的步骤,其中构建领域分类网络的步骤包括1)网络起始节点设置其路由表内容,并建立虚拟组,路由表内容主要包括节点实体信息,所述实体信息包含节点ID和IP地址,其中节点ID为用户名@域名,域名由几级组成,各分级之间由圆点“.”隔开,各分级均是具有领域分类含义的文字及字符,虚拟组根据领域分类含义划分为分级的域;2)节点根据分级的域加入领域的P2P覆盖网络,它还包括路由表中缓存目标节点的步骤,具体如下:
1a)用户查询或与其他节点通信,确定目标节点的目标虚拟组域名,并包含在查询消息中;
1b)用户节点通过查找其路由表,转发查询消息到更接近目标虚拟组域名的邻近节点作为下一跳节点;
1c)邻近的节点通过查找其路由表,转发查询消息到更接近目标虚拟组域名的节点作为下一跳节点;
1d)判断是否是目标虚拟组,若判断结果是,则执行下一步骤,若判断结果否,则重复步骤1c)~1d);
1e)目标虚拟组一节点D对目标虚拟组的所有节点广播查询消息;
1f)目标虚拟组所有节点检查是否符合查询消息的条件,并将结果返回给查询消息广播节点D;
1g)查询消息广播节点D整合结果,并发送到用户节点;
1h)用户节点将查询消息广播节点D缓存到路由表中。
它还包括节点失效处理步骤,具体步骤如下:
2a)节点H发现节点I通信故障N次,认为节点I失效;
2b)节点H寻找到失效节点I加入的最顶层虚拟组G及其中的一个节点M;
2c)虚拟组G如有下一层虚拟组,节点H寻找并选择虚拟组G的下一层虚拟组的一个节点J,加入虚拟组G;节点J向节点M发出加入消息,节点M向虚拟组G所有其他节点转发节点J加入消息;虚拟组G每个节点在路由表中加入节点J的实体信息,并向节点J发确认消息;节点J将虚拟组G中各个节点的实体信息保存在自己的路由表中;
2d)节点H向节点M发送节点I失效消息;节点M向虚拟组G中每个节点转发节点I失效消息,虚拟组G中每个节点从自己的路由表中将节点I实体信息删除;
2e)判断是否是最底层虚拟组?若是,节点失效处理步骤结束,否则,找到下一层虚拟组G及其中的另一个节点M,重复步骤2c~2d。
它还包括节点离开P2P覆盖网络步骤;具体步骤如下:
3a)离开节点B寻找到自己加入的最顶层虚拟组V;
3b)虚拟组V如有下一层虚拟组,节点B选择虚拟组V的下一层虚拟组的一个节点C,加入虚拟组V,节点C向节点B发出加入消息,节点B向虚拟组V中所有其他节点转发节点C加入消息,虚拟组V中每个节点在自己的路由表中加入节点C的实体信息,并向节点C发确认消息,节点C将虚拟组V中各个节点的实体信息保存在自己的路由表中;
3c)离开节点B向虚拟组V中所有其他节点转发离开消息,虚拟组V每个节点从自己的路由表中将离开节点B实体信息删除;
3d)判断是否是最底层虚拟组?若是,节点离开P2P覆盖网络步骤结束,否则,找到下一层虚拟组V,重复步骤3b~3c。
还包括节点选择下一跳邻近节点的步骤,具体如下:
4a)节点计算其自身与目标节点的共享前缀长度(sL);
4b)对所有路由表中的节点计算其与目标节点的共享前缀长度,找出最大的共享前缀长度(mL)以及具有此最大共享长度的节点集合(mSet);
4c)判断节点本身与目标节点的共享前缀长度(sL)是否小于最大共享长度(mL),若判断结果是,从具有最大共享前缀长度的集合(mSet)中随机选择一个节点作为下一跳节点;若判断结果否,则从虚拟组中选择同时是上一级虚拟组的具有网关作用的节点作为下一跳节点。
本发明与现有技术相比具有以下有益效果:本发明的方法采用综合多倍的虚拟树型结构化网络和随机缓存的非结构网络来构建P2P覆盖网络,并保留节点的完整语义。节点被类似DNS域名标识,节点动态地形成虚拟树拓扑,并与随机缓存的节点组成网络状拓扑结构,路由表由虚拟树节点和缓存的节点所组成,对虚拟树节点和缓存的节点发明了计算理论步跳的统一方法,利用缓存的节点解决了树状网络通信阻塞的问题,和普通P2P覆盖网络一样克服了集中式单点失败和通信瓶颈问题,同时不像DHT P2P打破语义,巧妙地保持了节点的语义,并以此为基础,采用类SQL语言查找相关的节点子集合,具有按复杂条件查询大规模网络环境下节点的优点,除了能用于目前P2P网络的应用外,还可用于社会网络等领域。
附图说明
图1为本发明构建语义P2P网络总流程框图;
图2为本发明节点加入与离开流程图;
图3为本发明缓存目标节点流程图。
图4为本发明节点失效处理流程图。
图5为本发明邻近节点选择流程图。
具体实施方式
相关术语:
节点:节点为参与多个虚拟分层组的计算机,它具有路由表。
节点ID(PeerID):为层次式域名表示,例如:Alice@music.popular.Britney.
节点实体(PNE):节点实体指明节点ID(PeerID),IP地址等。
路由表:由许多节点实体组成。
网关角色:具有路由角色的节点担任几个不同层次的虚拟组的网关功能。
网关最上层(GUL):网关角色中最上层虚拟组在虚拟树中的位置。
虚拟组:由节点组成。上层虚拟组由具有网关角色的节点组成。
N倍虚拟组树:由虚拟组形成的树。高层虚拟组由低层具有网关角色的每组N个节点组成。重复此过程,以形成虚拟树。
加入消息:加入节点发送的消息,必须包括加入节点的实体信息。
离开消息:离开节点发送的消息,必须包括离开节点的实体信息。
查询消息:用户查询时发送的消息,必须包含查询的条件。
参见图1,本发明是一种构建语义P2P网络的方法,包括按用户需求的主题领域建立网络领域分类的步骤、构建领域分类网络的步骤,
按用户需求的主题领域建立网络领域分类就是按用户的兴趣划分不同的领域,例如:将音乐分为流行音乐和经典音乐,
参见图2,构建领域分类网络,该网络是基于领域的具有语义P2P覆盖网络,具体步骤包括:
一、网络起始节点设置其路由表内容,并建立虚拟组,路由表内容主要包括节点实体信息,实体信息包含节点ID和IP地址,其中节点ID为用户名@域名,域名的格式与域名系统(DNS)的格式一致,域名由几级组成,各级之间由圆点“.”隔开,各级均是具有领域分类含义的文字及字符,虚拟组根据领域分类含义划分为分级的域,
二、节点加入P2P覆盖网络,节点根据分级的域加入领域的P2P覆盖网络,节点加入步骤具体如下:
a)节点A按领域确定要加入的虚拟组,并找到已加入此虚拟组的一个节点;
b)节点A向此节点发送包含节点A实体信息的加入消息,此节点向该虚拟组所有其他节点转发该加入消息;
c)虚拟组每个节点将节点A的实体信息增加到自己的路由表中,同时向节点A发送包含自身节点实体信息的确认消息,节点A将虚拟组每个节点的实体信息增加到自己的路由表中;
d)判断是否是根虚拟组或虚拟组中已有N个节点加入上层虚拟组,若判断结果是,则节点A加入步骤结束,若判断结果否,则找到上一层虚拟组的一个节点,并重复步骤b)~d)。
节点离开P2P覆盖网络步骤;具体步骤如下:
a)离开节点B寻找到自己加入的最顶层虚拟组V;
b)虚拟组V如有下一层虚拟组,节点B选择虚拟组V的下一层虚拟组的一个节点C(C以变量表示),加入虚拟组V,节点C向节点B发出加入消息,节点B向虚拟组V所有其他节点转发节点C加入消息,虚拟组V每个节点在路由表中加入节点C的实体信息,并向节点C发确认消息,节点C将虚拟组V各个节点的实体信息保存在自己的路由表中;
c)离开节点B向虚拟组V所有其他节点转发离开消息,虚拟组V每个节点从自己的路由表中将离开节点B实体信息删除;
d)判断是否是最底层虚拟组?若是,节点离开P2P覆盖网络步骤结束,否则,找到下一层虚拟组V(V以变量表示,此虚拟组V与原来的虚拟组V不同),重复步骤b~c。
参见图3,本发明的改进之处在于它还包括路由表中缓存目标节点的步骤,具体如下:
1a)用户查询或与其他节点通信,确定目标节点的目标虚拟组域名,并包含在查询消息中;
1b)用户节点通过查找其路由表,转发查询消息到更接近目标虚拟组域名的邻近节点作为下一跳节点;
1c)邻近的节点通过查找其路由表,转发查询消息到更接近目标虚拟组域名的节点作为下一跳节点;
1d)判断是否是目标虚拟组,若判断结果是,则执行下一步骤,若判断结果否,则重复步骤1c)~1d);
1e)目标虚拟组一节点D对目标虚拟组的所有节点广播查询消息;
1f)目标虚拟组所有节点检查是否符合查询消息的条件,并将结果返回给查询消息广播节点D;
1g)查询消息广播节点D整合结果,并发送到用户节点;
1h)用户节点将查询消息广播节点D缓存到路由表中。
参见图4,它还包括节点失效处理步骤,具体步骤如下:
2a)节点H发现节点I通信故障N次,认为节点I失效;
2b)节点H寻找到失效节点I加入的最顶层虚拟组G及其中的一个节点M(M以变量表示);
2c)虚拟组G如有下一层虚拟组,节点H寻找并选择虚拟组G的下一层虚拟组的一个节点J,加入虚拟组G;节点J向节点M发出加入消息,节点M向虚拟组G所有其他节点转发节点J加入消息;虚拟组G每个节点在路由表中加入节点J的实体信息,并向节点J发确认消息;节点J将虚拟组G各个节点的实体信息保存在自己的路由表中;
2d)节点H向节点M发送节点I失效消息;节点M向虚拟组G每个节点转发节点I失效消息,虚拟组G每个节点从自己的路由表中将节点I实体信息删除;
2e)判断是否是最底层虚拟组?若是,节点失效处理步骤结束,否则,找到下一层虚拟组G(G以变量表示,此虚拟组G与原来的虚拟组G不同)及其中的另一个节点M(M以变量表示);重复步骤2c~2d。
参见图5,本发明改进之处在于它还包括节点选择下一跳邻近节点的步骤,具体如下:
4a)节点计算其自身与目标节点的共享前缀长度(sL);
4b)对所有路由表中节点计算其与目标节点的共享前缀长度,找出最大的共享前缀长度(mL)以及具有此最大共享长度的节点集合(mSet);
4c)判断节点本身与目标节点的共享前缀长度(sL)是否小于最大共享长度(mL),若判断结果是,从具有最大共享前缀长度的集合(mSet)中随机选择一个节点作为下一跳节点;若判断结果否,则从虚拟组中选择同时是上一级虚拟组的具有网关作用的节点作为下一跳节点。
下面以实例详细说明构建基于领域分类的具有语义的P2P网络的过程:
实施例1
构建全球音乐语义P2P网络:
按用户需求的主题领域建立网络领域分类,例如:将音乐分为流行音乐和经典音乐。域名格式为:音乐家.音乐类别.音乐。如:LiuHuan.Popular.Music或刘欢.流行音乐.音乐。
构建领域分类网络,歌唱家,音乐相关公司,经纪人,消费者,粉丝等加入相关虚拟组。所有用户计算机作为节点按用户域名建立领域的覆盖网络。节点ID为用户名@域名,如:小李@刘欢.流行音乐.音乐。
假设有用户:小李为刘欢的粉丝,其节点ID为小李@刘欢.流行音乐.音乐。所用的电脑IP地址为10.20.2.26;
老王为刘欢的经纪人,其节点ID为老王@刘欢.流行音乐.音乐。所用的电脑IP地址为10.88.5.15;
老张为贝多芬的经纪人,其节点ID为老张@贝多芬.经典音乐.音乐。所用的电脑IP地址为200.10.121.150;
小赵为布莱特妮的消费者,其节点ID为小赵@布莱特妮.流行音乐.音乐。所用的电脑IP地址为150.100.69.112;
老孙为布莱特妮的经纪人,其节点ID为老孙@布莱特妮.流行音乐.音乐。所用的电脑IP地址为168.103.45.23;
未来音像公司为刘欢音乐产品公司,其节点ID为未来音像公司@刘欢.流行音乐.音乐。所用的电脑IP地址为26.109.12.123;
假设老王为建立网络的第一人。按图2,老王电脑为网络起始节点,设置其路由表内容为其节点实体(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15);建立刘欢虚拟组,上层的流行音乐虚拟组和音乐根虚拟组。
小李加入网络。小李按领域确定要加入的虚拟组为刘欢.流行音乐.音乐,并找到已加入刘欢虚拟组的一个节点老王。小李节点向老王节点发送包含小李实体信息(节点ID:小李@刘欢.流行音乐.音乐,IP地址10.20.2.26)的加入消息;老王节点向刘欢虚拟组所有其他节点转发该加入消息(因此时只有老王本身一个节点,故不转发);刘欢虚拟组每个节点(此时只有老王一个节点)将小李节点的实体信息(节点ID:小李@刘欢.流行音乐.音乐,IP地址:10.20.2.26)增加到自己的路由表中,同时向小李节点发送确认消息。小李节点将虚拟组每个节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)增加到自己的路由表中。假设N为1,因已有1个节点加入上层虚拟组(老王节点),节点加入结束。
老张加入网络。老张按领域确定要加入的虚拟组为贝多芬.经典音乐.音乐,此时网络还不存在贝多芬虚拟组和上层经典音乐虚拟组;所以找到最相近的音乐虚拟组的一个节点老王。老张节点向老王节点发送加入消息(包含老张的实体信息);老王节点向音乐虚拟组所有其他节点转发加入消息(因此时只有一个节点,故不转发);音乐组每个节点(老王)将老张节点的实体信息(节点ID:老张@贝多芬.经典音乐.音乐,IP地址:200.10.121.150)增加到自己的路由表中,同时向老张节点发送确认消息(包含自身的节点信息,此时只有老王一个节点信息)。老张节点将虚拟组每个节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)增加到自己的路由表中。并建立下层贝多芬和经典音乐虚拟组,节点加入结束。
小赵加入网络。小赵按领域确定要加入的虚拟组为布莱特妮.流行音乐.音乐,此时网络还不存在布莱特妮虚拟组;所以找到最相近的流行音乐虚拟组的一个节点老王。小赵节点向老王节点发送加入消息(包含小赵的实体信息);老王节点向流行音乐虚拟组所有其他节点转发加入消息(因此时只有老王一个节点,故不转发);流行音乐虚拟组每个节点(老王)将小赵节点的实体信息(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112)增加到自己的路由表中,同时向小赵节点发送确认消息。小赵节点将流行音乐虚拟组每个节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)增加到自己的路由表中。并建立下层布莱特妮虚拟组,假设N为1,结束。
老孙加入网络。老孙按领域确定要加入的虚拟组为布莱特妮.流行音乐.音乐;所以找到相同布莱特妮虚拟组的一个节点小赵。老孙节点向小赵节点发送加入消息(包含老孙的实体信息);小赵节点向布莱特妮虚拟组所有其他节点转发加入消息(因此时只有小赵一个节点,故不转发);布莱特妮虚拟组每个节点(小赵)将老孙节点的实体信息(节点ID为老孙@布莱特妮.流行音乐.音乐,IP地址:168.103.45.23)增加到自己的路由表中,同时向老孙节点发送确认消息。老孙节点将布莱特妮虚拟组每个节点实体信息(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112)增加到自己的路由表中。假设N为1,结束。
未来音像公司加入网络。未来音像公司按领域确定要加入的虚拟组为刘欢.流行音乐.音乐,并找到已加入刘欢虚拟组的一个节点小李。未来音像公司向小李节点发送加入消息(包含未来音像公司的实体信息);小李节点向刘欢虚拟组所有其他节点转发加入消息(此时向老王节点转发);虚拟刘欢组每个节点(小李和老王)将未来音像公司节点的实体信息(节点ID:未来音像公司@刘欢.流行音乐.音乐,IP地址:26.109.12.123)增加到自己的路由表中,同时向未来音像公司节点发送确认消息。未来音像公司节点将刘欢虚拟组每个节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15和小李@刘欢.流行音乐.音乐,IP地址:10.20.2.26)增加到自己的路由表中。假设N为1,结束。
在路由表中缓存目标节点:
示例:老张为贝多芬的经纪人,但目前对布莱特妮感兴趣。想查找所有布莱特妮虚拟组节点的所有属性。按图3,老张发出的查询消息包括用类SQL语言编写查询语句。类SQL语言编写的查询语句格式为:
SELECT{*|expr[[AS]c_alias]{,expr[[AS]c_alias]...}}FROMtable@domainref  [WHERE search_condition];
其中expr为节点的查询的目标属性列表达式,例如peerID(节点属性,意义为节点ID)、AVG(musictime)(在线每次欣赏音乐的平均时间,musictime为节点属性,意义为每次欣赏音乐的时间,AVG为平均函数),*代表查找节点的所有属性,例如,若节点属性包括peerID、IP(IP地址)、Types(类型)等属性,结果应同时包括peerID、IP、Types等属性列,[AS]c_alias为expr的别名,例如:peerID as节点ID,IP as IP地址,Types as节点类型等,table@domainref为属于domainref虚拟组的表名,例如:PDBTable@Brittany.popular.music,search_condition为SQL语言查询语句中的条件表达式,例如:types=’fan’AND sex=’female’AND age<40;,类SQL语言的查询语句与SQL语言不同在于SQL语言中的FROM后面table改为table@domainref。
老张编写的查询语句:Select*from PDBTable@布莱特妮.流行音乐.音乐;老张节点将查询语句解析为目标节点的虚拟组域名布莱特妮.流行音乐.音乐,和本地SQL语句,select*from PDBTable;并将其放入查询消息中。
老张节点目前路由表包括老王节点(老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)。老张节点通过查找其路由表,转发消息到更接近目标虚拟组域名的邻近节点作为下一跳节点。具体过程如下:按图4,老张节点与目标节点(属于布莱特妮虚拟组)的共享前缀为音乐,长度为1。通过查找其路由表,节点老王与目标节点(属于布莱特妮虚拟组)的共享前缀为流行音乐.音乐,长度为2。因老张节点路由表中只有老王节点,所以最大共享前缀长度为2。因老张自身节点与目标节点的共享前缀长度小于最大共享前缀长度,所以,老张节点转发消息到更接近目标虚拟组域名的下一跳节点老王。老王节点与目标节点(属于布莱特妮虚拟组)的共享前缀为流行音乐.音乐,长度为2。老王节点路由表包括小赵节点(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112),老张节点(节点ID:老张@贝多芬.经典音乐.音乐,IP地址:200.10.121.150),小李节点(节点ID:小李@刘欢.流行音乐.音乐,IP地址10.20.2.26),未来音像公司节点(节点ID:未来音像公司@刘欢.流行音乐.音乐,IP地址:26.109.12.123)。通过查找其路由表,节点小赵与目标节点(属于布莱特妮虚拟组)的共享前缀为布莱特妮.流行音乐.音乐,长度为3。此时,小赵就是目标虚拟组布莱特妮的一个节点。小赵节点对目标虚拟组所有节点(小赵自身和老孙节点)广播查询消息。目标虚拟组所有节点利用本地SQL语句,查找符合的信息,并将结果返回给小赵节点。小赵节点整合结果,并发送到老张节点。老张节点在自身的路由表中缓存小赵节点的信息。即将小赵节点(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112)加入到老张节点的路由表中。
老张想和布莱特妮的经纪人联系。老张发出的消息中包括布莱特妮虚拟组。此时,老张路由表中有老王节点(老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)和缓存的小赵节点(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112)。按图4,老张节点与目标节点(属于布莱特妮虚拟组)的共享前缀为音乐,长度为1。通过查找其路由表,节点小赵与目标节点(属于布莱特妮虚拟组)的共享前缀为布莱特妮.流行音乐.音乐,长度为3。为最大共享前缀长度,也是目标虚拟组的一个节点。故老张不需要转查询消息到老王,而直接到小赵节点。小赵节点对目标虚拟组所有节点(小赵自身和老孙节点)广播查询消息。目标虚拟组所有节点利用本地SQL语句,查找符合的信息,并将结果返回给小赵节点(此时,老孙符合查询条件)。小赵节点整合结果,并发送到老张节点。
按以上建好的网络,假设小赵离开网络:
a)小赵节点寻找到自己加入的最顶层虚拟组(此时为流行音乐)。
b)有下一层虚拟组(布莱特妮虚拟组),小赵节点选择此流行音乐虚拟组的下一层虚拟组(布莱特妮虚拟组)的一个节点(老孙节点,节点ID为老孙@布莱特妮.流行音乐.音乐。IP地址为168.103.45.23)加入此流行音乐虚拟组。老孙节点向小赵节点发出加入消息,小赵节点向该流行音乐虚拟组所有其他节点(老王节点)转发老孙节点加入消息。该流行音乐虚拟组每个节点(老王节点)在路由表中加入老孙节点的实体信息,并向老孙节点发确认消息。老孙节点将此流行音乐虚拟组各个节点(老王节点,节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)的实体信息保存在自己的路由表中。
c)小赵节点向流行音乐虚拟组所有其他节点(老王节点)转发离开消息;流行音乐虚拟组每个节点从自己的路由表中将小赵节点实体信息删除。
d)由于不是最底层虚拟组,虚拟组织指向下层虚拟组布莱特妮,转向步骤b),具体步骤如下:b1)布莱特妮虚拟组为最底层虚拟组,故跳过此步;c1)小赵节点向布莱特妮虚拟组所有其他节点(此示例仅有老孙节点)转发离开消息;布莱特妮虚拟组每个节点从自己的路由表中将小赵节点实体信息删除(老孙节点路由表中将小赵节点实体信息删除);循环一次后,是最底层虚拟组,结束。
按以上建好的网络,老王节点失效:
a)未来音像公司发现老王节点多次通信故障,认为老王节点失效。
b)未来音像公司寻找到老王节点加入的最顶层虚拟组(音乐)的一个节点老张节点。
c)未来音像公司寻找并选择此音乐虚拟组的下一层虚拟组(流行音乐)的一个节点(小赵)加入此虚拟组。小赵向老张节点发出加入消息,老张向该音乐虚拟组所有其他节点转发小赵节点加入消息。该音乐虚拟组每个节点在路由表中加入小赵节点(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112)的实体信息,并向小赵节点发确认消息。小赵节点将此音乐虚拟组各个节点(老张节点,节点ID:老张@贝多芬.经典音乐.音乐,IP地址:200.10.121.150)的实体信息保存在自己的路由表中。
d)未来音像公司节点向老张节点发送老王节点失效消息;老张节点向此音乐虚拟组每个节点转发老王节点失效消息。音乐虚拟组每个节点从自己的路由表中将老王节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)删除。
e)音乐虚拟组不是最底层虚拟组,未来音像公司找到下一层虚拟组(流行音乐)的一个节点小赵。重复步骤c~d。具体具体步骤如下:c1)未来音像公司寻找并选择此流行音乐虚拟组的下一层虚拟组(刘欢)的一个节点(小李)加入此虚拟组(流行音乐)。小李向小赵节点发出加入消息,小赵向该流行音乐虚拟组所有其他节点转发小李节点加入消息。该流行音乐虚拟组每个节点在路由表中加入小李节点(节点ID:小李@刘欢.流行音乐.音乐,IP地址10.20.2.26)的实体信息,并向小李节点发确认消息。小李节点将此流行音乐虚拟组各个节点(节点ID:小赵@布莱特妮.流行音乐.音乐,IP地址:150.100.69.112)的实体信息保存在自己的路由表中。d1)未来音像公司节点向小赵节点发送老王节点失效消息;小赵节点向此流行音乐虚拟组每个节点转发老王节点失效消息。流行音乐虚拟组每个节点从自己的路由表中将老王节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)删除。
e1)流行音乐不是最底层虚拟组,未来音像公司找到下一层虚拟组(刘欢)的一个节点小李。重复步骤c~d。具体具体步骤如下:c2)刘欢是最底层虚拟组,故跳过此步;d2)未来音像公司节点向小李节点发送老王节点失效消息;小李节点向此刘欢虚拟组每个节点转发老王节点失效消息。刘欢虚拟组每个节点从自己的路由表中将老王节点实体信息(节点ID:老王@刘欢.流行音乐.音乐,IP地址:10.88.5.15)删除。
e2)刘欢是最底层虚拟组,结束。

一种构建具有语义的P2P网络的方法.pdf_第1页
第1页 / 共22页
一种构建具有语义的P2P网络的方法.pdf_第2页
第2页 / 共22页
一种构建具有语义的P2P网络的方法.pdf_第3页
第3页 / 共22页
点击查看更多>>
资源描述

《一种构建具有语义的P2P网络的方法.pdf》由会员分享,可在线阅读,更多相关《一种构建具有语义的P2P网络的方法.pdf(22页珍藏版)》请在专利查询网上搜索。

本发明涉及一种构建具有语义的P2P网络的方法,包括按用户需求的主题领域建立网络领域分类的步骤、构建领域分类网络的步骤,其中构建领域分类网络的步骤包括1)网络起始节点设置其路由表内容,并建立虚拟组,路由表内容主要包括节点实体信息,所述实体信息包含节点ID和IP地址,其中节点ID为用户名域名,域名由几级组成,各分级之间由圆点“.”隔开,各分级均是具有领域分类含义的文字及字符,虚拟组根据领域分类含义划分。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1