CN106998361B - 数据传输方法和系统 - Google Patents
数据传输方法和系统 Download PDFInfo
- Publication number
- CN106998361B CN106998361B CN201710211145.XA CN201710211145A CN106998361B CN 106998361 B CN106998361 B CN 106998361B CN 201710211145 A CN201710211145 A CN 201710211145A CN 106998361 B CN106998361 B CN 106998361B
- Authority
- CN
- China
- Prior art keywords
- data
- parameter
- sent
- node
- 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.)
- Active
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
Abstract
本公开提供了一种数据传输方法,包括:获取待发送数据;对所述待发送数据进行处理,得到表征所述待发送数据的第一参数;将所述第一参数发送给至少一个数据节点;从所述数据节点接收针对所述第一参数的返回数据,所述返回数据指示所述数据节点中已经存在的待发送数据的至少一部分;以及基于所述返回数据,生成数据包,所述数据包不携带所述数据节点中已经存在的待发送数据的所述至少一部分;以及向所述数据节点发送所述生成的数据包。本公开还提供了一种数据接收方法、一种数据传输系统、以及一种数据接收系统。
Description
技术领域
本公开涉及一种数据传输方法、一种数据接收方法、一种数据传输系统和一种数据接收系统。
背景技术
随着社会信息化水平的不断提高和互联网技术的快速发展,越来越多的信息以非结构化的数据形式存储,以及以数据的形式通过网络进行传输。随着数据量不断累积,经常会出现大数据量、长连接的数据传输情况。在这种情况下,若将数据无筛选地全部传输,会导致网络带宽占用比较高,利用率不高的问题。
发明内容
本公开的一个方面提供了一种数据传输方法,包括:获取待发送数据。对所述待发送数据进行处理,得到表征所述待发送数据的第一参数。将所述第一参数发送给至少一个数据节点。从所述数据节点接收针对所述第一参数的返回数据,所述返回数据指示所述数据节点中已经存在的待发送数据的至少一部分。基于所述返回数据,生成数据包,所述数据包不携带所述数据节点中已经存在的待发送数据的所述至少一部分。然后向所述数据节点发送所述生成的数据包。
可选地,上述对所述待发送数据进行处理,得到表征所述待发送数据的第一参数,包括:将所述待发送数据切分成至少一个数据块。针对所述至少一个数据块中的每个数据块,生成唯一性参数。然后综合所述至少一个数据块中的每个数据块的唯一性参数得到所述第一参数。
可选地,上述针对所述至少一个数据块中的每个数据块生成唯一性参数,包括针对每个数据块计算所述数据块的哈希值,作为所述数据块的唯一性参数。
可选地,上述基于所述返回数据生成数据包,包括:基于所述返回数据,确定所述数据节点中不存在的待发送数据的数据块,以及将确定的所述数据节点中不存在的待发送数据的数据块作为净荷生成所述数据包。
可选地,上述基于所述返回数据生成数据包,包括:基于所述返回数据,确定所述数据节点中已经存在的待发送数据的数据块的唯一性参数,然后基于所述返回数据,确定所述数据节点中不存在的待发送数据的数据块,以及将所述数据节点中已经存在的待发送数据的数据块的唯一性参数和所确定的所述数据节点中不存在的待发送数据的数据块作为净荷生成所述数据包。
本公开的另一个方面提供了一种数据接收方法,包括:接收来自至少一个数据节点的第一参数,所述第一参数表征所述数据节点的待发送数据。针对所述第一参数,生成返回数据,所述返回数据指示本地已经存在的所述待发送数据的至少一部分。将所述返回数据发送给所述数据节点。然后接收来自所述数据节点的数据包,所述数据包不携带所述本地已经存在的所述待发送数据的所述至少一部分。
可选地,上述数据接收方法还包括,根据所接收的数据包以及本地已经存在的数据,恢复所述待发送数据。
可选地,上述待发送数据被切分成至少一个数据块,以及所述第一参数包括所述至少一个数据块中的每个数据块的唯一性参数。
可选地,上述每个数据块的唯一性参数包括每个数据块的哈希值。
可选地,上述针对所述第一参数生成返回数据,包括:根据所述第一参数,通过查找索引表确定本地已经存在的所述待发送数据的数据块,其中所述索引表记录本地已经存在的数据块的唯一性参数,以及根据确定结果生成所述返回数据。
可选地,上述返回数据包括确认数据和/或否认数据,所述确认数据用于指示本地已经存在的所述待发送数据的数据块,所述否认数据用于指示本地不存在的所述待发送数据的数据块。
可选地,上述数据接收方法还包括,在内存中缓存所接收的数据包中携带的数据块,并且将所缓存的数据块的唯一性参数加入索引表。
可选地,上述数据接收方法还包括:从索引表中移除超出窗口的数据块的唯一性参数,以及从内存中释放所述移除的唯一性参数对应的数据块。
本公开的另一个方面提供了一种数据传输系统,包括:数据获取模块,用于获取待发送数据。数据处理模块,用于对所述待发送数据进行处理,得到表征所述待发送数据的第一参数。参数发送模块,用于将所述第一参数发送给至少一个数据节点。数据接收模块,用于从所述数据节点接收针对所述第一参数的返回数据,所述返回数据指示所述数据节点中已经存在的待发送数据的至少一部分。数据包生成模块,用于基于所述返回数据,生成数据包,所述数据包不携带所述数据节点中已经存在的待发送数据的所述至少一部分。以及数据包发送模块,用于向所述数据节点发送所述生成的数据包。
可选地,上述数据处理模块包括:数据切分单元,用于将所述待发送数据切分成至少一个数据块。唯一性参数生成单元,用于针对所述至少一个数据块中的每个数据块,生成唯一性参数。以及第一参数生成单元,用于综合所述至少一个数据块中的每个数据块的唯一性参数得到所述第一参数。
可选地,上述唯一性参数生成单元,还用于针对每个数据块计算所述数据块的哈希值,作为所述数据块的唯一性参数。
可选地,上述数据包生成模块包括:第一确定单元,用于基于所述返回数据,确定所述数据节点中不存在的待发送数据的数据块。以及生成单元,用于将确定的所述数据节点中不存在的待发送数据的数据块作为净荷生成所述数据包。
可选地,上述数据包生成模块,还包括第二确定模块,其中:所述第二确定模块,用于基于所述返回数据,确定所述数据节点中已经存在的待发送数据的数据块的唯一性参数。所述第一确定模块,用于基于所述返回数据,确定所述数据节点中不存在的待发送数据的数据块。以及所述生成模块,还用于将所述数据节点中已经存在的待发送数据的数据块的唯一性参数和所确定的所述数据节点中不存在的待发送数据的数据块作为净荷生成所述数据包。
本公开的另一个方面提供了一种数据接收系统,包括:参数接收模块,用于接收来自至少一个数据节点的第一参数,所述第一参数表征所述数据节点的待发送数据。返回数据生成模块,用于针对所述第一参数,生成返回数据,所述返回数据指示本地已经存在的所述待发送数据的至少一部分。发送模块,用于将所述返回数据发送给所述数据节点。数据包接收模块,用于接收来自所述数据节点的数据包,所述数据包不携带所述本地已经存在的所述待发送数据的所述至少一部分。
可选地,上述数据接收系统还包括数据恢复模块,用于根据所接收的数据包以及本地已经存在的数据,恢复所述待发送数据。
可选地,上述待发送数据被切分成至少一个数据块,以及所述第一参数包括所述至少一个数据块中的每个数据块的唯一性参数。
可选地,上述每个数据块的唯一性参数包括每个数据块的哈希值。
可选地,上述返回数据生成模块,包括:确定单元,用于根据所述第一参数,通过查找索引表确定本地已经存在的所述待发送数据的数据块,其中所述索引表记录本地已经存在的数据块的唯一性参数。以及生成单元,用于根据确定结果,生成所述返回数据。
可选地,上述返回数据包括确认数据和/或否认数据,所述确认数据用于指示本地已经存在的所述待发送数据的数据块,所述否认数据用于指示本地不存在的所述待发送数据的数据块。
可选地,上述数据接收系统还包括添加模块,用于在内存中缓存所接收的数据包中携带的数据块,并且将所缓存的数据块的唯一性参数加入索引表。
可选地,上述数据接收系统还包括参数移除模块,用于从索引表中移除超出窗口的数据块的唯一性参数。以及数据块释放模块,用于从内存中释放所述移除的唯一性参数对应的数据块。
本公开的另一方面提供了一种数据传输系统,包括一个或多个存储器,存储有可执行指令,以及一个或多个处理器,执行所述可执行指令用于实现如上所述的方法。
本公开的另一方面提供了一种数据接收系统,包括一个或多个存储器,存储有可执行指令,以及一个或多个处理器,执行所述可执行指令用于实现如上所述的方法。
本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的数据传输方法和数据接收方法的应用场景;
图2示意性示出了根据本公开实施例的用于多个节点中每个节点的数据传输和数据接收方法的流程图;
图3a示意性示出了根据本公开实施例的第一参数示意图;
图3b示意性示出了根据本公开实施例的返回数据示意图;
图3c示意性示出了根据本公开实施例的数据包示意图;
图3d示意性示出了根据本公开另一实施例的数据包示意图;
图4示意性示出了根据本公开实施例的数据传输系统和数据接收系统的框图;
图5a示意性示出了根据本公开实施例的数据处理模块的框图;
图5b示意性示出了根据本公开实施例的数据包生成模块的框图;
图5c示意性示出了根据本公开实施例的返回数据生成模块的框图;以及
图6示意性示出了根据本公开另一实施例的数据传输系统和/或数据接收系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
随着电子技术的高速发展,各类非结构化数据,如图片、音视频、以及文本资料等呈现出爆炸性增长的趋势,这些数据在网络传输的过程中网络宽带占用比很高。研究表明,在网络上传输的数据高达50%的部分是重复的,网络带宽利用率不高的一个重要原因就是数据传输中存在大量的重复和冗余。
本公开的实施例提供了一种数据传输方法,包括:获取待发送数据。对所述待发送数据进行处理,得到表征所述待发送数据的第一参数。将所述第一参数发送给至少一个数据节点。从所述数据节点接收针对所述第一参数的返回数据,所述返回数据指示所述数据节点中已经存在的待发送数据的至少一部分。基于所述返回数据,生成数据包,所述数据包不携带所述数据节点中已经存在的待发送数据的所述至少一部分。然后向所述数据节点发送所述生成的数据包。
本公开的另一个实施例提供了一种数据接收方法,包括:接收来自至少一个数据节点的第一参数,所述第一参数表征所述数据节点的待发送数据。针对所述第一参数,生成返回数据,所述返回数据指示本地已经存在的所述待发送数据的至少一部分。将所述返回数据发送给所述数据节点。然后接收来自所述数据节点的数据包,所述数据包不携带所述本地已经存在的所述待发送数据的所述至少一部分。
图1示意性示出了根据本公开的实施例的数据传输方法和数据接收方法的应用场景。
如图1所示,数据节点A、数据节点B、数据节点C、数据节点D和数据节点E可以通过根据本公开的数据传输方法和数据接收方法来彼此传输数据。可以理解,虽然这里示出了五个数据节点,但本公开的实施例可以应用于更多或更少的数据节点。另外,虽然这里示出了任一数据节点与其他的四个数据节点彼此传输数据,但任一数据节点也可以和其他一个、两个、或三个数据节点彼此传输数据。通过本公开的实施例,可以实现多个数据节点之间的数据发送、数据传输、以及数据接收等。
根据本公开实施例,数据节点拥有自己的独立地址,并且可以与具有传输或接收数据功能的网络相连。数据节点可以是工作站、智能电话、计算机、服务器、打印机或者其他可以与网络相连的设备
下面参考图2,以两个数据节点(例如图1所示数据节点A和数据节点B)彼此传输数据为例说明根据本公开的实施例的数据传输方法和数据接收方法。但是可以理解,本公开的实施例的方法也适用于包含更多或更少数据节点的场景。
图2示意性示出了根据本公开的实施例的用于多个节点中每个节点的数据传输和数据接收方法的流程图。
如图2所示,应用于数据节点A的数据传输方法包括操作S110-S160,应用于数据节点B的数据接收方法包括操作S210-S250。
在操作S110,数据节点A获取待发送数据。根据本公开实施例,在获取待发送数据之前,数据节点A与至少一个数据节点(例如,数据节点B)根据IP地址或者端口号建立连接。
其中,获取待发送数据可以是依据请求获取,例如,数据节点B请求数据节点A发送指定的数据,则数据节点A依据数据节点B的请求获取该指定数据。
获取待发送数据还可以是在特定条件下触发获取。例如,在与数据节点B建立连接后,触发获取针对数据节点B的数据,或者在与数据节点C建立连接后,触发获取针对数据节点C的数据。即,与不同的节点建立连接,则获取不同的待发送数据。
在操作S120,对待发送数据进行处理,得到表征该待发送数据的第一参数。根据本公开实施例,对待发送数据进行处理得到第一参数,包括,将待发送数据切分成至少一个数据块,针对至少一个数据块中的每个数据块生成唯一性参数,以及综合至少一个数据块中的每个数据块的唯一性参数得到第一参数。
根据本公开实施例,将待发送数据切分成至少一个数据块包括将待发送数据切分成长度相等的数据块(例如,将长度为1MB的待发送数据切分成16个长度为64KB的数据块)。数据节点A中数据块的切分长度与建立连接的数据节点B的数据块的切分长度保持一致。例如,在数据节点B与数据节点A建立连接后,请求数据节点A发送指定数据,数据节点B中按照每个数据块64KB长度切分,则数据节点A按照与数据节点B相同的长度(64KB)切分指定待发送数据。本领域技术人员应当理解,数据块的切分长度不限于上述的64KB,根据待发送数据的长度,以及传输需求,切分长度可以大于或者小于64KB。
根据本公开实施例,将待发送数据切分成数据块,可以在对比重复数据时,提高重复数据的确认比例。例如待发送数据为1MB长,对端节点包含待发送数据中的一部分,如果将待发送数据切分,然后将每一个数据块与对端节点进行对比,则可以至少部分确认重复的内容,如果将全部待发送数据与对端节点进行对比,则在对端节点找不到重复的数据。
根据本公开实施例,针对至少一个数据块中的每个数据块生成唯一性参数,包括针对每个数据块计算该数据块的哈希值作为该数据块的唯一性参数。计算每个数据块的哈希值例如可以使用MD2、MD4、MD5、SHA-1、以及HMAC等算法中的一种或几种。根据本公开实施例,针对每个数据块生成唯一性参数还可以包括对每个数据块计算秘钥、公钥等能够唯一表征该数据块的方法。每个数据块的唯一性参数可以唯一表征该数据块,且占用的带宽小于数据块自身的数据内容。
根据本公开实施例,综合至少一个数据块中的每个数据块的唯一性参数得到所述第一参数,包括将每个数据块的唯一性参数按照相应数据块在待发送数据中的顺序排列。
例如,可以参见图3a所示的第一参数的示意图,如图3a所示,第一参数可以是包的形式,包括包标题(例如查询包)、包体长度值(包体长度可以等于待发送数据切分后得到的数据块的个数)、以及每一个数据块的唯一性参数(即,哈希值,HASH)。
在操作S130,将所述第一参数发送给至少一个数据节点。根据本公开实施例,数据节点A可以将第一参数发送给与数据节点A建立连接的任一个或多个数据节点。例如,数据节点A将第一参数发送给数据节点B。
在操作S210,数据节点B接收来自数据节点A的第一参数,所述第一参数用于表征数据节点A的待发送数据。其中,待发送数据被切分成至少一个数据块。第一参数包括至少一个数据块中的每个数据块的唯一性参数。每个数据块的唯一性参数包括每个数据块的哈希值。关于待发送数据以及第一参数具体可参见上文参考附图2对步骤S120的描述。根据本公开实施例,数据节点B在接收到来自数据节点A发送的数据时,判断该数据是否为第一参数,若该数据为第一参数则进行操作S220。
在操作S220,针对第一参数,生成返回数据。其中,返回数据指示数据节点B已经存在的待发送数据的至少一部分。
根据本公开实施例,针对第一参数生成返回数据可以包括:根据第一参数,通过查找索引表确定数据节点B已经存在的待发送数据的数据块,以及根据确定结果生成返回数据。其中,索引表记录数据节点B已经存在的数据块的唯一性参数。
返回数据包括确认数据和/或否认数据,确认数据用于指示数据节点B已经存在的待发送数据的数据块,否认数据用于指示数据节点B不存在的待发送数据的数据块。
例如,数据节点B的缓存中已经存储的数据块对应的唯一性参数被记录在在索引表中。解析第一参数中待发送数据的每个数据块对应的唯一性参数,然后将待发送数据的每个唯一性参数与数据节点B中索引表记录的唯一性参数进行对比,查找是否存在相同的唯一性参数得到确认数据以及否认数据。若待发送数据的数据块对应的唯一性参数可以在数据节点B的索引表中找到相同的参数,则该数据块得到确认数据,否则得到否认数据,结合每个数据块的确认数据和/或否认数据构建返回数据。
图3b示意性示出了根据本公开实施例的返回数据示意图。
如图3b所示,返回数据可以是包的形式,包括包标题(例如返回包)、包体长度值(包体长度可以等于待发送数据切分后得到的数据块的个数)、以及每一个数据块对应的确认数据和/或否认数据(例如,确认数据用1表示,否认数据用0表示)。
在操作S230,将返回数据发送给数据节点A。根据本公开实施例,将返回数据发送给接收到的第一参数对应的数据节点。例如,数据节点B接收来自数据节点A的第一参数,则将返回数据发送给数据节点A。
下面回到图2结合实施例对数据节点A接收到来自数据节点B的返回数据后数据节点A的操作进行描述。
在操作S140,数据节点A从数据节点B接收针对第一参数的返回数据。其中返回数据指示数据节点B中已经存在的待发送数据的至少一部分。关于返回数据具体可参见上文参考附图2对步骤S220的描述。
在操作S150,基于返回数据,生成数据包。其中,数据包不携带数据节点B中已经存在的待发送数据的至少一部分。
根据本公开实施例,基于返回数据生成数据包可以包括:基于返回数据确定数据节点B中不存在的待发送数据的数据块,以及将确定的数据节点B中不存在的待发送数据的数据块作为净荷生成数据包。即,将返回数据中否认数据所对应的数据块的数据内容生成数据包。
例如,图3c示意性示出了根据本公开实施例的数据包示意图。
如图3c所示,数据包可以是包的形式,包括包标提(例如数据包)、包体长度值(包括数据节点B中不存在的待发送数据的数据块个数,以及数据节点B中不存在的待发送数据的数据块的长度)、以及每一个数据节点B中不存在的待发送数据的数据块的数据内容。
根据本公开的实施例,仅将数据节点B中不存在的数据块生成数据包发送给数据节点B,可以减少发送内容,降低带宽占用比。
根据本公开实施例,基于返回数据生成数据包还可以包括:基于返回数据,确定数据节点B中已经存在的待发送数据的数据块的唯一性参数,并且基于返回数据,确定数据节点B中不存在的待发送数据的数据块,以及将数据节点B中已经存在的待发送数据的数据块的唯一性参数和所确定的数据节点B中不存在的待发送数据的数据块作为净荷生成所述数据包。即,将返回数据中确认数据所对应的数据块的唯一性参数与返回数据中否认数据所对应的数据块的数据内容按照相应数据块在待发送数据中的顺序排列生成数据包。通过本实施例生成的数据包便于数据节点B的解析和读取。
例如,图3d示意性示出了根据本公开另一实施例的数据包示意图。
如图3d所示,数据包可以是包的形式,包括包标提(例如数据包)、包体长度值(包括待发送数据切分后的数据块个数、数据节点B中存在的待发送数据中数据块的长度、以及数据节点B中不存在的待发送数据的数据块的长度)、以及数据节点B中存在的待发送数据的数据块的唯一性参数和数据节点B中不存在的待发送数据的数据块的数据内容。
在操作S160,数据节点A向数据节点B发送生成的数据包。
在操作S240,数据节点B接收来自数据节点A的数据包,该数据包不携带数据节点B已经存在的待发送数据的至少一部分。关于数据包具体可参见上文参考附图2对步骤S150的描述。
根据本公开实施例,数据节点B在接收到来自数据节点A发送的数据时,判断该数据是否为数据包,若该数据为数据包则进行操作S250,若该数据为第一参数则进行操作S220。
在操作S250,根据所接收的数据包以及本地已经存在的数据,恢复待发送数据。根据本公开实施例,在数据节点B的索引表中查找数据包中的唯一性参数或者返回数据中确认数据对应的数据块的唯一性参数对应的数据块的地址,从地址中提取该数据块的数据内容,结合数据包中的数据内容恢复待发送数据。其中,从数据节点B的存储地址中提取到的数据块的数据内容和数据包中由数据节点A发送来的数据块的数据内容按照相应数据块在待发送数据中的顺序排列以恢复待发送数据。
根据本公开实施例,数据节点B在内存中缓存所接收的数据包中携带的数据块,并且将所缓存的数据块的唯一性参数加入索引表。数据节点B在接收到来自数据节点A的数据包后,将数据包中表示真实数据的数据块存储在内存中,并且将该些数据块对应的唯一性参数记录在数据节点B的索引表中。以便增加并更新数据节点B已有的数据块内容和该些数据块对应的唯一性参数。
根据本公开实施例,当索引表中记录的唯一性参数超出窗口容量时,从索引表中移除超出窗口的数据块的唯一性参数,以及从内存中释放所移除的唯一性参数对应的数据块。当数据节点B中的索引表中存储的唯一性参数已经超出索引表的存储范围时,根据预设条件移除其中一些唯一性参数,被移除的唯一性参数对应的数据块的数据内容也从内存中释放。预设条件例如可以是匹配次数低于某一阈值,也可以是调用次数低于某一阈值,还可以是记录时间大于某一阈值等。通过本实施例的方法,可以剔除一些不常被引用的数据块,减轻存储压力。
本公开实施例提供的数据传输方法和数据接收方法,在数据传输的过程中,充分考虑数据的重复性,通过仅传输不重复的数据既不影响数据的完整性,又可以降低网络带宽占用比。
图4示意性示出了根据本公开的实施例的数据传输系统400和数据接收系统500的框图。
如图4所示,数据传输系统400包括数据获取模块410、数据处理模块420、参数发送模块430、数据接收模块440、数据包生成模块450以及数据包发送模块460。数据接收系统500包括参数接收模块510、返回数据生成模块520、发送模块530、数据包接收模块540、数据恢复模块550、添加模块560、参数移除模块570以及数据释放模块580。数据传输系统400和数据接收系统500可以执行上面参考图2描述的方法,以实现多个数据节点之间的数据传输。
具体地,数据获取模块410,用于获取待发送数据。根据本公开实施例,数据读取模块410例如可以执行上文参考图2描述的操作S110。
数据处理模块420,用于对待发送数据进行处理,得到表征待发送数据的第一参数。根据本公开实施例,数据处理模块420例如可以执行上文参考图2描述的操作S120。
参数发送模块430,用于将所述第一参数发送给至少一个数据节点。根据本公开实施例,参数发送模块430例如可以执行上文参考图2描述的操作S130。例如数据传输系统400的参数发送模块430将第一参数发送给数据接收系统500的参数接收模块510。
数据接收模块510,用于接收来自至少一个数据节点(例如,数据传输系统400)的第一参数,该第一参数表征该数据节点的待发送数据。其中,待发送数据被切分成至少一个数据块,以及第一参数包括至少一个数据块中的每个数据块的唯一性参数,每个数据块的唯一性参数包括每个数据块的哈希值。根据本公开实施例,数据接收模块510例如可以执行上文参考图2描述的操作S210。
返回数据生成模块520,用于针对第一参数,生成返回数据。其中,返回数据指示本地已经存在的待发送数据的至少一部分。根据本公开实施例,返回数据生成模块520例如可以执行上文参考图2描述的操作S220。
发送模块530,用于将返回数据发送给数据节点(例如,数据传输系统400)。根据本公开实施例,发送模块530例如可以执行上文参考图2描述的操作S230。例如,数据接收系统500的发送模块530将返回数据发送给数据传输系统400的数据接收模块440。
数据接收模块440,用于从数据节点(例如,数据接收系统500)接收针对第一参数的返回数据。其中,返回数据指示数据节点中已经存在的待发送数据的至少一部分。根据本公开实施例,数据接收模块440例如可以执行上文参考图2描述的操作S140。
数据包生成模块450,用于基于返回数据,生成数据包。其中,数据包不携带对端数据节点中已经存在的待发送数据的至少一部分。根据本公开实施例,数据包生成模块450例如可以执行上文参考图2描述的操作S150。
数据包发送模块460,用于向对端数据节点发送生成的数据包。根据本公开实施例,数据包发送模块460例如可以执行上文参考图2描述的操作S160。例如,数据传输系统400的数据包发送模块460将数据包发送给数据接收系统500的数据包接收模块540。
数据包接收模块540,用于接收来自对端数据节点的数据包,该数据包不携带本地已经存在的待发送数据的至少一部分。根据本公开实施例,数据包接收模块540例如可以执行上文参考图2描述的操作S240。
数据恢复模块550,用于根据所接收的数据包以及本地已经存在的数据,恢复待发送数据。根据本公开实施例,数据恢复模块550例如可以执行上文参考图2描述的操作S250。
添加模块560,用于在内存中缓存所接收的数据包中携带的数据块,并且将所缓存的数据块的唯一性参数加入索引表。
参数移除模块570,用于从索引表中移除超出窗口的数据块的唯一性参数。
数据释放模块580,用于从内存中释放所移除的唯一性参数对应的数据块。
其中,如图5a所示,数据处理模块420包括数据切分单元421、唯一性参数生成单元422以及第一参数生成单元423。
数据切分单元421,用于将待发送数据切分成至少一个数据块。
唯一性参数生成单元422,用于针对至少一个数据块中的每个数据块,生成唯一性参数。具体地,针对每个数据块计算该数据块的哈希值,作为该数据块的唯一性参数。
第一参数生成单元423,用于综合至少一个数据块中的每个数据块的唯一性参数得到第一参数。
其中,如图5b所示,数据包生成模块450包括第一确定单元451、第二确定单元452以及生成单元453。
第一确定单元451,用于基于返回数据,确定对端数据节点中不存在的待发送数据的数据块。
第二确定模块452,用于基于返回数据,确定对端数据节点中已经存在的待发送数据的数据块的唯一性参数。
生成单元453,用于将确定的对端数据节点中不存在的待发送数据的数据块作为净荷生成数据包,或者用于将对端数据节点中已经存在的待发送数据的数据块的唯一性参数和所确定的对端数据节点中不存在的待发送数据的数据块作为净荷生成数据包。
其中,如图5c所示,返回数据生成模块520包括确定单元521、生成单元522。
确定单元521,用于根据第一参数,通过查找索引表确定本地已经存在的待发送数据的数据块,其中索引表记录本地已经存在的数据块的唯一性参数。返回数据包括确认数据和/或否认数据,确认数据用于指示本地已经存在的待发送数据的数据块,否认数据用于指示本地不存在的待发送数据的数据块。
生成单元522,用于根据确定结果,生成返回数据。
本公开实施例提供的数据传输系统和数据接收系统,在数据传输的过程中,充分考虑数据的重复性,通过仅传输不重复的数据既不影响数据的完整性,又可以降低网络带宽占用比。
可以理解的是,数据获取模块410、数据处理模块420、参数发送模块430、数据接收模块440、数据包生成模块450以及数据包发送模块460可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,数据获取模块410、数据处理模块420、参数发送模块430、数据接收模块440、数据包生成模块450以及数据包发送模块460中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,数据获取模块410、数据处理模块420、参数发送模块430、数据接收模块440、数据包生成模块450以及数据包发送模块460中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
可以理解的是,数据接收系统500的参数接收模块510、返回数据生成模块520、发送模块530、数据包接收模块540、数据恢复模块550、添加模块560、参数移除模块570以及数据释放模块580也符合上述描述,在此不再赘述。
图6示意性示出了根据本公开的另一实施例的数据传输系统和/或数据接收系统的框图。
如图6所示,数据传输系统和/或数据接收系统600包括处理器610、计算机可读存储介质620、信号发送器630、以及信号接收器640。该数据传输系统可以执行上面参考图2描述的数据节点A执行的操作S110-S160,数据接收系统可以执行上面参考图2描述的数据节点B执行的操作S210-S250,以实现多个数据节点之间的数据传输。
具体地,处理器610例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器610还可以包括用于缓存用途的板载存储器。处理器610可以是用于执行参考图2~图3d描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质620,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质620可以包括计算机程序621,该计算机程序621可以包括代码/计算机可执行指令,其在由处理器610执行时使得处理器610执行例如上面结合图2~图3d所描述的方法流程及其任何变形。
计算机程序621可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序621中的代码可以包括一个或多个程序模块,例如包括621A、模块621B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器610执行时,使得处理器610可以执行例如上面结合图2~图3d所描述的方法流程及其任何变形。
根据本发明的实施例,数据传输系统400的数据获取模块410、数据处理模块420、参数发送模块430、数据接收模块440、数据包生成模块450以及数据包发送模块460,和/或数据接收系统500的参数接收模块510、返回数据生成模块520、发送模块530、数据包接收模块540、数据恢复模块550、添加模块560、参数移除模块570以及数据释放模块580中的至少一个可以实现为参考图6描述的计算机程序模块,其在被处理器610执行时,可以实现上面描述的相应操作。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (14)
1.一种数据传输方法,包括:
获取待发送数据;
将所述待发送数据切分成至少一个数据块,得到表征所述待发送数据的第一参数;
将所述第一参数发送给至少一个数据节点;
从所述数据节点接收针对所述第一参数的返回数据,所述返回数据指示所述数据节点中已经存在的待发送数据的至少一部分;
基于所述返回数据,生成数据包,所述数据包不携带所述数据节点中已经存在的待发送数据的所述至少一部分,所述数据包中包括所述数据节点中已经存在的待发送数据的数据块的唯一性参数以及所述数据节点中不存在的待发送数据的数据块,所述数据包中的唯一性参数与所述数据包中的数据块按照相应数据块在待发送数据中的顺序排列;以及
向所述数据节点发送所述生成的数据包,以便所述数据节点从本地已经存在的数据中获取与所述数据包中的唯一性参数对应的数据块,并按照所述顺序将所述与所述数据包中的唯一性参数对应的数据块和所述数据包中的数据块进行排列,以恢复所述待发送数据。
2.根据权利要求1所述的方法,其中,所述将所述待发送数据切分成至少一个数据块,得到表征所述待发送数据的第一参数,包括:
针对所述至少一个数据块中的每个数据块,生成唯一性参数;以及
综合所述至少一个数据块中的每个数据块的唯一性参数得到所述第一参数。
3.根据权利要求2所述的方法,其中,所述针对所述至少一个数据块中的每个数据块生成唯一性参数,包括:
针对每个数据块计算所述数据块的哈希值,作为所述数据块的唯一性参数。
4.根据权利要求2所述的方法,其中,所述基于所述返回数据生成数据包,包括:
基于所述返回数据,确定所述数据节点中不存在的待发送数据的数据块;以及
将确定的所述数据节点中不存在的待发送数据的数据块作为净荷生成所述数据包。
5.根据权利要求2所述的方法,其中,所述基于所述返回数据生成数据包,包括:
基于所述返回数据,确定所述数据节点中已经存在的待发送数据的数据块的唯一性参数;
基于所述返回数据,确定所述数据节点中不存在的待发送数据的数据块;以及
将所述数据节点中已经存在的待发送数据的数据块的唯一性参数和所确定的所述数据节点中不存在的待发送数据的数据块作为净荷生成所述数据包。
6.一种数据接收方法,包括:
接收来自至少一个数据节点的第一参数,所述第一参数表征所述数据节点的待发送数据,所述待发送数据被切分成至少一个数据块;
针对所述第一参数,生成返回数据,所述返回数据指示本地已经存在的所述待发送数据的至少一部分;
将所述返回数据发送给所述数据节点;
接收来自所述数据节点的数据包,所述数据包不携带所述本地已经存在的所述待发送数据的所述至少一部分,所述数据包中包括所述数据节点中已经存在的待发送数据的数据块的唯一性参数以及所述数据节点中不存在的待发送数据的数据块,所述数据包中的唯一性参数与所述数据包中的数据块按照相应数据块在待发送数据中的顺序排列;以及
从本地已经存在的数据中获取与所述数据包中的唯一性参数对应的数据块,并按照所述顺序将所述与所述数据包中的唯一性参数对应的数据块和所述数据包中的数据块进行排列,以恢复所述待发送数据。
7.根据权利要求6所述的方法,其中:
所述第一参数包括所述至少一个数据块中的每个数据块的唯一性参数。
8.根据权利要求7所述的方法,其中,所述每个数据块的唯一性参数包括每个数据块的哈希值。
9.根据权利要求7所述的方法,其中,所述针对所述第一参数生成返回数据,包括:
根据所述第一参数,通过查找索引表确定本地已经存在的所述待发送数据的数据块,其中所述索引表记录本地已经存在的数据块的唯一性参数;以及
根据确定结果,生成所述返回数据。
10.根据权利要求9所述的方法,其中,
所述返回数据包括确认数据和/或否认数据,所述确认数据用于指示本地已经存在的所述待发送数据的数据块,所述否认数据用于指示本地不存在的所述待发送数据的数据块。
11.根据权利要求7所述的方法,还包括:
在内存中缓存所接收的数据包中携带的数据块,并且将所缓存的数据块的唯一性参数加入索引表。
12.根据权利要求7所述的方法,还包括:
从索引表中移除超出窗口的数据块的唯一性参数;以及
从内存中释放所述移除的唯一性参数对应的数据块。
13.一种数据传输系统,包括:
数据获取模块,用于获取待发送数据;
数据处理模块,用于将所述待发送数据切分成至少一个数据块,得到表征所述待发送数据的第一参数;
参数发送模块,用于将所述第一参数发送给至少一个数据节点;
数据接收模块,用于从所述数据节点接收针对所述第一参数的返回数据,所述返回数据指示所述数据节点中已经存在的待发送数据的至少一部分;
数据包生成模块,用于基于所述返回数据,生成数据包,所述数据包不携带所述数据节点中已经存在的待发送数据的所述至少一部分,所述数据包中包括所述数据节点中已经存在的待发送数据的数据块的唯一性参数以及所述数据节点中不存在的待发送数据的数据块,所述数据包中的唯一性参数与所述数据包中的数据块按照相应数据块在待发送数据中的顺序排列;以及
数据包发送模块,用于向所述数据节点发送所述生成的数据包,以便所述数据节点从本地已经存在的数据中获取与所述数据包中的唯一性参数对应的数据块,并按照所述顺序将所述与所述数据包中的唯一性参数对应的数据块和所述数据包中的数据块进行排列,以恢复所述待发送数据。
14.一种数据接收系统,包括:
参数接收模块,用于接收来自至少一个数据节点的第一参数,所述第一参数表征所述数据节点的待发送数据,所述待发送数据被切分成至少一个数据块;
返回数据生成模块,用于针对所述第一参数,生成返回数据,所述返回数据指示本地已经存在的所述待发送数据的至少一部分;
发送模块,用于将所述返回数据发送给所述数据节点;
数据包接收模块,用于接收来自所述数据节点的数据包,所述数据包不携带所述本地已经存在的所述待发送数据的所述至少一部分,所述数据包中包括所述数据节点中已经存在的待发送数据的数据块的唯一性参数以及所述数据节点中不存在的待发送数据的数据块,所述数据包中的唯一性参数与所述数据包中的数据块按照相应数据块在待发送数据中的顺序排列;以及
从本地已经存在的数据中获取与所述数据包中的唯一性参数对应的数据块,并按照所述顺序将所述与所述数据包中的唯一性参数对应的数据块和所述数据包中的数据块进行排列,以恢复所述待发送数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211145.XA CN106998361B (zh) | 2017-03-31 | 2017-03-31 | 数据传输方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211145.XA CN106998361B (zh) | 2017-03-31 | 2017-03-31 | 数据传输方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106998361A CN106998361A (zh) | 2017-08-01 |
CN106998361B true CN106998361B (zh) | 2020-02-21 |
Family
ID=59434984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710211145.XA Active CN106998361B (zh) | 2017-03-31 | 2017-03-31 | 数据传输方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106998361B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067488A (zh) * | 2012-12-25 | 2013-04-24 | 中国科学院深圳先进技术研究院 | 一种统一存储的实现方法 |
CN103139300A (zh) * | 2013-02-05 | 2013-06-05 | 杭州电子科技大学 | 一种基于重复数据删除的虚拟机镜像管理的优化方法 |
WO2017021046A1 (en) * | 2015-08-06 | 2017-02-09 | British Telecommunications Public Limited Company | Data packet network |
-
2017
- 2017-03-31 CN CN201710211145.XA patent/CN106998361B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067488A (zh) * | 2012-12-25 | 2013-04-24 | 中国科学院深圳先进技术研究院 | 一种统一存储的实现方法 |
CN103139300A (zh) * | 2013-02-05 | 2013-06-05 | 杭州电子科技大学 | 一种基于重复数据删除的虚拟机镜像管理的优化方法 |
WO2017021046A1 (en) * | 2015-08-06 | 2017-02-09 | British Telecommunications Public Limited Company | Data packet network |
Also Published As
Publication number | Publication date |
---|---|
CN106998361A (zh) | 2017-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9158806B2 (en) | Integrity checking and selective deduplication based on network parameters | |
CN108134775B (zh) | 一种数据处理方法和设备 | |
CN104410692B (zh) | 一种用于重复文件上传的方法和系统 | |
CN104519090A (zh) | 文件传输方法及装置 | |
CN113472900B (zh) | 报文处理方法、设备、存储介质及计算机程序产品 | |
EP3493587B1 (en) | Apparatus and method for data delivery in delay-tolerant network (dtn) | |
EP3459002B1 (en) | Methods and devices for handling hash-tree based data signatures | |
US10380373B2 (en) | Network, method and computer program product for organizing and processing data | |
CN110633168A (zh) | 一种分布式存储系统的数据备份方法和系统 | |
CN112954406B (zh) | 数据下载方法、装置、计算机设备和存储介质 | |
WO2017097106A1 (zh) | 一种文件差量的传输方法以及装置 | |
CN109873855B (zh) | 一种基于区块链网络的资源获取方法和系统 | |
WO2021027252A1 (zh) | 块链式账本中的数据存储方法、装置及设备 | |
CN109905479B (zh) | 文件传输方法和装置 | |
US20160301621A1 (en) | Communication apparatus and method | |
CN105162747B (zh) | 用于压缩设备与解压缩设备探索及握手的系统和方法 | |
CN106998361B (zh) | 数据传输方法和系统 | |
CN111198855B (zh) | 日志数据的处理方法和装置 | |
WO2015124015A1 (zh) | 一种数据包转发方法及设备 | |
CN106453663B (zh) | 改进的基于云服务的存储扩容方法及装置 | |
JP2011510572A (ja) | フィンガープリント技術の実現方法、装置、及びシステム | |
CN115174561B (zh) | 一种文件分段传输方法及系统 | |
CN116389455A (zh) | 一种文件传输方法、系统及电子设备 | |
CN112905542A (zh) | 一种文件处理方法、装置、服务器、设备及存储介质 | |
CN114157670A (zh) | 消息传输方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |