数据传输方法、装置、设备及存储介质与流程

文档序号:31597055发布日期:2022-09-21 07:15阅读:83来源:国知局
数据传输方法、装置、设备及存储介质与流程

1.本技术涉及数据传输领域,尤其涉及一种数据传输方法、装置、设备及存储介质。


背景技术:

2.在进行数据传输时,传输的数据可能会存在损坏的情况。目前,针对可能存在数据损坏的情况,需要在数据全部传输完成后,通过人工来发现存在数据损坏的情况,或者是程序在读取访问数据并抛出异常时确定存在数据损坏的情况。
3.在确定存在数据损坏的情况后,需要重新传输源数据,以确保传输后的数据能够被正常使用。然而,数据传输的过程需要消耗网络资源与计算资源,特别是有些数据是超大文件,极大地造成了网络资源与计算资源的浪费。


技术实现要素:

4.有鉴于此,本技术实施例提供一种数据传输方法、装置、设备及存储介质,旨在在数据传输时,减少网络资源与计算资源的浪费。
5.为实现上述目的,本技术提供一种数据传输方法,所述方法包括:
6.在传输待传输数据的过程中,在一数据分片的数据内容传输至目标文件后,获取所述目标文件中存储内容的非法字符的分布情况;所述待传输数据被切分为多个数据分片;所述存储内容与所述数据内容相对应;
7.若所述分布情况满足预设数据损坏条件,则确定所述存储内容已损坏,并重新传输所述数据分片的数据内容至所述目标文件。
8.示例性的,所述获取所述目标文件中存储内容的非法字符的分布情况之前,包括:
9.轮询数据传输组件的缓存管道,得到轮询结果;所述数据传输组件用于传输待传输数据;
10.若所述轮询结果为所述缓存管道中存在缓存数据,则传输所述缓存数据中一数据分片的数据内容至目标文件;所述缓存数据包括至少一个数据分片。
11.示例性的,所述轮询数据传输组件的缓存管道,得到轮询结果,包括:
12.获取所述待传输数据的数据类别;
13.基于所述数据类别,确定轮询数据传输组件的轮询次数;
14.基于所述轮询次数,轮询所述数据传输组件的缓存管道,得到轮询结果。
15.示例性的,所述若所述轮询结果为所述缓存管道中存在缓存数据,则传输所述缓存数据中一数据分片的数据内容至目标文件,包括:
16.若所述轮询结果为所述缓存管道中存在缓存数据,则确定数据接收方中是否存在目标文件;
17.若存在,则确定所述目标文件中是否存在可用的数据块;
18.若是,则写入所述缓存数据中一数据分片的数据内容至所述可用的数据块中。
19.示例性的,所述若是,则写入所述缓存数据中一数据分片的数据内容至所述可用
的数据块中之后,包括:
20.开启文件输入流;所述文件输入流用于输入所述可用的数据块中的存储内容;
21.若所述文件输入流开启失败,则删除所述可用的数据块中所述数据分片对应的存储内容,并回退所述缓存管道的轮询次数至本次轮询开始时的轮询次数;
22.重新传输被删除的存储内容对应的数据内容至所述可用的数据块。
23.示例性的,所述获取所述目标文件中存储内容的非法字符的分布情况之后,还包括:
24.若所述分布情况未满足预设数据损坏条件,则关闭文件写入流;
25.若所述文件写入流关闭失败,则删除所述可用的数据块中所述数据分片对应的存储内容,并回退所述缓存管道的轮询次数至本次轮询开始时的轮询次数;
26.重新传输被删除的存储内容对应的数据内容至所述可用的数据块。
27.示例性的,所述若所述分布情况满足预设数据损坏条件,则确定所述存储内容已损坏,并重新传输所述数据分片的数据内容至所述目标文件之后,包括:
28.若轮询所述缓存管道的轮询次数等于预设轮询次数,或从所述缓存管道中未轮询到缓存数据,则关闭守护本轮数据传输过程的守护代理。
29.此外,为实现上述目的,本技术还提供一种数据传输装置,所述装置包括:
30.获取模块,用于在传输待传输数据的过程中,在一数据分片的数据内容传输至目标文件后,获取所述目标文件中存储内容的非法字符的分布情况;所述待传输数据被切分为多个数据分片;所述存储内容与所述数据内容相对应;
31.确定模块,用于若所述分布情况满足预设数据损坏条件,则确定所述存储内容已损坏,并重新传输所述数据分片的数据内容至所述目标文件。
32.此外,为实现上述目的,本技术还提供一种数据传输设备,所述数据传输设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的数据传输程序,所述数据传输程序被所述处理器执行时实现如上所述的数据传输方法的步骤。
33.此外,为实现上述目的,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据传输程序,所述数据传输程序被处理器执行时实现如上所述的数据传输方法的步骤。
34.与现有技术中,在数据全部传输完成后,才能确定数据是否损坏,并在确定数据损坏后,重新传输该数据,导致网络资源与计算资源被大量浪费相比,本技术通过将待传输数据切分为多个数据分片,并在一数据分片的数据内容传输至目标文件后,通过该目标文件中存储内容的非法字符的分布情况,来确定该存储内容是否损坏,在确定损坏后,重新传输该数据分片的数据内容至目标文件。可以理解,本技术通过对数据进行切分的方式,实现了在待传输数据被传输的过程中,只要发现存储内容存在损坏,即可重新传输损坏的那部分存储内容对应的数据内容,而无需在数据完全传输后再重新传输全部的数据,因此,本技术实现了在数据传输时,减少了网络资源与计算资源的浪费。
附图说明
35.图1是本技术数据传输方法第一实施例的流程示意图;
36.图2是本技术数据传输方法第一实施例中数据传输的流程示意图;
37.图3是本技术数据传输方法第一实施例中守护代理的守护过程示意图;
38.图4是本技术实施例方案涉及的硬件运行环境的结构示意图。
39.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
40.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
41.本技术提供一种数据传输方法,参照图1,图1为本技术数据传输方法第一实施例的流程示意图。
42.本技术实施例提供了数据传输方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。数据传输方法可应用于服务器中。
43.需要说明的是,本技术基于flume实现,flume是一个数据采集与传输组件,主要由source、channel和sink三个单元组成,其中,source用于从源文件获取数据,channel用于在source获取的数据的数据大小等于预设数据大小时,缓存该数据,sink用于传输该数据至目标文件。其中,该数据包括离线数据和实时数据。
44.需要说明的是,source可以分批获取源文件中的数据,每批数据的数据大小为预设数据大小。其中,预设数据大小可以根据需要进行设置,本实施例不作具体限定。
45.参照图2,图2为源文件中的数据经由flume传输至目标文件的过程,其中,数据管道为channel,sink在图中未示出。
46.需要说明的是,本技术的各个步骤执行于在数据被提交至channel之后的阶段。
47.需要说明的是,为了便于描述,以下省略执行主体描述数据传输方法的各个步骤。数据传输方法包括:
48.步骤s10,在传输待传输数据的过程中,在一数据分片的数据内容传输至目标文件后,获取所述目标文件中存储内容的非法字符的分布情况;所述待传输数据被切分为多个数据分片;所述存储内容与所述数据内容相对应。
49.示例性的,待传输数据为缓存管道(channel)中的数据,该待传输数据需要从源文件写入到目标文件中。
50.示例性的,目标文件可以是本地磁盘中建立的用于存储源文件中的数据的文件,也可以是数据库中建立的用于存储源文件中的数据的文件。
51.示例性的,数据内容在传输至目标文件的过程,可以为直接存储原文,也可以为以指定的编码格式进行编码后存储。对于以指定的编码格式进行编码后存储,一般地,编码格式为压缩格式,例如若数据内容需要以一压缩格式存入目标文件,则需要先在目标文件的相应数据块中通过文件写入流写入元数据,并标识该元数据的压缩格式,最后基于该压缩格式压缩数据内容得到压缩后的压缩数据,并将压缩数据写入数据块;当然,编码格式也可以为其他格式,例如数据内容为视频,.mp4和.wmv这两种视频格式之间的转换也是编码的过程。可以理解,数据内容在存入目标文件后,即成为存储内容。
52.需要说明的是,目标文件中的每一个数据块的数据大小都是固定的,例如2048b、3072b等。
53.示例性的,所述获取所述目标文件中存储内容的非法字符的分布情况,包括:
54.步骤a,若所述存储内容是经过编码处理的存储内容,则获取所述存储内容的编码格式;
55.步骤b,基于所述编码格式,对所述存储内容进行解码,得到解码存储内容。
56.若存储内容是数据内容原文存入的,则无需解码;若存储内容是对数据内容进行编码处理后得到的,则获取编码格式,从而对存储内容进行解码,得到解码存储内容。
57.步骤c,获取所述解码存储内容中非法字符的分布情况。
58.存储内容为字节序列,相应的,解码存储内容也为字节序列。需要说明的是,字节序列中非法字符的分布情况有具体的表现形式,例如对于以“unicode”进行编码的字节序列,当字节序列中出现字符“\ufffd”时,则确定字节序列中存在非法字符。
59.示例性的,非法字符的分布情况,可以通过从目标文件中获取存储内容后,从获取到的存储内容中获取,也可以直接从目标文件中获取存储内容的非法字符的分布情况。
60.示例性的,所述获取所述目标文件中存储内容的非法字符的分布情况之前,包括:
61.步骤d,轮询数据传输组件的缓存管道,得到轮询结果;所述数据传输组件用于传输待传输数据。
62.缓存管道中缓存有若干数量的数据分片,即source获取的一批数据。
63.需要说明的是,在source获取的一批数据提交至缓存管道后,用于守护本批次数据传输过程的守护代理被开启,该守护代理用于从数据管道读取数据分片中的数据内容,并用于确定存储内容是否损坏。参照图3,图3为本实施例中守护代理的守护示意图。
64.守护代理从数据管道读取数据分片中的数据内容前,需要通过数据嗅探器来确定缓存管道中是否还存在缓存数据,其中,数据嗅探器在守护代理开启后开启。
65.需要说明的是,轮询缓存管道通过数据嗅探器来实现,并在数据嗅探器嗅探到缓存管道中缓存数据为空时,或者是嗅探次数达到轮询次数(数据嗅探器每嗅探一次缓存管道,则嗅探次数加一)时,关闭该数据嗅探器,以停止轮询。
66.示例性的,所述轮询数据传输组件的缓存管道,得到轮询结果,包括:
67.步骤d1,获取所述待传输数据的数据类别。
68.数据类别包括离线和实时,即待传输数据包括离线数据和实时数据。
69.步骤d2,基于所述数据类别,确定轮询数据传输组件的轮询次数。
70.不同的数据类别,其对数据传输的要求不同。每一批数据的数据分片的数量与时效性成反比、与传输效率成正比,数据分片的数量与轮询次数相同,即数据嗅探器轮询缓存管道中数据分片的过程,实质上相当于遍历缓存管道中数据分片。对于离线,其不要求传输的时效性,但要求较高的传输效率,因此,在数据类别为离线时,轮询次数设置大些,例如100次、110次等;对于实时,其要求传输的时效性,但不要求传输效率,因此,在数据类别为离线时,轮询次数设置小些,例如20次、30次等。
71.步骤d3,基于所述轮询次数,轮询所述数据传输组件的缓存管道,得到轮询结果。
72.轮询结果包括缓存管道中存在缓存数据,以及缓存管道中未存在缓存数据。其中,在数据嗅探器每次嗅探到缓存数据,并通过守护代理读取该缓存数据,以及成功写入缓存数据的数据内容至目标文件后,会删除本次传输的缓存数据,以避免数据的重复传输。
73.可以理解,若缓存管道中未存在缓存数据,则停止轮询。
74.步骤e,若所述轮询结果为所述缓存管道中存在缓存数据,则传输所述缓存数据中
一数据分片的数据内容至目标文件;所述缓存数据包括至少一个数据分片。
75.示例性的,所述若所述轮询结果为所述缓存管道中存在缓存数据,则传输所述缓存数据中一数据分片的数据内容至目标文件,包括:
76.步骤e1,若所述轮询结果为所述缓存管道中存在缓存数据,则确定数据接收方中是否存在目标文件。
77.数据接收方可以为服务器中的文件系统、远端的数据库等。
78.步骤e2,若存在,则确定所述目标文件中是否存在可用的数据块;
79.步骤e3,若是,则写入所述缓存数据中一数据分片的数据内容至所述可用的数据块中。
80.参照图2,在目标文件中存在可用的数据块时,将数据内容存入该可用的数据块即可,若目标文件中未存在可用的数据块,则在目标文件中创建新的数据块,并将数据内容存入新的数据块。此外,若无法在数据接收方中查找到目标文件,则先创建目标文件,再在目标文件中创建新的数据块。
81.示例性的,所述若是,则写入所述缓存数据中一数据分片的数据内容至所述可用的数据块中之后,包括:
82.步骤e31,开启文件输入流;所述文件输入流用于输入所述可用的数据块中的存储内容。
83.文件输入流用于输入可用的数据块中的存储内容,并将该存储内容加载入内存中。
84.步骤e32,若所述文件输入流开启失败,则删除所述可用的数据块中所述数据分片对应的存储内容,并回退所述缓存管道的轮询次数至本次轮询开始时的轮询次数。
85.文件输入流开启失败表现为输出提示信息或者是报异常,该提示信息用于提示用户数据无法载入,当然,该提示信息记录于日志文件中。此外,在文件输入流开启失败后,表明从数据块中读取数据失败,即数据块中的存储内容无法被正常读取,此时需要删除数据块中的数据。并且,由于未成功传输本次的数据分片的数据内容至目标文件,因此,需要回退次数,使得轮询次数回退为最近一次嗅探前的轮询次数,即本次传输数据分片的数据内容的过程全部被重置。
86.步骤e33,重新传输被删除的存储内容对应的数据内容至所述可用的数据块。
87.需要说明的是,重新传输数据内容至数据块的具体实施方式与传输缓存数据的具体实施方式基本相同,在此不再赘述。
88.步骤s20,若所述分布情况满足预设数据损坏条件,则确定所述存储内容已损坏,并重新传输所述数据分片的数据内容至所述目标文件。
89.若分布情况未满足预设数据损坏条件,则确定存储内容未损坏。
90.预设数据损坏条件可以根据需要进行设置,例如在字节序列中出现2个“\ufffd”或者是3个“\ufffd”等时,确定数据损坏,其中,“\ufffd”可以是连续排布的,也可以是不连续排布的。
91.需要说明的是,重新传输数据分片的数据内容至目标文件的实施方式与上述重新传输数据内容至数据块的具体实施方式基本相同,在此不再赘述。可以理解,重新传输数据分片实现了在发现存储内容已损坏之后,能够立即自动修复该损坏的存储内容。
92.此外,由于能够在分片传输(被切分为多个数据分片后进行传输)的过程中发现存储内容是否损坏,因此,避免了因未及时发现存储内容已损坏而错过重新传输的机会,导致待传输数据丢失的情况的发生。其中,错过重新传输的机会的情况包括:时间较长、源文件被清理等。
93.示例性的,所述获取所述目标文件中存储内容的非法字符的分布情况之后,还包括:
94.步骤f,若所述分布情况未满足预设数据损坏条件,则关闭文件写入流。
95.若分布情况未满足预设数据损坏条件,则确定已基本完成数据写入目标文件的过程,此时可以关闭文件写入流。
96.步骤g,若所述文件写入流关闭失败,则删除所述可用的数据块中所述数据分片对应的存储内容,并回退所述缓存管道的轮询次数至本次轮询开始时的轮询次数。
97.若文件写入流关闭失败,则说明本次数据传输的过程存在错误,需要删除已经完成写入可用的数据块中的本次传输的数据分片对应的存储内容。
98.需要说明的是,本次回退次数的具体实施方式与上述文件输入流开启失败时的回退次数的具体实施方式基本相同,在此不再赘述。
99.步骤h,重新传输被删除的存储内容对应的数据内容至所述可用的数据块。
100.本步骤的具体实施方式与上述步骤e33的具体实施方式基本相同,在此不再赘述。
101.示例性的,所述若所述分布情况满足预设数据损坏条件,则确定所述存储内容已损坏,并重新传输所述数据分片的数据内容至所述目标文件之后,包括:
102.步骤i,若轮询所述缓存管道的轮询次数等于预设轮询次数,或从所述缓存管道中未轮询到缓存数据,则关闭守护本轮数据传输过程的守护代理。
103.在缓存管道中不存在缓存数据后,关闭守护代理,从而开始下一批次数据的传输过程。
104.与现有技术中,在数据全部传输完成后,才能确定数据是否损坏,并在确定数据损坏后,重新传输该数据,导致网络资源与计算资源被大量浪费相比,本技术通过将待传输数据切分为多个数据分片,并在一数据分片的数据内容传输至目标文件后,通过该目标文件中存储内容的非法字符的分布情况,来确定该存储内容是否损坏,在确定损坏后,重新传输该数据分片的数据内容至目标文件。可以理解,本技术通过对数据进行切分的方式,实现了在待传输数据被传输的过程中,只要发现存储内容存在损坏,即可重新传输损坏的那部分存储内容对应的数据内容,而无需在数据完全传输后再重新传输全部的数据,因此,本技术实现了在数据传输时,减少了网络资源与计算资源的浪费。
105.此外,本技术还提供一种数据传输装置,所述装置包括:
106.获取模块,用于在传输待传输数据的过程中,在一数据分片的数据内容传输至目标文件后,获取所述目标文件中存储内容的非法字符的分布情况;所述待传输数据被切分为多个数据分片;所述存储内容与所述数据内容相对应;
107.确定模块,用于若所述分布情况满足预设数据损坏条件,则确定所述存储内容已损坏,并重新传输所述数据分片的数据内容至所述目标文件。
108.示例性的,所述数据传输装置还包括:
109.轮询模块,用于轮询数据传输组件的缓存管道,得到轮询结果;所述数据传输组件
用于传输待传输数据;
110.传输模块,用于若所述轮询结果为所述缓存管道中存在缓存数据,则传输所述缓存数据中一数据分片的数据内容至目标文件;所述缓存数据包括至少一个数据分片。
111.示例性的,所述轮询模块具体用于:
112.获取所述待传输数据的数据类别;
113.基于所述数据类别,确定轮询数据传输组件的轮询次数;
114.基于所述轮询次数,轮询所述数据传输组件的缓存管道,得到轮询结果。
115.示例性的,所述传输模块具体用于:
116.若所述轮询结果为所述缓存管道中存在缓存数据,则确定数据接收方中是否存在目标文件;
117.若存在,则确定所述目标文件中是否存在可用的数据块;
118.若是,则写入所述缓存数据中一数据分片的数据内容至所述可用的数据块中。
119.示例性的,所述传输模块还用于:
120.开启文件输入流;所述文件输入流用于输入所述可用的数据块中的存储内容;
121.若所述文件输入流开启失败,则删除所述可用的数据块中所述数据分片对应的的存储内容,并回退所述缓存管道的轮询次数至本次轮询开始时的轮询次数;
122.重新传输被删除的存储内容对应的数据内容至所述可用的数据块。
123.示例性的,所述数据传输装置还包括:
124.关闭模块,用于若所述分布情况未满足预设数据损坏条件,则关闭文件写入流;
125.删除模块,用于若所述文件写入流关闭失败,则删除所述可用的数据块中所述数据分片对应的的存储内容,并回退所述缓存管道的轮询次数至本次轮询开始时的轮询次数;
126.重新传输模块,用于重新传输被删除的存储内容对应的数据内容至所述可用的数据块。
127.示例性的,所述数据传输装置还包括:
128.关闭模块,用于若轮询所述缓存管道的轮询次数等于预设轮询次数,或从所述缓存管道中未轮询到缓存数据,则关闭守护本轮数据传输过程的守护代理。
129.示例性的,所述第二获取模块具体用于:
130.若所述存储内容是经过编码处理的存储内容,则获取所述存储内容的编码格式;
131.基于所述编码格式,对所述存储内容进行解码,得到解码存储内容;
132.获取所述解码存储内容中的分布情况。
133.本技术数据传输装置具体实施方式与上述数据传输方法各实施例基本相同,在此不再赘述。
134.此外,本技术还提供一种数据传输设备。如图4所示,图4是本技术实施例方案涉及的硬件运行环境的结构示意图。
135.需要说明的是,图4即可为数据传输设备的硬件运行环境的结构示意图。
136.如图4所示,该数据传输设备可以包括:处理器4001,例如cpu,存储器4005,用户接口4003,网络接口4004,通信总线4002。其中,通信总线4002用于实现这些组件之间的连接通信。用户接口4003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户
接口4003还可以包括标准的有线接口、无线接口。网络接口4004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器4005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器4005可选的还可以是独立于前述处理器4001的存储装置。
137.可选地,数据传输设备还可以包括rf(radio frequency,射频)电路,传感器、音频电路、wifi模块等等。
138.本领域技术人员可以理解,图4中示出的数据传输设备结构并不构成对数据传输设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
139.如图4所示,作为一种计算机存储介质的存储器4005中可以包括操作系统、网络通信模块、用户接口模块以及数据传输程序。其中,操作系统是管理和控制数据传输设备硬件和软件资源的程序,支持数据传输程序以及其它软件或程序的运行。
140.在图4所示的数据传输设备中,用户接口4003主要用于连接终端,与终端进行数据通信,如接收终端发送的用户信令数据;网络接口4004主要用于后台服务器,与后台服务器进行数据通信;处理器4001可以用于调用存储器4005中存储的数据传输程序,并执行如上所述的数据传输方法的步骤。
141.本技术数据传输设备具体实施方式与上述数据传输方法各实施例基本相同,在此不再赘述。
142.此外,本技术实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据传输程序,所述数据传输程序被处理器执行时实现如上所述的数据传输方法的步骤。
143.本技术计算机可读存储介质具体实施方式与上述数据传输方法各实施例基本相同,在此不再赘述。
144.此外,为实现上述目的,本技术还提供一种计算机程序产品,包括:计算机程序,所述计算机程序被处理器执行时实现如上所述的数据传输方法的步骤。
145.本技术计算机程序产品具体实施方式与上述数据传输方法各实施例基本相同,在此不再赘述。
146.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
147.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
148.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括:若干指令用以使得一台终端设备(可以是手机,计算机,服务器,设备,或者网络设备等)执行本技术各个实施例所述的方法。
149.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1