一种用于数据共享系统中获取数据片段的方法

文档序号:7695913阅读:121来源:国知局
专利名称:一种用于数据共享系统中获取数据片段的方法
技术领域
本发明涉及信息网络技术领域,特别涉及到Peer-to-Peer数据共享系统中,多个 节点共享数据内容并进行数据内容交换的方法,
背景技术
在Peer-to-Peer内容共享系统中,包括Peer-to-Peer文件共享系统,Peer-to-Peer直 播流媒体系统,Peer-to-Peer视频点播系统等其他需要交互数据内容的系统,通常会 面临这样的情况节点没有完整的数据块,每个节点拥有数据块的一部分数据片段, 这些数据片段可能是连续的,也可能是不连续的。节点通过和其合作节点交换内存 映射,获得自己所需的数据片段的信息。之后,通过发送数据请求消息,向拥有自 己所需数据片段的合作节点请求所需的数据片段。
目前处理这种问题的方法,过程为节点以链表或者二叉树结构存储自己可共 享的数据片段的信息。节点定期的向合作节点发送内存映射消息(我们这里称为 Gossip消息),Gossip消息中包含了自己所拥有的数据片段的片断号信息。节点收到 合作节点的Gossip消息之后,循环检查本节点的缓存(可能是内存缓存,也可能是 硬盘缓存)中,是否缺少对应的数据片段。如果合作节点的Gossip消息中有自己所 需的数据片段,则通过一定的策略,决定是否向该节点请求数据片段以及请求哪一 部分数据片段。为了减小Gossip消息的大小,降低通信开销,有些协议将Gossip消 息中数据片段的粒度设得较大,这样将会影响数据请求判断的准确性,同时有可能 增大数据片段获取的延迟。上述过程通信开销大,计算复杂度高,计算时间长,准 确性低。

发明内容
为了克服上述过程中涉及到通信开销大,计算复杂度高,计算时间长以及准确 性低的缺陷,本发明提供一种用于数据共享系统中获取数据片段的方法,该方法使 用二进制O、 1序列存储数据片段信息并传递数据片段信息,利用按位运算来减低运 算复杂度,加快运算速度的获取数据片段的方法,通过该方法还可以减小节点的存 储开销,降低Peer-to-Peer内容共享系统的通信开销,增大系统容量,同时加快计算
4速度,降低数据获取的延迟,同时降低对数据内容共享节点,尤其是嵌入式系统设备的处理能力的要求。
为达到上述发明目的,本发明提供的用于数据共享系统中获取数据片段的方法包

(1) 数据内容共享节点使用二进制0、 1数字序列储存本节点可共享的数据片段的信息;所述数据片段的信息包括数据块的起始位置,数据块的长度,数据块中数据片段是否可共享的信息,用三元组<数据块的起始位置add,数据块的长度L,数据片段二进制数字串S〉表示。
(2) 数据内容共享节点通过相互发送内存映射消息Gossip,报告本节点的共享数据片段信息;所述内存映射信息携带各自节点的可共享的数据片段信息,包括数据块的起始位置,数据块的长度,数据块中数据片段是否可共享的信息,用三元组<数据块的起始位置add,数据块的长度L,数据片段二进制数字串S〉表示。
(3) 数据内容共享节点收到合作节点的内存映射信息后,根据内存映射信息中合作节点的数据块起始位置和数据块的长度,获取本节点储存的对应数据块的数据片段信息,并通过按位运算Z=X& (~Y)得到本节点向合作节点请求的数据片段的信息。
其中,X为本节点储存的数据片段对应的二进制O、 l数字序列,Y为合作节点储存的数据片段对应的二进制O、 l数字序列,Z为本节点向合作节点请求的数据片段对应的二进制0、 l数字序列。
其中,所述共享数据块的数据片段是连续的,则共享节点在内存消息中一起发送数据片段信息,该共享数据块的格式为<数据块起始地址addl,数据块长度L1+L2+……十Ln,数据片段信息序列S1S2……Sn〉。
其中,所述数据块长度L是该数据块中所包含数据片段的个数。
其中,所述数据片段二进制字符串S中,0表示该数据片段不存在或者无法共享,1表示该数据片段存在并可共享。
其中,所述共享节点以一定的周期向合作节点发送内存映射信息。
其中,所述步骤(3)还包括共享节点判断接收到的合作节点的内存映射信息中的数据块起始地址是否大于本节点的最大缓存地址,如果大于本节点的最大缓存地址,则丢弃该内存映射信息。
其中,所述最大缓存地址是共享节点的缓存大小与本节点的第一个共享数据块的起始地址之和。
5本发明的优点在于
(1) 本发明获取数据片段的方法使用二进制序列存储本节点可共享的数据片段的信息,减小了节点的存储开销,并使得信息的获取具有可结合性。
(2) 本发明获取数据片段的方法使用二进制序列向合作节点报告该节点可共享的数据片段的信息,减小了通信开销, 一定程度上可以增加系统容量。
(3) 本发明获取数据片段的方法通过按位运算计算合作节点可以向本节点提供的数据片段信息,具有计算复杂度低,计算速度快的特点,极大的降低了数据获取的延迟,同时降低了对数据内容共享节点,尤其是嵌入式系统设备的处理能力的要求。


图1是本发明节点的数据片段信息的存储格式图2是现有技术节点的链表存储数据信息的结构图3是现有技术节点的二叉树存储数据信息的结构图4是本发明具体实施方式
应用场景示意5是本发明按位运算示意图
具体实施例方式
本实施例提供了数据共享系统中获取数据片段的方法的一个具体的应用场景。Peer-to-Peer内容共享节点可以是PC机,也可以是嵌入式终端或者其他的安装使
用Peer-to-Peer内容共享软件的设备。节点具有一定大小的缓存,每个节点的缓存大
小可能不相同。每个节点存储全部或者部分数据内容,并和其他节点共享数据内容。
Peer-to-Peer合作节点节点B拥有节点A所需的数据,则节点A向节点B请求数据,B是A的合作节点。B应该将内存映射的变化通过Gossip消息及时通知A。P2P网络中,由于数据传播的无序性,通常情况而言,A和B互为合作节点。
合作节点列表节点在加入网络之后,可以通过目录服务器或者其他途径,获得可能拥有自己所需数据的节点的列表。
数据片段数据片段是节点可以和其他节点交换的最小数据单元。该数据单元具有等长的特点。比如,每个数据片段具有k字节,其中k为常数。
数据片段信息缓存以及Peer-to-Peer内容共享节点的缓存大小假设某个节点用于内容共享的缓存大小为bufferjen (以数据片段大小为单位,即该节点可以缓存
6bufferjen个数据片段),该节点的第一个共享数据块的起始地址为addl,则该节点能缓存的数据片段的最大地址为max—addr: max_addr=addl+buffer—len
数据内容共享节点使用二进制O、 1数字序列储存本节点可共享的数据片段的信息,其存储格式如图1所示,不同于先有技术的链表和平衡二叉树的存储格式,如
图2、图3所示;所述数据片段的信息包括数据块的起始位置,数据块的长度,数
据块中数据片段是否可共享的信息,用三元组<数据块的起始位置add,数据块的长度L,数据片段二进制数字串S〉表示,比如,节点拥有片断号为100, 101, 102,105, 107的数据片段,则节点存储的数据片段信息三元组为<100, 8, 11100101>。
数据内容共享节点通过相互发送内存映射消息Gossip,报告本节点的共享数据片段信息;所述内存映射信息携带各自节点的可共享的数据片段信息,包括数据块的起始位置,数据块的长度,数据块中数据片段是否可共享的信息,用三元组<数据块的起始位置add,数据块的长度L,数据片段二进制数字串S〉表示。
如图4所示,本实施例提供的获取数据片段的方法包括如下步骤
(1) 节点A加入Peer-to-Peer内容共享网络,通过目录服务器或者其他途径,获得可能拥有自己所需数据的节点B、 C的列表。
(2) 节点A和合作节点B、 C建立连接之后,向合作节点B、 C发送自己Gossip消息,报告自己的共享数据片段信息。
(3) 合作节点B、 C察看缓存中数据块片段信息,并向新节点A发送Gossip消息,报告自己的数据片段拥有状况。如果有多个连续的共享数据块,如果add2=addl+Ll,则合作节点B、 C可以在Goosip消息中一起发送数据片段信息,信息格式如下
数据块起始地址(addl)
数据块长度(Ll+L2)
数据片段信息序列(S1S2)
如果发送多个连续的数据块片段信息,以此类推。此特性称为数据片段信息的可结合性。
(4) 节点A收到合作节点B、 C的Gossip消息之后,如果Goosip消息中的数据块起始地址大于max一addr,丢弃该Goosip消息。否则,从本地缓存中获取相对应的数据块的数据片段信息。
(5) 如图5所示,节点A通过按位运算,计算合作节点B、 C可以提供的数据片段的序列号。并按照一定的原则请求数据片段。
(6) 同时合作节点B、 C收到新的合作节点A的Gossip消息之后,将新节点A加入到自己的合作节点列表中。并察看缓存中数据块片段信息。如果Goosip中的 数据块起始地址大于max—addr,丢弃该Goosip消息。否则,从本地缓存中获取相 对应的数据块的数据片段信息。
(7) 合作节点B、 C通过按位运算,计算节点A可以提供的数据片段的序列号。 并按照一定的原则请求数据片段。
(8) 节点A在加入Peer-to-Peer内容共享网络之后,以一定的周期(为了防止 消息冲突,发送周期具有一定的随机性)向合作节点B、 C发送Gossip消息,为合 作节点B、 C提供数据片段并从合作节点B、 C处获得自己所需的数据片段。
权利要求
1、一种用于数据共享系统中获取数据片段的方法,其特征在于,所述选择方法包括(1)数据内容共享节点使用二进制0、1数字序列储存本节点可共享的数据片段的信息;所述数据片段的信息包括数据块的起始位置,数据块的长度,数据块中数据片段是否可共享的信息,用三元组&lt;数据块的起始位置add,数据块的长度L,数据片段二进制数字串S&gt;表示;(2)数据内容共享节点通过相互发送内存映射消息Gossip,报告本节点的共享数据片段信息;所述内存映射信息携带各自节点的可共享的数据片段信息,包括数据块的起始位置,数据块的长度,数据块中数据片段是否可共享的信息,用三元组&lt;数据块的起始位置add,数据块的长度L,数据片段二进制数字串S&gt;表示;(3)数据内容共享节点收到合作节点的内存映射信息后,根据内存映射信息中合作节点的数据块起始位置和数据块的长度,获取本节点储存的对应数据块的数据片段信息,并通过按位运算Z=X&amp;(~Y)得到本节点向合作节点请求的数据片段的信息;其中,X为本节点储存的数据片段对应的二进制0、1数字序列,Y为合作节点储存的数据片段对应的二进制0、1数字序列,Z为本节点向合作节点请求的数据片段对应的二进制0、1数字序列。
2、 根据权利要求1所述的获取数据片段的方法,其特征在于,所述共享数据块 的数据片段是连续的,则共享节点在内存消息中一起发送数据片段信息,该共享数 据块的格式为<数据块起始地址addl,数据块长度1^1+1^+……+Ln,数据片段信息 序歹U S1S2……Sn>。
3、 根据权利要求1或2所述的获取数据片段的方法,其特征在于,所述数据块 长度L是该数据块中所包含数据片段的个数。
4、 根据权利要求1或2所述的获取数据片段的方法,其特征在于,所述数据片 段二进制字符串S中,O表示该数据片段不存在或者无法共享,l表示该数据片段存 在并可共享。
5、 根据权利要求1所述的获取数据片段的方法,其特征在于,所述共享节点以 一定的周期向合作节点发送内存映射信息。
6、 根据权利要求1所述的获取数据片段的方法,其特征在于,所述步骤(3) 还包括共享节点判断接收到的合作节点的内存映射信息中的数据块起始地址是否 大于本节点的最大缓存地址,如果大于本节点的最大缓存地址,则丢弃该内存映射{曰息。
7、 根据权利要求6所述的获取数据片段的方法,其特征在于,所述最大缓存地 址是共享节点的缓存大小与本节点的第一个共享数据块的起始地址之和。
全文摘要
本发明涉及一种用于数据共享系统中获取数据片段的方法,包括数据共享节点使用二进制0、1序列存储本节点可共享的数据片段的信息;在内存映射交互协议中,使用二进制0、1序列向合作节点报告该节点可共享的数据片段的信息;节点通过按位运算得到自己所能请求的数据片段的信息。本发明具有下列优点使用二进制序列存储本节点可共享的数据片段的信息,减小了节点的存储开销,并使得信息的获取具有可结合性;减小了通信开销,增加了系统容量;通过按位运算使计算复杂度降低,加快了计算速度;降低了数据获取的延迟,同时降低了对数据内容共享节点,尤其是嵌入式系统设备的处理能力的要求。
文档编号H04L12/56GK101635669SQ20081011719
公开日2010年1月27日 申请日期2008年7月25日 优先权日2008年7月25日
发明者王劲林, 王玲芳, 齐卫宁 申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1