CN103731511B - 一种p2p系统中数据获取方法和装置 - Google Patents
一种p2p系统中数据获取方法和装置 Download PDFInfo
- Publication number
- CN103731511B CN103731511B CN201410037531.8A CN201410037531A CN103731511B CN 103731511 B CN103731511 B CN 103731511B CN 201410037531 A CN201410037531 A CN 201410037531A CN 103731511 B CN103731511 B CN 103731511B
- Authority
- CN
- China
- Prior art keywords
- node
- information
- file
- address
- resource node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明实施例公开了一种P2P系统数据获取方法和装置,包括:用户节点向服务器发送文件请求,接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;根据节点信息向所述资源节点打洞成功后开始从所述资源节点获取第一分段文件;保存成功节点信息;当准备获取所述目标文件的第二分段文件时,根据保存的成功节点信息从对应的所述资源节点获取所述第二分段文件,可见,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而在等待服务器返回资源节点信息以及向返回的资源节点进行打洞操作时依然有P2P数据可以接收,提高带宽利用率。
Description
技术领域
本发明涉及互联网领域,特别是涉及一种P2P系统中数据获取方法和装置。
背景技术
对等网络(Peer to Peer,P2P)系统中,为方便系统中文件的传输与存储,提高容纳损失的能力,一个完整的文件通常被依次切分为多个独立的分段文件。
当系统中的用户需要获取一个文件时,只需要依次获取对应的多个分段文件即可,比如说当P2P系统中用户A希望获取一个文件,该文件被切分为两段分别为第一分段文件和第二分段文件,用户A通过发送请求从服务器获取拥有该第一分段文件的用户B的用户信息,但是由于P2P系统中一般都使用网络地址转换(Network Address Translation,NAT)技术,不允许处于NAT设备后的用户B的主机被用户A的外部主机直接连接,想要连接的话用户A需要先穿透用户B的NAT设备,穿透NAT设备的技术被称为打洞,同样,当用户A接收完第一分段文件开始准备接收第二分段文件的时候,需要等待从服务器获取拥有第二子文件的用户C的用户信息,然后还需要完成对用户C的NAT设备的打洞后才能从连接到用户C,接收第二分段文件。
用户A在每次接收切分后的分段文件时所需要进行等待和打洞的时间里是无P2P数据可以接收的,由此浪费了大量的宽带资源。
发明内容
为了解决上述技术问题,本发明提供了一种P2P系统中数据获取方法和装置,提高了带宽利用率。
本发明实施例公开了如下技术方案:
一种P2P系统数据获取方法,该方法包括:
用户节点向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
所述用户节点接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作;
所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息;
当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
优选的,在所述用户节点向服务器发送文件请求之前,还包括:
所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,所述资源节点允许所述用户节点获取第二分段文件。
优选的,在所述用户节点向服务器发送文件请求之前,还包括:
所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,所述用户节点对所述资源节点重新进行打洞操作;
所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息。
优选的,
所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
相应的,当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
优选的,
所述速度信息包括所述用户节点从所述资源节点完成获取所述第一分段文件时的下载速度以及平均速度。
优选的,
按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
优选的,所述当所述用户节点准备获取所述目标文件的第二分段文件时具体为:
当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
一种P2P系统数据获取装置,该装置包括:
发送单元,用于向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
节点信息接收单元,用于接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
打洞操作单元,用于根据所述节点信息向一组所述资源节点进行打洞操作;
第一获取单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
保存单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作单元打洞操作成功的资源节点的IP地址和端口信息;
第二获取单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
优选的,还包括:
登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,使得所述资源节点允许获取第二分段文件。
优选的,还包括:
登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
所述第二获取单元,还包括打洞操作子单元、获取子单元和保存子单元;
所述打洞操作子单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,对所述资源节点重新进行打洞操作;
所述获取子单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
所述保存子单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作子单元打洞操作成功的资源节点的IP地址和端口信息。
优选的,
所述保存单元所保存的所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
相应的,所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
优选的,
按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
优选的,
所述第二获取单元,还用于当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
由上述技术方案可以看出,一般拥有一个文件的其中一个分段文件的资源节点同样也会拥有该文件的其他分段文件,故用户节点保存在完成打洞操作后从资源节点处获取一个分段文件时该资源节点的成功节点信息,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而所述用户节点在等待服务器返回对应该另一个分段文件的资源节点信息以及向返回的资源节点进行打洞操作时依然有P2P数据可以接收,大大提高了带宽利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种P2P系统数据获取方法的方法流程图之一;
图2为本发明一种打洞操作的信令图;
图3为本发明一种P2P系统数据获取方法的方法流程图之二;
图4为本发明一种P2P系统数据获取方法的方法流程图之三;
图5为本发明一种P2P系统中数据获取装置的装置结构图之一;
图6为本发明一种P2P系统中数据获取装置的装置结构图之二;
图7为本发明一种P2P系统中数据获取装置的装置结构图之三。
具体实施方式
本发明实施例提供了一种P2P系统中数据获取方法和装置。现如今,在网络视频行业竞争日益激烈的现状下,各家视频网站都试图通过引入P2P技术节省带宽费用,由于中国网络视频流量的巨大以及带宽费用的高昂,优化P2P技术,提高一个点的带宽节约比,也能为大型视频网站节约很大一笔开销,这里所述的带宽节约比是一种衡量带宽利用率的标准,是总P2P下载数据量/总下载数据量的商,这个值越高越好。在传统的P2P系统中,对每一个分段资源,用户节点都要获取一遍其它资源节点信息(对于用户节点和资源节点需要说明的是,在P2P系统中,一个用户节点在从其他用户节点处下载数据资源的同时,也可以为另一部分用户节点上传数据,而在本发明中所指的用户节点是指进行数据下载的用户节点,所指的资源节点是指进行数据上传的用户节点),再与其它资源节点进行打洞操作,然后才能开始获取数据。在这个过程完成前,P2P下载无P2P数据可收。然而,一般来说,拥有一个文件的其中一个分段文件的资源节点同样也会有很大的几率拥有该文件的其他的分段文件,故用户节点保存在完成打洞操作后从资源节点处获取一个分段文件时该资源节点的成功节点信息,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而所述用户节点在等待服务器返回对应该另一个分段文件的资源节点信息以及向返回的资源节点进行打洞操作时依然有数据可以接收,大大提高了带宽利用率。
在完成对资源节点的打洞操作后,用户节点就通过资源节点的允许下穿透NAT设备与该资源节点建立了数据连接,这种连接是一种互相确认的连接,也就是说用户节点的IP地址和端口信息和资源节点的IP地址和端口信息均不能发生改变,只要没有改变,在下一次所述用户节点连接该资源节点时,就可以免去了打洞的操作,直接连接资源节点下载对应的分段资源,而且即使用户节点或者资源节点的IP地址和端口信息发生了改变,那也可以立刻开始打洞操作,这样也能有效缩短用户节点没有数据可以接收的时间,提高带宽利用率。
在该用户节点从资源节点处获取一个文件的分段文件时,同时也能获取从该资源节点的下载速度信息(比如说下载速度和平均下载速度),在P2P系统的下载机制中,P2P系统会根据用户节点从其他资源节点下载数据的下载速度信息来分配下载任务,下载数据的下载速度和平均下载速度越高的分配的下载任务越多。如果用户节点不知道从一个资源节点下载数据的下载速度信息,则需要通过几次数据的来往后才能确定出有效的下载速度信息,而在这几次数据的来往之间的数据传输速度是很低的。如果用户节点将下载速度信息作为成功节点信息的一部分进行保存,则在需要使用成功节点信息从所述资源节点处下载同一个文件的另一个分段文件,可以直接使用其中的下载速度信息来分配下载任务,节省了确定出有效下载速度信息的步骤,提高了带宽利用率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例进行详细描述。
实施例一
请参阅图1,其为本发明一种P2P系统数据获取方法的方法流程图之一,该方法包括以下步骤:
S101:用户节点向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
这里需要说明的是,与分段文件唯一对应的标识符可以是哈希值HASH,一般来说,在用户节点向服务器发送文件请求之前,会获得一个有关该目标文件的所有分段文件的标识符列表或集合,用户节点以此得到需要获取的分段文件对应的标识符,并添加到向服务器发送的文件请求中。
S102:所述用户节点接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
首先需要说明的是,在P2P系统中,一个用户节点在从其他用户节点处下载数据资源的同时,也可以为另一部分用户节点上传数据,而在本发明中所指的用户节点是指进行数据下载的用户节点,所指的资源节点是指进行数据上传的用户节点。
对于本步骤,服务器在接收到文件请求后,根据其中携带的标识符,查找到与本服务器相连的且拥有对应该标识符的分段文件的其他资源节点的节点信息,这里的其他资源节点一般是多个,也就是说返回给用户节点的节点信息更像是该分段文件的种子信息,包含了可以提供该分段文件下载资源的资源节点的必要信息,比如说IP地址、端口信息、NAT类型和ID等。
S103:所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作;
S104:所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
需要说明的是,虽然用户节点通过服务器已经获取到了一些资源节点的IP地址和端口信息,但是并不是每个资源节点都能成功连接开始下载的,而打洞成功后所获取的资源节点的IP地址和端口信息可以理解为一种被确认有效的、验证了的IP地址和端口信息,所以在本发明中被定义成功节点信息,或者说是一种被确认能连接的可能性很高的资源节点的节点信息。
S105:所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息;
可以将成功节点信息保存在缓存中或其他存储位置,以便在下载与第一分段文件属于同一个文件的第二分段文件时进行调用。
S106:当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
一般来说,拥有一个文件的其中一个分段文件的资源节点同样也会有很大的几率拥有该文件的其他的分段文件,所以说,在用户节点需要下载目标文件的第二分段文件时,使用已经成功连接下载第一分段文件的资源节点进行对第二分段文件的下载尝试,是非常有必要的,成功率也会是非常高的。不过也不是说用户节点在准备获取第二分段文件是就只进行调用对应成功节点信息,从对应的资源节点进行获取动作而已,用户节点依然同时也会向服务器发送针对第二分段文件的文件请求。然而由于保存了成功节点信息,所以在用户节点等待服务器返回针对第二分段文件的资源节点信息以及用户节点根据节点信息进行打洞操作时,用户节点可以通过调用成功节点信息开始尝试获取第二分段文件的操作,至少可以在等待服务器响应文件请求返回节点信息的时间段内有P2P数据可以接收。
对于步骤S106来说,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件时,可能会因为网络环境的变化或者其他因素出现至少两种不同的执行情况,不过再对可能出现的至少两种不同的执行情况进行说明之前,需要先针对步骤S103的打洞操作进行展开说明,打洞操作是类似于用户节点通过服务器与资源节点互相确认的一个过程,如图2所示,其为本发明的一种打洞操作的信令图,包括:
S201是用户节点根据从服务器获取的节点信息向一组中的某个资源节点发送确认请求,所述确认请求用于和资源节点进行打洞前的确认,所述确认请求中包括了用户节点的必要信息,比如说IP地址和端口信息,以及资源节点的地址。
S202:所述确认请求会首先达到服务器,所述服务器根据其携带的资源节点的地址将所述确认请求转发到对应的所述资源节点。
S203:所述资源节点在接收到所述确认请求并同意打洞操作后,会保持所述用户节点的IP地址和端口信息用于在打洞操作完成后进行连接时的确认环节,然后将一个用于确认的确认包返回到上述用户节点。
S204:所述确认包会首先到达服务器,服务器根据确认包携带的用户节点信息将所述确认包转发到对应的所述用户节点。
以上步骤仅仅是普通的打洞操作的确认过程,有时会根据资源节点的NAT设备的类型不同增加0~4个消息包的来回才能最终确认。在所述用户节点接收到确认包后,将开始进行打洞,穿透所述资源节点的NAT设备与所述资源节点进行直接连接。这种打洞操作在用户节点试图连接陌生资源节点时都需要执行一次。
从上述打洞操作的展开说明中可以确认的是,两个节点之间能够进行直接连接的必要条件是:一、完成了打洞操作并由此获得了对方的必要信息比如说IP地址和端口信息;二、在进行直接连接前对方当前所使用的IP地址和端口信息与之前保存的IP地址和端口信息是一致的。这样的话,就引出了信息一致和信息不一致的至少这两种情况,以下将分别进行详细的描述。
对于信息一致的情况,在图1所描述的技术方案的基础上,如图3所示,其为本发明一种P2P系统数据获取方法的方法流程图之二,包括:
S300:所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
步骤S301和S302请参照图1所描述的技术方案的步骤S101和S102的描述,这里不再赘述。
S303:当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
步骤S304和S305请参照图1所描述的技术方案的步骤S104和S105的描述,这里不再赘述。
S306:当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,所述资源节点允许所述用户节点获取第二分段文件。
这里需要说明的是,在完成对资源节点的打洞操作后,用户节点就通过资源节点的允许下穿透NAT设备与该资源节点建立了数据连接,这种连接是一种互相确认的连接,也就是说用户节点的IP地址和端口信息和资源节点的IP地址和端口信息均不能发生改变,只要没有改变,理论上在下一次所述用户节点连接该资源节点时,就可以免去了打洞的操作,直接连接所述资源节点下载对应的分段资源,而且一般情况下,拥有第一分段文件的资源节点理论上也是拥有第二分段文件的,故在网络环境没有变化的前提下,或者说所述用户节点在从所述资源节点处获取第二分段文件时,达到了步骤S306所描述情况时,就免去了打洞操作,使得所述用户节点可以与所述资源节点直接建立连接,由此不仅在所述用户节点等待服务器返回对应第二分段文件的文件请求的节点信息的时间段,而且甚至在所述用户节点根据服务器返回的节点信息进行打洞操作的过程中,所述用户节点一直都可以通过所述资源节点获取对应第二分段文件的P2P数据,大大提高了带宽利用率。
对于信息不一致的情况,在图1所描述的技术方案的基础上,如图4所示,其为本发明一种P2P系统数据获取方法的方法流程图之三,包括:
S400:所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
步骤S401和S402请参照图1所描述的技术方案的步骤S101和S102的描述,这里不再赘述。
S403:当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
步骤S404和S3405请参照图1所描述的技术方案的步骤S104和S105的描述,这里不再赘述。
S406:当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,所述用户节点对所述资源节点重新进行打洞操作;
这里需要说明的是,当用户节点的网络情况发生改变(比如说断网后重新连接等情况)和/或者资源节点的网络情况发生改变时,就会出现网络情况发生改变的节点的IP地址和端口信息一般会被P2P系统重新分配或者设置,这种情况下,所述用户节点只能重新对所述资源节点进行打洞操作,然后才能重新建立与所述资源节点的直接连接,但是即使是这样,本发明的这种优选的实施例中所述用户节点无P2P数据接收的时间段也仅仅是重新进行打洞操作的时间段,依旧比现有技术中的等待服务器返回节点信息加上进行打洞操作的无P2P数据接收的时间段要短,也就是说依然提高了带宽利用率。
S407:所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
S408:所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息。
也就是说,再一次保存成功节点信息,这样,在获取同一目标文件的另一段分段文件时,步骤S408所保存的成功节点信息同样是被确认有效的、验证了的资源节点的IP地址和端口信息。
需要注意的是,在P2P系统的下载机制中,P2P系统会根据用户节点从其他资源节点下载数据的下载速度信息来分配下载任务,下载数据的下载速度和平均下载速度越高的分配的下载任务越多。如果用户节点不知道从一个资源节点下载数据的下载速度信息,则需要通过几次数据的来往后才能确定出有效的下载速度信息,而在这几次数据的来往之间的数据传输速度是很低的,对带宽利用率是有较大影响的。基于这种情况,本发明提供了一种优选的实施方式,用户节点将从所述资源节点获取第一分段文件时的速度信息作为成功节点信息一部分进行保存,也就是说,所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
本发明对所述速度信息给出一种优选的范围,所述速度信息包括所述用户节点从所述资源节点完成获取所述第一分段文件时的下载速度以及平均速度。选择下载完成第一分段文件时的下载速度作为所述速度信息中的下载速度是因为从下载完成一个文件的那一刻的下载速度首先是最新的下载速度数据,其次也最能反映所述用户节点从所述资源节点获取数据的能力,而且所述用户节点下载完成一个文件的平均速度也是一种有效的参考数据,但是并不代表本发明就将所述速度信息限定为完成获取所述第一分段文件时的下载速度以及平均速度,也可以是其他有效的速度参考数据,本发明对此不进行限定。以下是本发明的一种优选的成功节点信息所携带的内容:
相应的,当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
也就是说,在所述用户节点需要使用成功节点信息从所述资源节点处下载同一个文件的另一个分段文件,可以直接使用其中的下载速度信息来分配下载任务,由此省去了确定出有效的下载速度信息的数据传输速度很低的几次数据的来往步骤,进一步提高了带宽利用率。
在上述对本发明技术方案的描述中,并没有对所述目标文件的第一分段文件和第二分段文件之间的关系进行限定,只是从名称上确定了第一分段文件和第二分段文件是所述目标文件多个分段文件中的两个不同的分段文件。在上述对本发明技术方案描述的基础上,本发明还针对第一分段文件和第二分段文件之间的关系提供了一种优选的限定方式,具体为:
按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
也就是说,比如目标文件为一个视频文件,以播放时间为顺序依次被切分为三段分段文件,分别是A、B和C,则当第一分段文件为A时,第二分段文件为B,当第一分段文件为B时,第二分段文件为C。
这种第一分段文件和第二分段文件之间的顺序关系在有些情况下,比如说用户观看网络视频的时候,用户所在的用户节点会对该视频文件的分段文件顺序依次下载,下载完成第一分段文件后,才会准备下载第二分段文件,也就是说,本发明在上述对本发明技术方案描述的基础上,还提供了一种优选的获取分段文件的实施方式,即当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
还需要说明的是,顺序下载目标文件的分段文件只是可能的实施方式中的一种优选情况而已,有些情况下第二分段文件可以是目标文件的多个分段文件中除了第一分段文件以外的任意一个分段文件,比如说用户观看网络视频的时候,在播放时间上进行了向前或者向后的拖拽,也就是说随意的改变了播放时间节点,这种情况下也是适用于本发明的技术方案的,而且进行拖拽的时间点也是随机的,所以同理,上述对本发明技术方案的描述中,当所述用户节点准备获取所述目标文件的第二分段文件的时候也可以是用户还没有完成获取第一分段文件的时候,本发明对此不进行限定。
从本实施例可以看出,一般拥有一个文件的其中一个分段文件的资源节点同样也会拥有该文件的其他分段文件,故用户节点保存在完成打洞操作后从资源节点处获取一个分段文件时该资源节点的成功节点信息,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而所述用户节点在等待服务器返回对应该另一个分段文件的资源节点信息以及向返回的资源节点进行打洞操作时依然有数据可以接收,大大提高了带宽利用率。
在完成对资源节点的打洞操作后,用户节点的IP地址和端口信息和资源节点的IP地址和端口信息只要没有改变,在下一次所述用户节点连接该资源节点时,就可以免去了打洞的操作,直接连接资源节点下载对应的分段资源,而且即使用户节点或者资源节点的IP地址和端口信息发生了改变,那也可以立刻开始打洞操作,这样也能有效缩短用户节点没有数据可以接收的时间,提高带宽利用率。
在该用户节点从资源节点处获取一个文件的分段文件时,同时也能获取从该资源节点的下载速度信息(比如说下载速度和平均下载速度),在P2P系统的下载机制中,P2P系统会根据用户节点从其他资源节点下载数据的下载速度信息来分配下载任务,下载数据的下载速度和平均下载速度越高的分配的下载任务越多。如果用户节点不知道从一个资源节点下载数据的下载速度信息,则需要通过几次数据的来往后才能确定出有效的下载速度信息,而在这几次数据的来往之间的数据传输速度是很低的。如果用户节点将下载速度信息作为成功节点信息的一部分进行保存,则在需要使用成功节点信息从所述资源节点处下载同一个文件的另一个分段文件,可以直接使用其中的下载速度信息来分配下载任务,节省了确定出有效下载速度信息的步骤,提高了带宽利用率。
实施例二
本实施例为对应实施例一的装置实施例,请参阅图5,其为本发明一种P2P系统中数据获取装置的装置结构图之一,该装置包括:
发送单元501,用于向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
节点信息接收单元502,用于接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
打洞操作单元503,用于根据所述节点信息向一组所述资源节点进行打洞操作;
第一获取单元504,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
保存单元505,用于保存成功节点信息,所述成功节点信息包括所述打洞操作单元打洞操作成功的资源节点的IP地址和端口信息;
第二获取单元506,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
优选的,在前述图5所示的装置中还可进一步包括登录单元601,如图6所示:
登录单元601,用于在触发所述发送单元501之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,所述打洞操作单元503,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
所述第二获取单元506,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,使得所述资源节点允许获取第二分段文件。
优选的,在前述图5所示的装置中还可进一步包括登录单元701,相应的,所述第二获取单元还可进一步包括打洞操作子单元5061、获取子单元5062和保存子单元5063,如图7所示:
登录单元701,用于在触发所述发送单元501之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,所述打洞操作单元503,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
所述第二获取单元506,还包括打洞操作子单元5061、获取子单元5062和保存子单元5063;
所述打洞操作子单元5061,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,对所述资源节点重新进行打洞操作;
所述获取子单元5062,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
所述保存子单元5063,用于保存成功节点信息,所述成功节点信息包括所述打洞操作子单元打洞操作成功的资源节点的IP地址和端口信息。
优选的,
所述保存单元505所保存的所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
相应的,所述第二获取单元506,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
优选的,
按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
优选的,
所述第二获取单元506,还用于当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
从本实施例可以看出,一般拥有一个文件的其中一个分段文件的资源节点同样也会拥有该文件的其他分段文件,故用户节点保存在完成打洞操作后从资源节点处获取一个分段文件时该资源节点的成功节点信息,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而所述用户节点在等待服务器返回对应该另一个分段文件的资源节点信息以及向返回的资源节点进行打洞操作时依然有数据可以接收,大大提高了带宽利用率。
在完成对资源节点的打洞操作后,用户节点的IP地址和端口信息和资源节点的IP地址和端口信息只要没有改变,在下一次所述用户节点连接该资源节点时,就可以免去了打洞的操作,直接连接资源节点下载对应的分段资源,而且即使用户节点或者资源节点的IP地址和端口信息发生了改变,那也可以立刻开始打洞操作,这样也能有效缩短用户节点没有数据可以接收的时间,提高带宽利用率。
在该用户节点从资源节点处获取一个文件的分段文件时,同时也能获取从该资源节点的下载速度信息(比如说下载速度和平均下载速度),在P2P系统的下载机制中,P2P系统会根据用户节点从其他资源节点下载数据的下载速度信息来分配下载任务,下载数据的下载速度和平均下载速度越高的分配的下载任务越多。如果用户节点不知道从一个资源节点下载数据的下载速度信息,则需要通过几次数据的来往后才能确定出有效的下载速度信息,而在这几次数据的来往之间的数据传输速度是很低的。如果用户节点将下载速度信息作为成功节点信息的一部分进行保存,则在需要使用成功节点信息从所述资源节点处下载同一个文件的另一个分段文件,可以直接使用其中的下载速度信息来分配下载任务,节省了确定出有效下载速度信息的步骤,提高了带宽利用率。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明所提供的一种P2P系统中数据获取方法和装置进行了详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种P2P系统数据获取方法,其特征在于,该方法包括:
用户节点向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
所述用户节点接收所述服务器返回的通过所述标识符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作;
所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息;
当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件;
在所述用户节点向服务器发送文件请求之前,还包括:
所述用户节点登录服务器,以使得所述服务器获取用户节点的IP地址和端口信息;
相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,所述资源节点允许所述用户节点获取第二分段文件。
2.根据权利要求1所述的方法,其特征在于,在所述用户节点向服务器发送文件请求之前,还包括:
所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,所述用户节点对所述资源节点重新进行打洞操作;
所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息。
3.根据权利要求1所述的方法,其特征在于,
所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
相应的,当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
4.根据权利要求3所述的方法,其特征在于,
所述速度信息包括所述用户节点从所述资源节点完成获取所述第一分段文件时的下载速度以及平均速度。
5.根据权利要求1至4任意一项所述的方法,其特征在于,
按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
6.根据权利要求5所述的方法,其特征在于,所述当所述用户节点准备获取所述目标文件的第二分段文件时具体为:
当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
7.一种P2P系统数据获取装置,其特征在于,该装置包括:
发送单元,用于向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
节点信息接收单元,用于接收所述服务器返回的通过所述标识符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
打洞操作单元,用于根据所述节点信息向一组所述资源节点进行打洞操作;
第一获取单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
保存单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作单元打洞操作成功的资源节点的IP地址和端口信息;
第二获取单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件;
还包括:
登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取用户节点的IP地址和端口信息;
相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,使得所述资源节点允许获取第二分段文件。
8.根据权利要求7所述的装置,其特征在于,
所述登录单元,还用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
所述第二获取单元,还包括打洞操作子单元、获取子单元和保存子单元;
所述打洞操作子单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,对所述资源节点重新进行打洞操作;
所述获取子单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
所述保存子单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作子单元打洞操作成功的资源节点的IP地址和端口信息。
9.根据权利要求7所述的装置,其特征在于,
所述保存单元所保存的所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
相应的,所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
10.根据权利要求7至9任意一项所述的装置,其特征在于,
按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
11.根据权利要求10所述的装置,其特征在于,
所述第二获取单元,还用于当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410037531.8A CN103731511B (zh) | 2014-01-26 | 2014-01-26 | 一种p2p系统中数据获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410037531.8A CN103731511B (zh) | 2014-01-26 | 2014-01-26 | 一种p2p系统中数据获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103731511A CN103731511A (zh) | 2014-04-16 |
CN103731511B true CN103731511B (zh) | 2017-02-22 |
Family
ID=50455433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410037531.8A Active CN103731511B (zh) | 2014-01-26 | 2014-01-26 | 一种p2p系统中数据获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103731511B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104320627B (zh) * | 2014-11-10 | 2017-12-12 | 武汉市中心医院 | 一种医院病房视频监视的方法以及相关应用服务系统 |
CN110830565B (zh) * | 2019-10-31 | 2023-04-18 | 北京奇艺世纪科技有限公司 | 资源下载方法、装置、系统、电子设备及存储介质 |
CN111405003B (zh) * | 2020-03-05 | 2023-05-02 | 维沃移动通信有限公司 | 一种资源加载方法及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103269352A (zh) * | 2012-12-07 | 2013-08-28 | 北京奇虎科技有限公司 | 点对点p2p文件下载方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4217391B2 (ja) * | 2001-07-30 | 2009-01-28 | キヤノン株式会社 | 情報取得システム、情報処理装置、方法、プログラム及び媒体 |
CN100484069C (zh) * | 2007-05-21 | 2009-04-29 | 华为技术有限公司 | 一种文件数据分发方法及相关设备 |
CN101945032B (zh) * | 2009-07-07 | 2015-05-13 | 上海聚力传媒技术有限公司 | 点对点网络中的文件下载方法及装置 |
CN101741730B (zh) * | 2009-12-02 | 2012-05-30 | 成都市华为赛门铁克科技有限公司 | 文件下载方法及设备、提供文件下载服务的方法及系统 |
US20130346494A1 (en) * | 2012-06-22 | 2013-12-26 | Motorola Mobility, Inc. | Cloud-based system and method for sharing media among closely located devices |
CN103457999B (zh) * | 2013-08-06 | 2016-05-04 | 北京大学深圳研究生院 | 一种基于ndn网络架构的p2p文件传输方法 |
-
2014
- 2014-01-26 CN CN201410037531.8A patent/CN103731511B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103269352A (zh) * | 2012-12-07 | 2013-08-28 | 北京奇虎科技有限公司 | 点对点p2p文件下载方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103731511A (zh) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101409706B (zh) | 一种边缘网络中的数据分发方法、数据分发系统及相关设备 | |
CN103731451B (zh) | 一种文件上传的方法及系统 | |
US8892768B2 (en) | Load balancing apparatus and load balancing method | |
US9204180B2 (en) | Method, server and terminal for audio and video on demand | |
US20170134495A1 (en) | Method and apparatus for sharing collaboratively edited document | |
US10848586B2 (en) | Content delivery network (CDN) for uploading, caching and delivering user content | |
CN106453460B (zh) | 一种文件分发方法、装置和系统 | |
CN108429682A (zh) | 一种网络传输链路的优化方法及系统 | |
CN108377247A (zh) | 一种消息推送方法和装置 | |
CN105871591A (zh) | 一种分发cdn地址的方法及装置 | |
CN105656964B (zh) | 数据推送的实现方法及装置 | |
CN112954406B (zh) | 数据下载方法、装置、计算机设备和存储介质 | |
CN103731511B (zh) | 一种p2p系统中数据获取方法和装置 | |
CN103841159B (zh) | 一种离线文件传输系统和方法 | |
US8769121B2 (en) | Multi-session web acceleration | |
CN105281987B (zh) | 路由器及数据上传方法、装置、系统 | |
CN109120556B (zh) | 一种云主机访问对象存储服务器的方法及系统 | |
US11863633B2 (en) | Cloud communication method and apparatus | |
CN107835095A (zh) | 一种日志的处理方法及装置 | |
US20160205171A1 (en) | Flow characteristic based peer-to-peer system | |
CN113515392B (zh) | Rpc调用方法、装置、设备及存储介质 | |
CN106060155B (zh) | P2p资源共享的方法及装置 | |
CN104462223B (zh) | 一种基于对等网络模式的网页浏览方法和装置 | |
CN107071038A (zh) | 一种传输多媒体数据的方法及装置 | |
CN113114662A (zh) | 一种单tcp连接处理并发请求的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |