一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件覆盖写方法、装置和电子设备与流程

2022-08-30 23:59:20 来源:中国专利 TAG:


1.本发明涉及文件存储技术领域,尤其是涉及一种文件覆盖写方法、装置和电子设备。


背景技术:

2.相关技术中,分布式文件系统对文件的写入方式通常只支持追加写,不支持覆盖写。为了对分布式文件系统中的文件进行覆盖写,通常需要用户通过终端设备将待覆盖写文件从分布式文件系统中读取出来,然后在终端设备中将待覆盖写文件与预设的覆盖写内容进行合并,再将合并后的文件写入分布式文件系统中,并将分布式文件系统中的待覆盖写文件对应的原文件删除,以完成对待覆盖写文件的覆盖写。但是该方式在对文件进行覆盖写时,需要将分布式文件系统中的文件读取到本地的终端设备上进行文件的合并,还要将本地的合并文件再次写入分布式文件系统中,导致读数据和写数据的数据量均较大,影响覆盖写性能。


技术实现要素:

3.本发明的目的在于提供一种文件覆盖写方法、装置和电子设备,以减少对文件覆盖写时读数据和写数据的数据量,提高覆盖写性能。
4.第一方面,本发明实施例提供了一种文件覆盖写方法,该方法包括:获取覆盖写指令;其中,该覆盖写指令至少包括:需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置;根据该覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上。
5.在可选的实施方式中,上述覆盖写位置包括:覆盖写起始地址和覆盖写长度;其中,该覆盖写长度与覆盖写内容的长度相同;上述根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上的步骤,包括:根据目标文件的文件标识和覆盖写内容的存储位置标识,确定出目标文件和覆盖写内容;从目标文件中的覆盖写起始地址开始,将目标文件中覆盖写长度的内容替换为覆盖写内容。
6.在可选的实施方式中,上述覆盖写指令保存在指定数据库中;上述获取覆盖写指令的步骤,包括:判断该指定数据库中是否存在覆盖写指令;如果存在,获取该覆盖写指令。
7.在可选的实施方式中,上述需要进行覆盖写的目标文件保存在预设的分布式文件系统中;该指定数据库中的覆盖写指令通过下述方式获取:如果接收到用户发送的覆盖写请求,从覆盖写请求中提取覆盖写内容、覆盖写位置和需要进行覆盖的目标文件的文件标识;将该覆盖写内容写入分布式文件系统中,得到该覆盖写内容的存储位置标识;拼接目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置,得到目标文件的覆盖写指令;将该覆盖写指令保存至指定数据库中。
8.在可选的实施方式中,上述根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上的步骤之后,该方法还包括:删除覆盖写指令,以及该存储位置标识对应的文件
中的覆盖写内容。
9.在可选的实施方式中,上述方法还包括:接收用户发送的目标文件的读取请求;判断指定数据库中是否存在目标文件的覆盖写指令;如果存在,根据目标文件的覆盖写指令,从分布式文件系统中读取该覆盖写指令对应的覆盖写内容和目标文件,将覆盖写内容和目标文件进行合并,将合并后的目标文件返回给所述用户;如果不存在,从分布式文件系统中读取目标文件,将读取的目标文件返回给所述用户。
10.在可选的实施方式中,上述分布式文件系统中存储有目标文件的覆盖写版本号;上述将覆盖写内容写入分布式文件系统中,得到覆盖写内容的存储位置标识的步骤之后,该方法还包括:接收分布式文件系统返回的目标文件的覆盖写版本号;将该覆盖写版本号写入覆盖写指令中;上述根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上的步骤之后,该方法还包括:将分布式文件系统中的覆盖写版本号,更新为覆盖写指令中的覆盖写版本号与一的加和。
11.在可选的实施方式中,上述目标文件包括多个副本文件;根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上的步骤,包括:针对目标文件的每个副本文件,根据覆盖写指令,将该覆盖写内容写入当前副本文件中的覆盖写位置上。
12.在可选的实施方式中,上述方法还包括:针对目标文件的每个副本文件,判断覆盖写内容是否成功写入当前副本文件中的覆盖写位置上;如果未成功写入,自动修复当前副本文件,并将覆盖写内容重新写入当前副本文件中,直到当前副本文件覆盖写成功。
13.第二方面,本发明实施例提供了一种文件覆盖写装置,该装置包括:指令获取模块,用于获取覆盖写指令;其中,该覆盖写指令至少包括:需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置;覆盖写模块,用于根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上。
14.第三方面,本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的文件覆盖写方法。
15.第四方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的文件覆盖写方法。
16.本发明实施例带来了以下有益效果:
17.本发明提供的一种文件覆盖写方法、装置和电子设备,首先获取覆盖写指令;该覆盖写指令至少包括需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置;然后根据覆盖写指令,将该覆盖写内容写入目标文件中的覆盖写位置上。该方式基于覆盖写指令中包含的数据,在需要进行覆盖写的目标文件的存储位置上,将覆盖写内容写入目标文件中,无需将目标文件从存储位置中读取出来后再进行覆盖写,从而减少了读数据和写数据的数据量,提升了覆盖写性能。
18.本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
19.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
20.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为本发明实施例提供的一种文件覆盖写方法的流程图;
22.图2为本发明实施例提供的另一种文件覆盖写方法的流程图;
23.图3为本发明实施例提供的另一种文件覆盖写方法的流程图;
24.图4为本发明实施例提供的一种文件覆盖写示意图;
25.图5为本发明实施例提供的一种文件覆盖写装置的结构示意图;
26.图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
28.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.分布式文件系统(distributed file system,dfs)通常是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。例如,带目录树的分布式文件系统hdfs(hadoop distributed filesystem,hadoop分布式文件系统),该hdfs上的文件被水平切割成定长的数据块来存储;该类分布式文件系统可以存储用户上传的文件,也可以对用户提供相应的文件系统操作,例如,卷操作、目录操作、文件操作(创建文件、上传文件内容、读取文件、删除文件等)等。
30.目前的分布式文件系统对文件的写入方式通常只支持追加写,不支持覆盖写。为了对分布式文件系统中的文件进行覆盖写,通常需要通过终端设备将待覆盖写文件从分布式文件系统中读取出来,然后在终端设备(相当于本地)中将待覆盖写文件与预设的覆盖写内容进行合并,再将合并后的文件写入分布式文件系统中,并将分布式文件系统中的待覆盖写文件对应的原文件删除。由于该方式需要从分布式文件系统中对文件进行多次读/写操作,导致读数据和写数据的数据量均较大,影响了覆盖写性能。
31.例如,分布式文件系统中的原文件为1gb,覆盖写内容为1mb,在对原文件进行覆盖写时,需要从分布式文件系统中将1gb的原文件读取出来,在终端设备上将1mb的覆盖写内容覆盖写到1gb的原文件中的对应位置上,然后将合并后的1gb文件写入分布式文件系统中,并删除分布式文件系统中的1gb原文件,该方式为了覆盖写1mb的覆盖写内容,需要读取1gb的文件和重写入1gb的文件,相当于读、写均放大了1000倍,导致读数据和写数据的数据
量均较大,也可以理解为出现了读、写放大的问题。
32.基于上述问题,本发明实施例提供了一种文件覆盖写方法、装置和电子设备,该技术可以应用于各种分布式文件系统中对文件的覆盖写场景中。为了便于对本发明实施例进行理解,首先对本发明实施例所公开的一种文件覆盖写方法进行详细介绍,如图1所示,该方法包括如下步骤:
33.步骤s102,获取覆盖写指令;该覆盖写指令至少包括:需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置。
34.上述覆盖写指令可以是保存在预设的数据库或者存储系统中的数据,该数据通常具有指令属性;该覆盖写指令也可以是用户通过终端设备发送的指令,该终端设备可以是移动终端(例如,手机、平板电脑等),也可以是计算机。上述覆盖写指令中可以包含有需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置,还可以包括其他内容,在此不再一一列举。
35.在具体实现时,上述需要覆盖写的目标文件通常是保存在分布式文件系统中的,该目标文件的文件标识可以是目标文件的文件名称或者其他用于唯一标识文件的代号等;上述覆盖写内容可以理解为用户想要覆盖的内容,该覆盖写内容可以是用户预先上传至分布式文件系统中的,上述覆盖写内容的存储位置标识也即是覆盖写内容在分布式文件系统中的存储位置对应的文件标识,例如,用户上传覆盖写内容,服务器接收到该覆盖写内容后自动将该覆盖写内容作为临时文件写入分布式文件系统中,此时,覆盖写内容的存储位置标识为该临时文件的文件标识。上述覆盖写位置也可以理解为用户想要在目标文件中将覆盖写内容写入的位置,该覆盖写位置可以是目标文件中的某个位置,或者某段范围等。
36.步骤s104,根据上述覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上。
37.根据覆盖写指令中包含的目标文件的文件表示和覆盖写内容的存储位置标识,可以确定出目标文件以及覆盖写内容,例如,当目标文件和覆盖写内容保存在分布式文件系统中时,根据目标文件的文件标识和覆盖写内容的存储位置标识,从分布式文件系统中确定出该目标文件和覆盖写内容。在对目标文件进行覆盖写时,首先在目标文件中查询覆盖写位置,然后在查询到的覆盖写位置上写入覆盖写内容。
38.在具体实现时,完成上述覆盖写指令指示的覆盖写操作后,可以删除该覆盖写指令,以及覆盖写指令中的存储位置标识处的覆盖写内容,从而完成对目标文件的覆盖写。
39.本发明实施例提供的一种文件覆盖写方法,首先获取覆盖写指令;该覆盖写指令至少包括需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置;然后根据覆盖写指令,将该覆盖写内容写入目标文件中的覆盖写位置上。该方式基于覆盖写指令中包含的数据,在需要进行覆盖写的目标文件的存储位置上,将覆盖写内容写入目标文件中,无需将目标文件从存储位置中读取出来后再进行覆盖写,从而减少了读数据和写数据的数据量,提升了覆盖写性能。
40.本发明实施例还提供了另一种文件覆盖写方法,该方法在上述实施例方法的基础上实现;该方法重点描述根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上的具体过程(通过下述步骤s204-s206实现);如图2所示,该方法包括如下步骤:
41.步骤s202,获取覆盖写指令;该覆盖写指令至少包括:需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置;其中,该覆盖写位置包括:覆盖写
起始地址和覆盖写长度。
42.上述覆盖写起始地址可以是用户输入的、目标文件中的地址。由于分布式文件系统中的文件,通常是被水平分割成多个定长的数据块来存储的,因而,该覆盖写起始地址可以是目标文件对应的某个数据块上的某个位置。上述覆盖写长度可以是用户输入的长度值,该长度值与用户写入的覆盖写内容的长度相同;也可以是根据用户输入的覆盖写内容的长度计算得到的长度值。在具体实现时,用户上传覆盖写内容时,系统会将该覆盖写内容保存在分布式文件系统中的指定位置(相当于上述存储位置)上,以供后续在分布式文件系统中对目标文件进行覆盖写时使用。
43.步骤s204,根据目标文件的文件标识和覆盖写内容的存储位置标识,确定出目标文件和覆盖写内容。
44.在具体实现时,由于上述覆盖写内容已预先保存在分布式文件系统的存储位置上,因而可根据覆盖写指令中的目标文件的文件标识和覆盖写内容的存储位置标识,从分布式文件系统中确定出目标文件和覆盖写内容。
45.步骤s206,从目标文件中的覆盖写起始地址开始,将目标文件中覆盖写长度的内容替换为覆盖写内容。
46.根据覆盖写指令中包含的覆盖写起始地址,从目标文件中确定出该覆盖写起始地址对应的位置,从该位置开始将覆盖写内容写入目标文件中,覆盖写内容在目标文件中写入的长度与覆盖写指令中指示的覆盖写长度相同,从而可以根据用户需求,在分布式文件系统中对目标文件进行覆盖写,避免了在将目标文件读取出来,在本地进行覆盖写的读、写数据放大问题。
47.步骤s208,删除上述覆盖写指令,以及存储位置标识对应的文件中的覆盖写内容,以完成对目标文件的覆盖写。
48.当目标文件中的覆盖写长度的内容替换为覆盖写内容后,删除本次执行的覆盖写指令,同时删除存储位置标识对应的文件中的覆盖写内容,从而完成本次覆盖写指令指示的、对目标文件的覆盖写。
49.上述文件覆盖写方法,首先获取覆盖写指令,进而根据覆盖写指令中指示的目标文件的文件标识和覆盖写内容的存储位置标识,确定出目标文件和覆盖写内容;然后从目标文件中的覆盖写起始地址开始,将目标文件中覆盖写长度的内容替换为覆盖写内容;再删除上述覆盖写指令,以及存储位置标识对应的文件中的覆盖写内容,以完成对目标文件的覆盖写。该方式根据覆盖写指令,在需要覆盖写的目标文件的存储位置上将覆盖写内容覆盖到目标文件中,无需将目标文件全部读出来,在本地与覆盖写内容中合并后再写回目标文件的存储位置,从而极大地提升了覆盖写性能,也提升了覆盖写效率。
50.本发明实施例还提供了另一种文件覆盖写方法,该方法在上述实施例方法的基础上实现;该方法重点描述覆盖写指令保存在指定数据库中、需要进行覆盖写的目标文件保存在预设的分布式文件系统中时,获取覆盖写指令的具体过程(通过下述步骤s310-s312实现);如图3所示,该方法包括如下步骤:
51.步骤s302,如果接收到用户发送的覆盖写请求,从该覆盖写请求中提取覆盖写内容、覆盖写位置和需要进行覆盖的目标文件的文件标识。
52.在具体实现时,如果用户想要对分布式文件系统中保存的某一文件进行覆盖写,
用户可以通过终端设备发送覆盖写请求,该覆盖写请求中通常携带有用户输入的覆盖写内容、覆盖写位置和需要进行覆盖写的目标文件的文件标识(也可以是文件名称)。
53.步骤s304,将上述覆盖写内容写入分布式文件系统中,得到覆盖写内容的存储位置标识。
54.当提取到覆盖写内容时,将该覆盖写内容以临时文件的形式写入分布式文件系统中,得到覆盖写内容的存储位置标识,该存储位置标识也即是分布式文件系统中存储覆盖写内容的临时文件的文件标识,该文件标识可以是文件名称。
55.在一些实施例中,上述分布式文件系统中存储有目标文件的覆盖写版本号;将覆盖写内容写入分布式文件系统中,得到覆盖写内容的存储位置标识之后,分布式文件系统会返回保存的目标文件的覆盖写版本;然后系统接收分布式文件系统返回的目标文件的覆盖写版本号,并将该覆盖写版本号写入覆盖写指令中。
56.步骤s306,拼接目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置,得到目标文件的覆盖写指令。
57.将目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置进行拼接,生成目标文件的覆盖写指令,该覆盖写指令也可以称为覆盖写记录。在一些实施例中,如果接收到分布式文件系统返回的目标文件的覆盖写版本号,即可将目标文件的文件标识、覆盖写内容的存储位置标识、覆盖写位置和目标文件的覆盖写版本号进行拼接,生成覆盖写指令。
58.步骤s308,将上述覆盖写指令保存至指定数据库中。
59.用户发送的每条覆盖写请求,均可对应一条覆盖写指令。在具体实现时,可能会接收到多个用户发送的多个覆盖写请求,也即是得到多条覆盖写指令,为了后续有序处理覆盖写指令,可以按照预设规则将覆盖写指令保存至指定数据库中,该预设规则可以是按照覆盖写指令的生成顺序、按照接收覆盖写请求的接收顺序等。
60.步骤s310,实时监控指定数据库中是否存在覆盖写指令。
61.通过预设服务,可以不停的扫描指定数据库中的数据,以达到实时监控指定数据库中的数据的目的,从而在指定数据库中包含有覆盖写指令时,可逐条处理指定数据库中的覆盖写指令。
62.步骤s312;如果存在,获取上述覆盖写指令。
63.步骤s314,根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上。
64.如果指定数据库中存在覆盖写指令,将逐条读取覆盖写指令,针对每条覆盖写指令,均执行步骤s314,也即是针对每条覆盖写指令进行如下处理:根据覆盖写指令中包含的覆盖写内容的存储位置标识,从分布式文件系统中读取覆盖写内容,调用分布式文件系统的预设接口,将该覆盖写内容覆盖写至目标文件的覆盖写位置上,删除本次覆盖写指令和存储位置标识对应的存储位置处的覆盖写内容(也可以理解为删除保存覆盖写内容的临时文件)。
65.在具体实现时,如果覆盖写指令中包含有目标文件的覆盖写版本号,在根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上之后,将分布式文件系统中的覆盖写版本号,更新为覆盖写指令中的覆盖写版本号与一的加和。也可以理解为在覆盖写内容写入目标文件后,分布式目标文件中保存的目标文件的覆盖写版本号加一,从而可以保证
针对同一个文件的任何一次覆盖写,均可用唯一的、严格递增的覆盖写版本号来标识,同时可以根据该覆盖写版本号确定目标文件的覆盖写次数,便于用户后续使用和查询。
66.在具体实现时,由于分布式文件系统中的文件均是多副本(例如,3副本)存储的,因此上述目标文件包括多个副本文件,也即是分布式文件系统中保存有目标文件的多个副本文件;在对目标文件进行覆盖写时,需要针对目标文件的每个副本文件,根据覆盖写指令,将覆盖写内容写入当前副本文件中的覆盖写位置上;也可以理解为将覆盖写内容覆盖写到目标文件对应的所有副本文件中,从而保证副本之间数据的一致性。
67.为了确保目标文件的每个副本文件均完成覆盖写,在具体实现时,需要针对目标文件的每个副本文件,判断覆盖写内容是否成功写入当前副本文件中的覆盖写位置上;如果未成功写入,自动修复当前副本文件,并将覆盖写内容重新写入当前副本文件中,直到当前副本文件覆盖写成功。
68.例如,分布式文件系统中包含有3个目标文件的副本文件,在对目标文件进行覆盖写时,同时对3个副本文件进行并发覆盖写,以使所有的副本文件均覆盖写成功。如果某个副本文件由于磁盘或机器故障损坏,导致这个副本文件覆盖写失败,系统会监控到这种情况,自动将这个磁盘或机器从集群中剔除,并自动根据剩下的2副本文件恢复出第3个副本文件,然后继续将覆盖写内容覆盖写到这个恢复出来的副本文件中,直到3个副本文件均覆盖写成功。
69.为了便于对本发明实施例进行理解,图4给出了一种文件覆盖写示意图;图4中的存储网关用于接收用户发送的覆盖写请求,该存储网关是基于分布式文件系统之上的分布式文件服务,它可以http(hyper text transfer protocol,超文本传输协议)接口的形式存在,可为多个用户提供文件存储服务,也可以提供多用户数据隔离、权限校验等功能;存储网关接收到用户发送的覆盖写请求后,提取该覆盖写请求中的覆盖写内容、需要覆盖写的目标文件的文件标识和覆盖写位置,将该覆盖写内容当作临时文件写入分布式文件系统中,该分布式文件系统系统接收到临时文件后,会向存储网关返回覆盖写版本号,然后该存储网关可以将目标文件的文件标识、覆盖写位置、覆盖写内容的存储位置标识和覆盖写版本号进行拼接,得到覆盖写指令,并将该覆盖写指令保存至指定数据库中。
70.图4中的指令读取服务可以不停扫描指定数据库中的覆盖写指令,并逐条读取指定数据库中的覆盖写指令,针对每条覆盖写指令执行如下操作:读取覆盖写指令指示的临时文件中的覆盖写内容,调用分布式文件系统的预设接口,将覆盖写内容覆盖写到目标文件的多个副本文件中,如果某个副本文件覆盖写失败,则会一直重试覆盖写,直到所有副本文件均在分布式文件系统中覆盖写成功,然后删除临时文件和本条覆盖写指令。
71.在具体实现时,用户会根据自身需求从分布式文件系统中读取文件,对文件的读取操作可以通过下述步骤10-13实现:
72.步骤10,接收用户发送的目标文件的读取请求。用户可以通过终端设备发送对分布式文件系统中的任意文件的读取请求。
73.步骤11,判断指定数据库中是否存在目标文件的覆盖写指令;如果存在,执行步骤12;如果不存在,执行步骤13。
74.步骤12,根据目标文件的覆盖写指令,从分布式文件系统中读取覆盖写指令对应的覆盖写内容和目标文件,将覆盖写内容和目标文件进行合并,将合并后的目标文件返回
给用户。
75.步骤13,从分布式文件系统中读取目标文件,将读取的目标文件返回给用户。
76.上述目标文件的读取方式可以保证用户可以读取到与覆盖写内容合并后的目标文件,从而确保用户能够读取到最新的文件,同时也避免了数据的丢失。
77.上述文件覆盖写方法,如果接收到用户发送的覆盖写请求,从该覆盖写请求中提取覆盖写内容、覆盖写位置和需要进行覆盖的目标文件的文件标识;进而将覆盖写内容写入分布式文件系统中,得到覆盖写内容的存储位置标识;再拼接目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置,得到目标文件的覆盖写指令,并将该覆盖写指令保存至指定数据库中;实时监控和获取指定数据库中的覆盖写指令,根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上。该方式相对于读取原文件、本地合并覆盖内容、然后再上传整个文件并删除原文件的方法,本发明没有读、写放大问题,减少了读数据和写数据的数据量,进一步提升了文件覆盖写的性能。
78.对应于上述方法实施例,本发明实施例提供了一种文件覆盖写装置,如图5所示,该装置包括:
79.指令获取模块50,用于获取覆盖写指令;其中,该覆盖写指令至少包括:需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置。
80.覆盖写模块51,用于根据覆盖写指令,将覆盖写内容写入目标文件中的覆盖写位置上。
81.上述文件覆盖写装置,首先获取覆盖写指令;该覆盖写指令至少包括需要进行覆盖写的目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置;然后根据覆盖写指令,将该覆盖写内容写入目标文件中的覆盖写位置上。该方式基于覆盖写指令中包含的数据,在需要进行覆盖写的目标文件的存储位置上,将覆盖写内容写入目标文件中,无需将目标文件从存储位置中读取出来后再进行覆盖写,从而减少了读数据和写数据的数据量,提升了覆盖写性能。
82.具体地,上述覆盖写位置包括:覆盖写起始地址和覆盖写长度;其中,覆盖写长度与覆盖写内容的长度相同;上述覆盖写模块51,用于:根据目标文件的文件标识和覆盖写内容的存储位置标识,确定出目标文件和覆盖写内容;从目标文件中的覆盖写起始地址开始,将目标文件中覆盖写长度的内容替换为覆盖写内容。
83.进一步地,上述覆盖写指令保存在指定数据库中;上述指令获取模块50,用于:判断指定数据库中是否存在覆盖写指令;如果存在,获取该覆盖写指令。
84.进一步地,上述需要进行覆盖写的目标文件保存在预设的分布式文件系统中;上述装置还包括覆盖写指令保存模块,用于:如果接收到用户发送的覆盖写请求,从覆盖写请求中提取覆盖写内容、覆盖写位置和需要进行覆盖的目标文件的文件标识;将覆盖写内容写入分布式文件系统中,得到覆盖写内容的存储位置标识;拼接目标文件的文件标识、覆盖写内容的存储位置标识和覆盖写位置,得到目标文件的覆盖写指令;将覆盖写指令保存至指定数据库中。
85.进一步地,上述装置还包括信息删除模块,用于:删除覆盖写指令,以及存储位置标识对应的文件中的覆盖写内容。
86.在具体实现时,上述装置还包括文件读取模块,用于:接收用户发送的目标文件的
读取请求;判断指定数据库中是否存在目标文件的覆盖写指令;如果存在,根据目标文件的覆盖写指令,从分布式文件系统中读取覆盖写指令对应的覆盖写内容和目标文件,将覆盖写内容与目标文件进行合并,将合并后的目标文件返回给用户;如果不存在,从分布式文件系统中读取目标文件,将读取的目标文件返回给用户。
87.进一步地,上述分布式文件系统中存储有目标文件的覆盖写版本号;上述覆盖写指令保存模块,还用于:将覆盖写内容写入分布式文件系统中,得到覆盖写内容的存储位置标识之后,接收分布式文件系统返回的目标文件的覆盖写版本号;将覆盖写版本号写入覆盖写指令中。
88.具体地,上述装置还包括版本号更新模块,用于:将分布式文件系统中的覆盖写版本号,更新为覆盖写指令中的覆盖写版本号与一的加和。
89.在具体实现时,上述目标文件包括多个副本文件;上述覆盖写模块51,用于:针对目标文件的每个副本文件,根据覆盖写指令,将覆盖写内容写入当前副本文件中的覆盖写位置上。
90.进一步地,上述装置还包括覆盖写监控模块,用于:针对目标文件的每个副本文件,判断覆盖写内容是否成功写入当前副本文件中的覆盖写位置上;如果未成功写入,自动修复当前副本文件,并将覆盖写内容重新写入当前副本文件中,直到当前副本文件覆盖写成功。
91.本发明实施例所提供的文件覆盖写装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
92.本发明实施例还提供了一种电子设备,参见图6所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述文件覆盖写方法。
93.进一步地,图6所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
94.其中,存储器100可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
95.处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现成可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任
何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
96.本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述文件覆盖写方法,具体实现可参见方法实施例,在此不再赘述。
97.本发明实施例所提供的文件覆盖写方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
98.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
99.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献