CN108093003A - 一种基于位图的数据交互方法、装置及*** - Google Patents
一种基于位图的数据交互方法、装置及*** Download PDFInfo
- Publication number
- CN108093003A CN108093003A CN201611027706.2A CN201611027706A CN108093003A CN 108093003 A CN108093003 A CN 108093003A CN 201611027706 A CN201611027706 A CN 201611027706A CN 108093003 A CN108093003 A CN 108093003A
- Authority
- CN
- China
- Prior art keywords
- client
- bitmap
- block
- level
- data block
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47202—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于位图的数据交互方法、装置及***。在该方法中,第一客户端根据第一客户端的一级位图,确定待请求数据块;第一客户端根据待请求数据块及第二客户端的一级位图,确定第二客户端存储有待请求数据块;一级位图中的一个比特位用于表示一个数据块是否被该客户端存储;第一客户端向第二客户端发送获取待请求数据块请求,该请求中包括二级位图,二级位图中的一个比特位用于表示待请求数据块中的一个数据子块是否被存储;第一客户端接收第二客户端根据二级位图发送的对应数据子块。由于二级位图表示了数据块中的数据子块的存储情况,使得第二客户端能够仅向第一客户端发送第一客户端没有存储的数据子块,避免了数据交互时的资源浪费。
Description
技术领域
本发明涉及计算机及互联网技术,尤其涉及一种基于位图的数据交互方法、装置及***。
背景技术
在传统的客户端/服务器模式中,数据的分发采用专门的服务器执行,多个客户端都从服务器获取数据。这种模式具有***管理较简单、数据一致性、容易控制等优点。但这种模式也存在一些局限性:1)一旦服务器中的数据失效,客户端则无法再获取相应数据;2)因为服务器的个数较少(通常为一个),由于中央处理器(Central Processing Unit,CPU)的能力、内存大小、网络带宽的限制,可同时服务的客户端数量有限,可扩展性差。
点对点(Peer to Peer,P2P)技术,又称对等互联网络技术,是一种网络新技术。在P2P网络中,每个客户端既可以从其他客户端得到服务,也可以向其他客户端提供服务,因此,庞大的客户端资源被利用,能够同时解决上述传统客户端/服务器模式的两个弊端。
P2P技术可应用于流媒体直播、点播等应用。在客户端与客户端进行数据交互时,通常采用位图(bitmap)来表示数据的存储情况,例如:将数据分成若干数据块,每个数据块对应bitmap中的一个比特位,若一个比特位的值为1,则表示该比特位对应的数据块已被存储,若值为0,则表示该比特位对应的数据块没有被存储,因此,客户端A可以根据客户端B的bitmap得知客户端B是否存储有客户端A所需的数据,进而获取数据。
然而,基于目前的bitmap进行数据交互时,请求消息以及数据传输时所需的资源较多,进而降低数据交互的效率。
发明内容
本发明实施例提供了一种基于位图的数据交互方法及装置,用以避免数据交互时的资源浪费,进而提高数据交互的效率。
本发明实施例提供的基于位图的数据交互方法,应用于客户端,所述客户端本地存储的每个文件的数据划分为多个数据块,每个所述数据块划分为多个数据子块,所述方法包括:
第一客户端根据第一客户端的一级位图,确定待请求数据块;
所述第一客户端根据所述待请求数据块及存储有相同文件的第二客户端发送的所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块;客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
所述第一客户端向所述第二客户端发送获取所述待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图;所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
所述第一客户端接收第二客户端根据所述二级位图发送的对应数据子块。
可选地,所述第一客户端根据第一客户端的一级位图,确定待请求数据块之前,还包括:
所述第一客户端向服务器发送登录所述服务器请求,所述请求中包括所述第一客户端的配置信息;
所述第一客户端接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第一客户端配置的存储区大小;
所述第一客户端根据所述存储区大小构建所述第一客户端的一级位图。
可选地,在所述第一客户端接收第二客户端根据所述二级位图发送的对应数据子块之后,还包括:
所述第一客户端根据接收到的数据子块,更新所述待请求数据块的二级位图;
所述第一客户端根据所述更新后的二级位图,更新所述第一客户端的一级位图。
可选地,所述第一客户端根据所述待请求数据块及存储有相同文件的第二客户端发送的所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块,具体包括:
所述第一客户端根据所述待请求数据块的标识、所述第二客户端的一级位图的起始比特位所对应的数据块标识以及所述第二客户端的一级位图所包含的比特位的数量,确定所述第二客户端的一级位图中包含所述待请求数据块对应的比特位;
所述第一客户端根据所述第二客户端的一级位图中所述待请求数据块对应的比特位上的数值,确定所述第二客户端存储有所述待请求数据块。
可选地,该方法还包括:
第一客户端接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
本发明实施例提供的基于位图的数据交互方法,应用于客户端,所述客户端本地存储的每个文件的数据划分为多个数据块,每个所述数据库划分为多个数据子块,所述方法包括:
第二客户端向第一客户端发送所述第二客户端的一级位图,客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
所述第二客户端接收第一客户端发送的获取待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图,所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
所述第二客户端根据所述二级位图向所述第一客户端发送数据子块。
可选地,在第二客户端向第一客户端发送所述第二客户端的一级位图之前,还包括:
所述第二客户端向服务器发送登录所述服务器请求,所述请求中包括所述第二客户端的配置信息;
所述第二客户端接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第二客户端配置的存储区大小;
所述第二客户端根据所述存储区大小构建所述第二客户端的一级位图。
可选地,该方法还包括:
第二客户端接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
本发明实施例提供的客户端,所述客户端作为第一客户端,包括:
第一确定模块,用于根据第一客户端的一级位图,确定待请求数据块;
第二确定模块,根据所述待请求数据块及存储有相同文件的第二客户端发送所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块;客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
发送模块,用于向所述第二客户端发送获取所述待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图;所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
接收模块,用于接收第二客户端根据所述二级位图发送的对应数据子块。
可选地,所述发送模块,还用于:向服务器发送登录所述服务器请求,所述请求中包括所述第一客户端的配置信息;
所述接收模块,还用于接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第一客户端配置的存储区大小;
所述客户端还包括:构建模块,用于根据所述存储区大小构建所述第一客户端的一级位图。
可选地,该客户端还包括:
更新模块,用于根据接收到的数据子块,更新所述待请求数据块的二级位图;根据所述更新后的二级位图,更新所述第一客户端的一级位图。
可选地,所述第二确定模块,具体用于:
根据所述待请求数据块的标识、所述第二客户端的一级位图的起始比特位所对应的数据块标识以及所述第二客户端的一级位图所包含的比特位的数量,确定所述第二客户端的一级位图中包含所述待请求数据块对应的比特位;
根据所述第二客户端的一级位图中所述待请求数据块对应的比特位上的数值,确定所述第二客户端存储有所述待请求数据块。
可选地,所述接收模块,还用于:
接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
本发明实施例还提供了一种客户端,所述客户端作为第二客户端,包括:
发送模块,用于向第一客户端发送所述第二客户端的一级位图,客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
接收模块,用于接收第一客户端发送的获取待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图,所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
所述发送模块,还用于根据所述二级位图向所述第一客户端发送数据子块。
可选地,所述发送模块,还用于向服务器发送登录所述服务器请求,所述请求中包括所述第二客户端的配置信息;
所述接收模块,还用于接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第二客户端配置的存储区大小;
所述客户端还包括:构建模块,用于根据所述存储区大小构建所述第二客户端的一级位图。
可选地,所述发送模块,还用于:
向第一客户端发送携带有一个数据块包含的数据子块的数量的消息。
本发明实施例提供的点对点网络***,包括:
如前所述的任一项第一客户端和如前所述的任一项第二客户端。
在本发明上述实施例中,第一客户端根据所述第一客户端的一级bitmap确定待请求数据块,然后根据确定出的待请求数据块和第二客户端的一级bitmap,判断第一客户端待请求数据块是否已被第二客户端存储;第一客户端在判断出第一客户端待请求数据块已被第二客户端存储时,向第二客户端发送获取待请求数据块的请求,该请求中包括根据待请求数据块生成的二级bitmap,该二级bitmap中的一个比特位用于表示待请求数据块中的一个数据子块是否被第一客户端存储;第一客户端接收第二客户端根据该二级bitmap发送的对应数据子块。由于第一客户端在向第二客户端发送获取待请求数据块的请求时,使用了基于该待请求数据块的二级bitmap,该二级bitmap能够表示第一客户端对待请求数据块中的数据子块的存储情况,使得第二客户端能够仅向第一客户端发送第一客户端没有存储的数据子块,若部分数据子块第一客户端已经存储,则不必再向第一客户端发送该数据子块,避免了第一客户端与第二客户端之间进行数据交互时的资源浪费。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据块位置编号示意图;
图2为本发明实施例提供的基于位图的数据交互方法的流程示意图;
图3为本发明实施例提供的一级bitmap示意图;
图4为本发明实施例提供的第一客户端的结构示意图;
图5为本发明实施例提供的第二客户端的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
客户端登录服务器时,服务器会为客户端分配一个存储区,用于存储待播放数据,以使播放器能够流畅播放,在P2P技术中,存储的数据也可以提供给其他客户端,以降低服务器的负荷。
现有技术中,不同的客户端被配置有相同的存储区大小,将存储区中的数据分为若干个数据块,并对数据块进行编号,例如数据块1、数据块2、数据块3等。通常一个数据块的大小、数据块的数量由服务器发送给所有登录服务器的客户端,以将存储区的数据划分为512个数据块为例,存储区的数据块可如图1所示。
客户端根据对存储区各数据块的存储情况,构建bitmap,以方便与其他客户端进行数据交互。该bitmap中的一个比特位用于表示该比特位对应的数据块是否被客户端存储,例如,若一个比特位的值为1,表示该比特位对应的数据块已被客户端存储,若一个比特位的值为0,表示该比特位对应的数据块未被客户端存储。随着数据的存储,客户端也会对该bitmap进行实时地更新。
客户端A在向服务器发送获取数据的请求后,还可以定时向服务器发送获取播放相同数据的其他客户端信息的请求。服务器在接收到客户端A发送的获取其他客户端信息的请求后,向客户端A发送与客户端A播放相同数据的客户端B的信息。客户端A在接收到客户端B的信息后,向客户端B发送客户端A的bitmap,此外,还需要发送存储区中起始位置的数据块编号,以便客户端B可以根据自身的bitmap以及客户端A的bitmap判断客户端A是否存储有客户端B所需的数据,若客户端A存储有客户端B所需的数据,客户端B可以从客户端A处获取所需的数据。同时,客户端A也会接收到其他客户端发送的其他客户端的bitmap,客户端A也可以从其他客户端处获取客户端A所需的数据。
对于直播场景而言,客户端A与客户端B所播放数据的进度是相同的,因此,在客户端A和客户端B的存储区中,相同位置的数据块对应的数据是相同的。故而,客户端A和客户端B可以直接根据基于如图1所示的数据块位置编号的bitmap,确定对方是否存储有自身所需的数据。
对于点播场景而言,客户端A与客户端B虽然请求播放相同的视频,但其播放的进度可能不同,而点播的视频文件通常有自身划分数据块的标识,该标识与数据块在存储区中的位置无关,因此,客户端A和客户端B可以根据基于该视频文件自身数据块标识的bitmap,确定对方是否存储有自身所需的数据。
然而,在现有技术中,客户端与客户端基于上述bitmap进行数据交互时,可能会造成资源浪费,进而降低了数据交互的效率,例如,客户端A在接收数据块1的数据时,发生故障,数据块1中的数据只接收了部分而未完全接收完毕,因此在bitmap中数据块1对应的比特位的值仍然为0,客户端A向客户端B发送获取数据块1的请求时,客户端B会将全部的数据块1中的数据发送给客户端A,不会考虑客户端A已经接收了数据块1中的部分数据。
为了解决上述问题,本发明实施例提供了一种基于位图的数据交互方法,用以避免数据交互时的资源浪费,进而提高数据交互的效率。
在现有技术中,不同的客户端获取数据时,被配置的存储区的大小是相同的。但是,不同的客户端由于硬件设备不同、存储空间的使用率不同,被配置相同的存储区大小显然是不合理的。对于存储空间较大的客户端,可以为其配置较大的存储区,使得该客户端在存储较多的数据后能够为更多的客户端提供数据,进一步减轻了服务器的运行负荷;对于存储空间较小的客户端,可以为其配置较小的存储区,能够减少客户端自身的运行负荷。
因此,在本发明的一些实施例中,当每个客户端登录服务器时,可以将客户端自身的配置、存储信息,例如原始设备制造商身份(Original Equipment ManufacturerIdentification,简称OEMID)或磁盘大小信息等,携带在登录服务器的请求中。服务器可以根据登录请求,确定客户端数据存储的能力,并为每个客户端配置适合该客户端的存储大小。例如,在直播场景时,服务器可以根据客户端上报的OEMID获取客户端的内存大小,进而为客户端配置存储区大小;在点播场景时,服务器可以根据客户端上报的磁盘大小,为客户端配置存储区大小。服务器可以将为客户端配置的存储区大小携带在登录响应中发送给客户端。
可选地,服务器还可以将一个数据块包含的数据子块的数量,携带在登录响应中发送给客户端,当然,也可以在客户端完成登录之后,通过其他消息发送给客户端。在另外一些实施例中,一个数据块包含的数据子块的数量也可以是预先约定的,即客户端已经预先知道一个数据块所包含的数据子块的数量。
在确定一个数据块包含的数据子块的数量时,若一个数据子块过大即数据子块个数较少,可能产生丢包现象,若一个数据子块过小即数据子块个数较多,则使得传输次数增大、影响***效率。例如,一个数据子块的大小可以设置为数据传输的基本单位,将数据子块的大小设置为最大传输单元(Maximum Transmission Unit,MTU)的值,即可满足对数据子块大小划分的要求。
客户端之间进行基于位图的数据交互时的流程可参见图2,如图所示,该方法包括以下步骤:
步骤201、第二客户端向第一客户端发送第二客户端的一级bitmap。
当第二客户端向服务器发送获取数据的请求后,可以向服务器发送获取播放相同数据的其他客户端信息的请求,使得第二客户端能够从其他客户端处获取数据,并为其他客户端提供数据。服务器接收到第二客户端获取其他客户端信息的请求后,确定第一客户端与第二客户端请求播放相同的数据,则将第一客户端的信息发送给第二客户端,第二客户端在接收到第一客户端的信息后,向第一客户端发送第二客户端的一级bitmap和该一级bitmap起始位置的比特位所对应的数据块的标识,还可以向第一客户端发送第二客户端的该一级bitmap所包含的比特位的数量,当然也可以由第一客户端在接收到第二客户端的一级bitmap后自行确认该一级bitmap中的比特位的数量。
其中,客户端的一级bitmap中的一个比特位用于表示一个数据块是否被该客户端存储。
步骤202、第一客户端根据第一客户端的一级位图,确定待请求数据块。
在第一客户端可以根据服务器为其配置的缓冲区大小而构建的第一客户端的一级bitmap中,一个比特位用于表示一个数据块是否被第一客户端存储。随着数据的接收,第一客户端将已经获取到的数据块所对应的一级bitmap中的比特位上的值置“1”。那么值为“0”的比特位所对应的数据块即为待请求数据块。
需要说明的是,虽然通常用“1”表示该比特位对应的数据块已被存储,用“0”表示该比特位对应的数据块没有被存储,但本发明实施例对此不作限制,也可以将“1”和“0”所表示的含义互换,或采用其他形式表示。
此外,上述步骤201和步骤202,在一些情况下,其发生顺序也可能互换。例如,客户端A即第一客户端,已经确定出待请求数据块,并发现客户端B中没有存储待请求数据块,之后客户端A接收到客户端C发送的一级bitmap,并确认客户端C存储有客户端A的待请求数据块,那么客户端C即为第二客户端,且客户端C在客户端A已经确定待请求数据块后才将客户端C的一级bitmap发送给客户端A。
步骤203、第一客户端根据确定出的待请求数据块以及第二客户端的一级bitmap,判断第一客户端待请求数据块是否已被第二客户端存储。若第二客户端已存储则转入步骤204,否则,判断是否有其他客户端存储有第一客户端待请求的数据块,若没有则结束流程。
如前所述,第一客户端与第二客户端的存储区大小可能不同,即存储的数据块的数量不同,相应地构建的一级bitmap的位数也不同。例如,第一客户端存储的数据块的数量最多为512块,故第一客户端的一级bitmap中包含512个比特位,如图3中的(a)所示;第二客户端存储的数据块的数量最多为128块,故第二客户端的二级bitmap中包含128个比特位,如图3中的(b)所示。因此,第一客户端在判断待请求数据块是否被第二客户端存储时,第一客户端可以根据待请求数据块的标识、第二客户端的一级bitmap的起始比特位所对应的数据块标识,以及第二客户端的一级bitmap所包含的比特位的数量,确定第二客户端的一级bitmap中是否包含有第一客户端待请求数据块所对应的比特位;若确定出第二客户端的一级bitmap中包含有待请求数据块对应的比特位,则根据该比特位上的数据,进一步确定第二客户端是否存储有待请求数据块。
以直播场景为例,假设第一客户端待请求数据块的编号为reqnum,第二客户端一级bitmap起始位置的数据块的标识为starteqnum,第二客户端一级bitmap包含的数据块的数量为len。若reqnum≥starteqnum,且reqnum<(starteqnum+len),则认为第一客户端待请求数据块所对应的比特位在第二客户端的一级bitmap中。在确定待请求数据块对应比特位在第二客户端的一级bitmap中后,计算待请求数据块相对于第二客户端的一级bitmap中起始位置的数据块的偏移量offset,具体地,offset=reqnum-starteqnum,然后根据偏移量offset,在第二客户端的一级bitmap中确定待请求数据块的对应的比特位的位置,并获取该比特位上的数值,若该比特位的值为1,则判断第二客户端已存储有该数据块,否则,判断第二客户端没有存储该数据块。
步骤204、第一客户端在判断出第一客户端待请求数据块已被第二客户端存储时,向第二客户端发送获取上述待请求数据块的请求。
其中,该请求中包括根据待请求数据块生成的二级bitmap,二级bitmap中的一个比特位用于表示待请求数据块中的一个数据子块是否被第一客户端存储。
由于在进行数据传输时,可能会发生各种数据传输故障,导致第一客户端在接收一个数据块中的数据时,只接收了部分数据,按照构建一级bitmap的方法构建一级bitmap时,由于该数据块中的数据未接收完全,故该数据块对应的比特位的值为0。此时,如果第一客户端仍根据一级bitmap向第二客户端发送获取该数据块的请求,那么第二客户端会将数据块1中的全部数据发送给第一客户端,造成了资源浪费。此外,在一级bitmap中,一个数据块的大小通常较大,虽然减少了客户端与客户端之间进行bitmap信息交互时的数据量,但是,在进行数据传输时,由于网络传输的能力限制,较大的数据块容易造成丢包现象严重,且由于数据块较大会使得接收一个数据块的时间较长,容易造成数据播放卡顿,影响播放质量;但若数据块设置的过小,则使得数据传输的次数过多,影响***效率。
为了解决上述问题,在本发明实施例中,可以基于较大的数据块构建一级bitmap,用于客户端与客户端之间进行bitmap信息交互,以使通过传输较小的数据量,就能够使得客户端与客户端之间互相了解对方是否存储有自身所需的数据;然后在请求获取数据时,将一个数据块划分为若干个数据子块,并根据一个数据块中的数据子块的存储情况,构建二级bitmap,将构建的二级bitmap发送给对方客户端,以使对方客户端根据二级bitmap传输数据子块,其中,二级bitmap中的比特位的个数与数据子块的个数一致;例如,若将一个数据块分为5个数据子块,则构建的二级bitmap中包含5个比特位,每个比特位对应一个数据子块,一个比特位的值表示该比特位对应的数据子块是否被客户端存储。
步骤205、第二客户端向第一客户端发送与第一客户端二级bitmap对应的数据子块。
具体地,第二客户端发送的数据子块为根据第一客户端的二级bitmap确定出的第一客户端没有存储的数据子块,以避免资源浪费。
通常,第二客户端可以以数据子块为单位,逐个向第一客户端发送;当然,也可以并行传输。
可选地,第一客户端在接收到第二客户端发送的数据子块后,可以根据接收到的数据子块更新该数据块的二级bitmap。若第一客户端未能从第二客户端处接收到该数据块中的全部数据,还可以将更新后的二级bitmap发送给其他客户端,以获取该数据块的完整数据。
进一步地,第一客户端还可以根据更新后的二级bitmap,更新第一客户端的一级bitmap,以便第一客户端根据更新后的一级bitmap获取其他未存储的数据块。
在本发明上述实施例中,第一客户端根据所述第一客户端的一级bitmap确定待请求数据块,然后根据确定出的待请求数据块和第二客户端的一级bitmap,判断第一客户端待请求数据块是否已被第二客户端存储;第一客户端在判断出第一客户端待请求数据块已被第二客户端存储时,向第二客户端发送获取待请求数据块的请求,该请求中包括根据待请求数据块生成的二级bitmap,该二级bitmap中的一个比特位用于表示待请求数据块中的一个数据子块是否被第一客户端存储;第一客户端接收第二客户端根据该二级bitmap发送的对应数据子块。由于第一客户端在向第二客户端发送获取待请求数据块的请求时,使用了基于该待请求数据块的二级bitmap,该二级bitmap能够表示第一客户端对待请求数据块中的数据子块的存储情况,使得第二客户端能够仅向第一客户端发送第一客户端没有存储的数据子块,若部分数据子块第一客户端已经存储,则不必再向第一客户端发送该数据子块,避免了第一客户端与第二客户端之间进行数据交互时的资源浪费。
基于相同的技术构思,本发明实施例还提供了一种客户端,作为第一客户端,用于实现上述方法实施例中第一客户端的方法流程。参见图4,为本发明实施例提供的第一客户端的结构示意图,如图所述,第一客户端包括:第一确定模块401,第二确定模块402,发送模块403,接收模块404,进一步地,该客户端还可以包括构建模块405以及更新模块406。
第一确定模块401,用于根据第一客户端的一级位图,确定待请求数据块;
第二确定模块402,根据所述待请求数据块及存储有相同文件的第二客户端发送所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块;客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
发送模块403,用于向所述第二客户端发送获取所述待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图;所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
接收模块404,用于接收第二客户端根据所述二级位图发送的对应数据子块。
可选地,所述发送模块403,还用于:向服务器发送登录所述服务器请求,所述请求中包括所述第一客户端的配置信息。此时,所述接收模块404,还用于接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第一客户端配置的存储区大小。该客户端还可以包括构建模块405,用于根据所述存储区大小构建所述第一客户端的一级位图。
可选地,该客户端还可以包括更新模块406,用于根据接收到的数据子块,更新所述待请求数据块的二级位图;根据所述更新后的二级位图,更新所述第一客户端的一级位图。
可选地,所述第二确定模块402,具体用于:根据所述待请求数据块的标识、所述第二客户端的一级位图的起始比特位所对应的数据块标识以及所述第二客户端的一级位图所包含的比特位的数量,确定所述第二客户端的一级位图中包含所述待请求数据块对应的比特位;根据所述第二客户端的一级位图中所述待请求数据块对应的比特位上的数值,确定所述第二客户端存储有所述待请求数据块。
可选地,所述接收模块404,还用于:接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
基于相同的技术构思,本发明实施例还提供了一种客户端,作为第二客户端,用于实现上述方法实施例中第二客户端的方法流程。参见图5,为本发明实施例提供的第二客户端的结构示意图,如图所述,第二客户端包括:发送模块501,接收模块502,进一步地,该客户端还可以包括构建模块503。
其中,发送模块501,用于向第一客户端发送所述第二客户端的一级位图,客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储。
接收模块502,用于接收第一客户端发送的获取待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图,所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储。
发送模块501在接收到获取待请求数据块的请求后,还用于根据所述二级位图向所述第一客户端发送数据子块。
可选地,所述发送模块501,还用于向服务器发送登录所述服务器请求,所述请求中包括所述第二客户端的配置信息。此时,所述接收模块502,还用于接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第二客户端配置的存储区大小。进一步地,该客户端还可以包括:构建模块503,用于根据所述存储区大小构建所述第二客户端的一级位图。
可选地,所述发送模块501,还用于:向第一客户端发送携带有一个数据块包含的数据子块的数量的消息。
基于相同的技术构思,本发明实施例还提供了一种P2P网络***,该***中包括至少包括如前所述的第一客户端以及第二客户端。在实际应用时,一个P2P网络***中包括若干个客户端,每个客户端均可以作为第一客户端,从其他客户端获取数据,也可以作为第二客户端,为其他客户端提供数据。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (17)
1.一种基于位图的数据交互方法,其特征在于,应用于客户端,所述客户端本地存储的每个文件的数据划分为多个数据块,每个所述数据块划分为多个数据子块,所述方法包括:
第一客户端根据第一客户端的一级位图,确定待请求数据块;
所述第一客户端根据所述待请求数据块及存储有相同文件的第二客户端发送的所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块;客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
所述第一客户端向所述第二客户端发送获取所述待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图;所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
所述第一客户端接收第二客户端根据所述二级位图发送的对应数据子块。
2.如权利要求1所述的方法,其特征在于,所述第一客户端根据第一客户端的一级位图,确定待请求数据块之前,还包括:
所述第一客户端向服务器发送登录所述服务器请求,所述请求中包括所述第一客户端的配置信息;
所述第一客户端接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第一客户端配置的存储区大小;
所述第一客户端根据所述存储区大小构建所述第一客户端的一级位图。
3.如权利要求1所述的方法,其特征在于,在所述第一客户端接收第二客户端根据所述二级位图发送的对应数据子块之后,还包括:
所述第一客户端根据接收到的数据子块,更新所述待请求数据块的二级位图;
所述第一客户端根据所述更新后的二级位图,更新所述第一客户端的一级位图。
4.如权利要求1所述的方法,其特征在于,所述第一客户端根据所述待请求数据块及存储有相同文件的第二客户端发送的所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块,具体包括:
所述第一客户端根据所述待请求数据块的标识、所述第二客户端的一级位图的起始比特位所对应的数据块标识以及所述第二客户端的一级位图所包含的比特位的数量,确定所述第二客户端的一级位图中包含所述待请求数据块对应的比特位;
所述第一客户端根据所述第二客户端的一级位图中所述待请求数据块对应的比特位上的数值,确定所述第二客户端存储有所述待请求数据块。
5.如权利要求1所述的方法,其特征在于,还包括:
第一客户端接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
6.一种基于位图的数据交互方法,其特征在于,应用于客户端,所述客户端本地存储的每个文件的数据划分为多个数据块,每个所述数据库划分为多个数据子块,所述方法包括:
第二客户端向第一客户端发送所述第二客户端的一级位图,客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
所述第二客户端接收第一客户端发送的获取待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图,所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
所述第二客户端根据所述二级位图向所述第一客户端发送数据子块。
7.如权利要求6所述的方法,其特征在于,在第二客户端向第一客户端发送所述第二客户端的一级位图之前,还包括:
所述第二客户端向服务器发送登录所述服务器请求,所述请求中包括所述第二客户端的配置信息;
所述第二客户端接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第二客户端配置的存储区大小;
所述第二客户端根据所述存储区大小构建所述第二客户端的一级位图。
8.如权利要求6所述的方法,其特征在于,还包括:
第二客户端接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
9.一种客户端,所述客户端作为第一客户端,其特征在于,包括:
第一确定模块,用于根据第一客户端的一级位图,确定待请求数据块;
第二确定模块,根据所述待请求数据块及存储有相同文件的第二客户端发送所述第二客户端的一级位图,确定所述第二客户端存储有所述待请求数据块;客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
发送模块,用于向所述第二客户端发送获取所述待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图;所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
接收模块,用于接收第二客户端根据所述二级位图发送的对应数据子块。
10.如权利要求9所述的客户端,其特征在于,所述发送模块,还用于:向服务器发送登录所述服务器请求,所述请求中包括所述第一客户端的配置信息;
所述接收模块,还用于接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第一客户端配置的存储区大小;
所述客户端还包括:构建模块,用于根据所述存储区大小构建所述第一客户端的一级位图。
11.如权利要求9所述的客户端,其特征在于,还包括:
更新模块,用于根据接收到的数据子块,更新所述待请求数据块的二级位图;根据所述更新后的二级位图,更新所述第一客户端的一级位图。
12.如权利要求9所述的客户端,其特征在于,所述第二确定模块,具体用于:
根据所述待请求数据块的标识、所述第二客户端的一级位图的起始比特位所对应的数据块标识以及所述第二客户端的一级位图所包含的比特位的数量,确定所述第二客户端的一级位图中包含所述待请求数据块对应的比特位;
根据所述第二客户端的一级位图中所述待请求数据块对应的比特位上的数值,确定所述第二客户端存储有所述待请求数据块。
13.如权利要求9所述的客户端,其特征在于,所述接收模块,还用于:
接收服务器发送的携带有一个数据块包含的数据子块的数量的消息。
14.一种客户端,所述客户端作为第二客户端,其特征在于,包括:
发送模块,用于向第一客户端发送所述第二客户端的一级位图,客户端的一级位图中的一个比特位用于表示一个数据块是否被所述客户端存储;
接收模块,用于接收第一客户端发送的获取待请求数据块的请求,所述请求中包括所述待请求数据块的二级位图,所述待请求数据块的二级位图中的一个比特位用于表示所述待请求数据块中的一个数据子块是否被所述第一客户端存储;
所述发送模块,还用于根据所述二级位图向所述第一客户端发送数据子块。
15.如权利要求14所述的客户端,其特征在于,所述发送模块,还用于向服务器发送登录所述服务器请求,所述请求中包括所述第二客户端的配置信息;
所述接收模块,还用于接收所述服务器发送的登录响应,所述响应中包括所述服务器为所述第二客户端配置的存储区大小;
所述客户端还包括:构建模块,用于根据所述存储区大小构建所述第二客户端的一级位图。
16.如权利要求14所述的客户端,其特征在于,所述发送模块,还用于:
向第一客户端发送携带有一个数据块包含的数据子块的数量的消息。
17.一种基于位图的数据交互***,其特征在于,包括:如权利要求9至权利要求13中任一项所述的第一客户端和如权利要求14至16中任一项所述的第二客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611027706.2A CN108093003A (zh) | 2016-11-21 | 2016-11-21 | 一种基于位图的数据交互方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611027706.2A CN108093003A (zh) | 2016-11-21 | 2016-11-21 | 一种基于位图的数据交互方法、装置及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108093003A true CN108093003A (zh) | 2018-05-29 |
Family
ID=62168113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611027706.2A Pending CN108093003A (zh) | 2016-11-21 | 2016-11-21 | 一种基于位图的数据交互方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108093003A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454997A (zh) * | 2022-08-16 | 2022-12-09 | 苏州浪潮智能科技有限公司 | 位图管理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094923A1 (en) * | 2008-10-09 | 2010-04-15 | Axiometric, Llc | File Distribution in Wireless Networks |
CN101753608A (zh) * | 2008-12-09 | 2010-06-23 | ***通信集团公司 | 分布式***的调度方法及*** |
CN102244665A (zh) * | 2010-05-13 | 2011-11-16 | ***通信集团公司 | 位图管理和节点集合查询的方法以及节点和索引服务器 |
CN102253897A (zh) * | 2011-07-26 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
CN102394899A (zh) * | 2011-04-07 | 2012-03-28 | 传聚互动(北京)科技有限公司 | 提高文件下载速度的点播***及方法 |
-
2016
- 2016-11-21 CN CN201611027706.2A patent/CN108093003A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094923A1 (en) * | 2008-10-09 | 2010-04-15 | Axiometric, Llc | File Distribution in Wireless Networks |
CN101753608A (zh) * | 2008-12-09 | 2010-06-23 | ***通信集团公司 | 分布式***的调度方法及*** |
CN102244665A (zh) * | 2010-05-13 | 2011-11-16 | ***通信集团公司 | 位图管理和节点集合查询的方法以及节点和索引服务器 |
CN102394899A (zh) * | 2011-04-07 | 2012-03-28 | 传聚互动(北京)科技有限公司 | 提高文件下载速度的点播***及方法 |
CN102253897A (zh) * | 2011-07-26 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454997A (zh) * | 2022-08-16 | 2022-12-09 | 苏州浪潮智能科技有限公司 | 位图管理方法、装置、计算机设备和存储介质 |
CN115454997B (zh) * | 2022-08-16 | 2024-02-02 | 苏州浪潮智能科技有限公司 | 位图管理方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100556129C (zh) | 一种对等连接流媒体直播***和装置 | |
EP3439239B1 (en) | Data transmission method and system based on peer-to-peer network | |
US11020662B2 (en) | Rendering system, control method, and storage medium | |
CN106549878B (zh) | 一种业务分流方法和装置 | |
CN108989264A (zh) | 一种直播方法、***以及相关设备 | |
JP2008544684A (ja) | 複数のグループに属するロケーションサーバを用いたユーザのログ情報管理方法及びシステム | |
CN104052803A (zh) | 一种去中心化的分布式渲染方法及渲染*** | |
CN105897850A (zh) | 用于cdn平台的响应处理方法、调度代理服务器及*** | |
US20240106890A1 (en) | Peer-to-peer network scheduling method and system | |
WO2015010197A1 (en) | Method and apparatus for providing redundant data access | |
JP2020061764A (ja) | ネットワークにおける帯域幅の分配のための方法および装置 | |
CN108156257A (zh) | 一种信息推送方法及装置 | |
CN104602035A (zh) | 流媒体点播方法和流媒体点播*** | |
WO2016180284A1 (zh) | 服务节点分配方法、装置、cdn管理服务器及*** | |
CN109347967A (zh) | 一种获取音视频数据的方法及装置 | |
CN101883124B (zh) | 一种点播***的数据下载方法、装置及*** | |
CN108093003A (zh) | 一种基于位图的数据交互方法、装置及*** | |
CN113382065A (zh) | 文件下载方法、装置、***、设备及存储介质 | |
CN105847396A (zh) | 数据传输的方法及设备 | |
US20140161125A1 (en) | Method, duplication point device, and system for data flow reuse transmission | |
CN109831467A (zh) | 数据传输方法、设备及*** | |
CN112788135B (zh) | 资源调度方法、设备及存储介质 | |
CN113377710B (zh) | 一种数据获取方法、装置及电子设备 | |
CN111294661B (zh) | 弹幕显示方法、装置、弹幕服务器设备及存储介质 | |
KR101257579B1 (ko) | 실시간 스트리밍 서비스를 위한 피어-투-피어 오버레이 통신 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180529 |