CN114584551A - 文件上传方法、电子设备及计算机程序产品 - Google Patents
文件上传方法、电子设备及计算机程序产品 Download PDFInfo
- Publication number
- CN114584551A CN114584551A CN202210100289.9A CN202210100289A CN114584551A CN 114584551 A CN114584551 A CN 114584551A CN 202210100289 A CN202210100289 A CN 202210100289A CN 114584551 A CN114584551 A CN 114584551A
- Authority
- CN
- China
- Prior art keywords
- target file
- cloud
- fragment
- uploading
- s3fs
- 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
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000004590 computer program Methods 0.000 title claims description 19
- 239000012634 fragment Substances 0.000 claims abstract description 222
- 230000002085 persistent effect Effects 0.000 claims abstract description 58
- 230000004044 response Effects 0.000 claims description 13
- 238000004806 packaging method and process Methods 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 19
- 230000005540 biological transmission Effects 0.000 abstract description 18
- 230000015556 catabolic process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种文件上传方法、电子设备及计算机程序产品,S3FS服务上传目标文件时,先确定持久化数据库中是否存在目标文件的历史上传记录,从而确定出本次上传之前是否已经上传过目标文件的部分分片。若之前已经上传过目标文件的部分分片,则继续确定目标文件是否已更新。若目标文件未更新,则续传目标文件,即仅向S3云端上传目标文件的部分分片,部分分片是上次上传时未成功上传的分片。采用该种方案,S3FS服务将待上传的目标文件临时存储在本地,通过断点续传的方式上传文件,速度快且降低资源消耗。
Description
技术领域
本申请涉及云存储技术领域,特别涉及一种文件上传方法、电子设备及计算机程序产品。
背景技术
目前,主流的存储类型主要有三种:块存储、文件存储和对象存储。其中,对象存储有着块存储的高速直接访问磁盘的优点,同时兼具文件存储的分布式共享特点。因此,对象存储正逐渐在云计算存储服务领域占据越来越重要的地位。
对象存储本质上是网络存储系统,一般通过应用程序接口(ApplicationProgramming Interface,API)的形式进行访问。但是,普通用户很难通过写代码调用API的形式访问对象存储系统。S3FS服务是google开发的一款支持将对象存储中的存储桶(bucket)以文件形式导出的文件系统接口,兼容可移植操作系统接口(PortableOperating System Interface,POSIX)语义。S3FS服务基于用户空间文件系统(Filesystem in Userspace,FUSE)开发,允许Linux和Mac OsX将S3云端的存储桶挂载在本地,S3FS服务能够保持对象原来的格式。因此,可借助S3FS服务实现将对象存储转换为文件存储。这样一来,普通用户就可以像访问文件存储系统一样访问对象存储系统。
当用户像访问文件存储系统一样访问对象存储系统时,可能会新建文件、修改文件等,这就需要将新建的文件或修改后的文件上传至S3云端。通常的做法是:将该些待上传的文件临时保存在部署了S3FS服务的电子设备的内存,从内存上传至S3云端。
文件上传过程中,若发生S3FS服务崩溃、网络中断等问题,则导致文件上传失败,需要再次将整个文件重新写入内存并上传,耗时长且占用大量资源。
发明内容
本申请提供一种文件上传方法、电子设备及计算机程序产品,S3FS服务将待上传的目标文件临时存储在本地,通过断点续传的方式上传文件,速度快且降低资源消耗。
第一方面,本申请实施例提供一种文件上传方法,应用于S3FS服务,所述方法包括:
确定持久化数据库中是否存在目标文件的历史上传记录,所述持久化数据库是为所述S3FS服务创建的用于保存上传记录的本地数据库,所述历史上传记录用于记录第一分片上传请求关联的参数,所述第一分片上传请求是所述S3FS服务上次向所述S3云端发送的分片上传请求;
当所述持久化数据库中存在所述历史上传记录时,确定所述目标文件是否已更新;
当所述目标文件未更新时,续传所述目标文件。
第二方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。
第三方面,本申请实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。
本申请实施例提供的文件上传方法、电子设备及计算机程序产品,S3FS服务上传目标文件时,先确定持久化数据库中是否存在目标文件的历史上传记录,从而确定出本次上传之前是否已经上传过目标文件的部分分片。若之前已经上传过目标文件的部分分片,则继续确定目标文件是否已更新。若目标文件未更新,则续传目标文件,即仅向S3云端上传目标文件的部分分片,部分分片是上次上传时未成功上传的分片。采用该种方案,S3FS服务将待上传的目标文件临时存储在本地,通过断点续传的方式上传文件,速度快且降低资源消耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的文件上传方法所适用的网络架构示意图;
图2是本申请实施例提供的文件上传方法的流程图;
图3是本申请实施例提供的文件上传方法的另一个流程图;
图4是本申请实施例提供的文件上传方法的流程图‘
图5是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了方便普通用户使用对象存储系统,运维人员利用S3FS等开源软件将对象存储转换为文件存储。这样一来,普通用户就可以像访问文件存储系统一样访问对象存储系统。文件存储系统含有大量的元数据(metadata),元数据是用于描述数据的数据,主要是描述文件的属性,如文件的属主、权限、修改时间、创建时间等。
现有的S3FS等开源软件部署在用户的终端设备或服务器等电子设备上,当用户像访问文件存储系统一样访问对象存储系统时,可能会新建文件、修改文件等,这就需要将新建的文件或修改后的文件上传至S3云端。上传过程中,S3FS服务将待上传的文件写入电子设备的内存后,将文件从内存中上传至S3云端。
上述上传文件的方式为同步方式,即S3FS服务将文件写入内存后,将内存中的文件同步上传至S3云端。然而,上传过程中,若S3FS服务崩溃或S3FS服务与S3云端之间的网络出现问题,则文件上传失败。下次重传时,需要S3FS服务再次将整个文件重新写入内存并上传,耗时长且占用大量的带宽、内存等资源。
基于此,本申请实施例提供一种文件上传方法、电子设备及计算机程序产品,S3FS服务将待上传的目标文件临时存储在本地,通过断点续传的方式上传文件,速度快且降低资源消耗。
本申请实施例相关名词解释如下:
存储桶(bucket):用户用来管理存储对象的存储空间,类似于文件存储系统里面根目录或磁盘分区,对象存储系统通过存储桶来管理对象。
文件存储系统:也称之为文件系统,是一种存储和组织计算机数据的方法,它使得对文件的存取和查找变得容易。文件存储系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件存储系统来保存数据只需要记住这个文件的所属目录和文件名。
元数据:用于描述数据的数据,主要是描述文件的属性,如文件的属主、权限、修改时间、创建时间等。
文件:可以称之为数据,每个文件有自己的元数据。本申请实施例中,文件存储系统存储的数据称之为文件,对象存储系统存储的数据称之为对象。可以理解的是,同一份数据即可基于文件进行管理,也可基于对象进行管理,用户对文件的操作,可以转换为用户对对象的操作。例如,用户新增一个文件,相当于新增一个对象;用户删除一个文件,相当于删除一个对象。
持久化数据库:指为S3FS服务创建的持久化数据库,该数据库是一个能够持久化保存的数据库,可以基于rocksdb、Redis或其他类型的数据库技术实现,用于保存用户像访问文件存储系统时访问对象存储系统的过程中涉及的元数据,它区别于内存,需创建在磁盘上。一般而言,在使用本申请的技术方案时,需要预先为S3FS服务划分磁盘空间,如在部署S3FS服务的设备上添加新的磁盘,以用于为S3FS服务的持久化数据库存储数据。
目标文件:存储在S3FS服务本地的、待上传的文件。例如,部署了S3FS服务的电子设备上具有一个独立磁盘或一个新的文件系统目录,用于存储目标文件,该独立磁盘与持久化数据库所在的磁盘独立,或者,将一个独立磁盘的存储空间划分为两个独立的空间,一个空间分配给持久化数据库,另一个空间分配给目标文件。通过将目标文件存储在独立磁盘或文件系统目录,网络中断或S3FS服务崩溃,目标文件也不会丢失,便于后续续传。
初传:S3FS服务本次向S3云端上传目标文件之前,从未上传过该目标文件。因此,本次上传称之为初传,初传也称之为初次上传,用NEW_UPLOAD表示。
重传:上次向S3云端上传目标文件的过程中,出现S3FS服务崩溃、S3FS服务与S3云端之间的网络中断等问题,导致目标文件的多个分片中部分分片已成功上传至S3云端、部分分片未成功上传。而且,用户已更新存储在S3FS服务端的目标文件,需要重新上传整个更新后的目标文件。因此,本次上传称之为重传,用RENEW_UPLOAD表示。
续传:上次上传目标文件的过程中出现问题,导致目标文件的多个分片中部分分片已成功上传至S3云端、部分分片未成功上传。而且,用户未更新S3FS服务端的目标文件,本次仅需要上传部分分片,即上次未成功上传的分片即可。因此,本次上传称之为续传,用RESUME_UPLOAD表示。该种传输方式也称之为断点续传,即本次上传的文件和上次上传的文件是同一文件的不同分片。
云计算里,存储类型相关的术语通常为文件存储、对象存储等,一般不称作文件存储系统、对象存储系统。可以理解的是,将对象存储转换为文件存储,是指将基于对象存储系统进行管理的对象数据转换为基于文件存储系统进行管理的文件数据。下文中若未做特殊说明,对象存储等同于对象存储系统,文件存储等同于文件存储系统。
图1是本申请实施例提供的文件上传方法所适用的网络架构示意图。请参照图1,该网络架构包括S3FS服务11和S3云端12。S3FS服务11部署在用户的终端设备、网关、服务器等电子设备上。当一个S3FS服务11挂载了对象存储中的存储桶后,用户就可以像访问文件一样访问存储桶中的对象。
S3云端12是提供简易存储服务(Simple Storage Service,S3)的平台,可以部署在云端的服务器或服务器集群,以存储桶的形式管理对象数据,换言之,S3云端以对象存储的方式对数据进行存储。
用户将目标文件写入S3FS服务11本地的独立磁盘等位置。一旦目标文件落盘成功,S3FS服务11就向用户返回目标文件已上传的指示信息。然后,由S3FS服务11将目标文件分片上传至S3云端12,从而完成S3FS服务11和S3云端12同步。该种上传文件的方式为异步方式,优化了服务性能,减少了不必要的资源消耗,节约成本。同步过程中,有可能因为网络中断、S3FS服务11崩溃等问题导致同步失败,此时,若用户未更新目标文件,则网络恢复后或者S3FS服务11恢复后,S3FS服务11续传目标文件,即将上传剩余的分片上传至S3云端,S3云端合并本次上传的分片和上次上传的分片从而得到目标文件。
下面,基于图1所示实施环境,对本申请实施例提供的文件上传方法进行详细说明。示例性的,请参照图2。
图2是本申请实施例提供的文件上传方法的流程图。本实施例是从S3FS服务的角度进行说明。本实施例包括:
201、确定持久化数据库中是否存在目标文件的历史上传记录,若持久化数据库中存在历史上传记录,则执行步骤202;若持久化数据库中不存在历史上传记录,则执行步骤205。
其中,所述持久化数据库是为所述S3FS服务创建的用于保存上传记录的本地数据库,所述历史上传记录用于记录第一分片上传请求关联的参数,所述第一分片上传请求是所述S3FS服务上次向所述S3云端发送的分片上传请求。第一分片上传请求关联的参数,即历史上传记录中记录的参数包括分片大小、版本号、序列号等。其中,分片大小用于指示上次上传时每分分片的大小,版本号用于指示上传上传目标文件时,目标文件的版本号,序列号用于标识目标文件的分片结构体,属于同一个目标文件的分片结构体的序列号相同。
本申请实施例中,持久化数据库创建在本地磁盘上,可用于数据的持久化存储,是区别于内存的缓存方式,S3FS服务在启动过程中可预先从S3云端获取挂载的存储桶相关的元数据,预先完成元数据的全量同步。其中,全量同步是指S3FS服务在为用户提供服务前,先与S3云端进行元数据的同步。具体地,S3FS服务在启动过程中需进行存储桶的挂载,以实现将该存储桶内的对象数据用文件的方式提供给用户操作。一般而言,需要全量同步情形包含两种:初始挂载存量存储桶和重新部署用于同一个存储桶的S3FS服务,其中,初始挂载是指S3FS服务首次挂载存储桶;重新部署用于同一个存储桶的S3FS服务是指:先前已部署过S3FS服务,并完成了存储桶的挂载,当因设备异常等原因需要重新部署且该服务挂载的存储桶不变。换言之,在启动过程中,当S3FS服务所挂载的存储桶内有存量数据时,则需要预先从云端获取该存储桶中的全部元数据并写入持久化数据库,使得用户访问请求达到时,可直接基于持久化数据库中的元数据进行响应。
持久化数据库中除了全量同步得到的元数据外,还存储上传记录关联的参数,该些参数也可以视为元数据。下面,对这种元数据进行详细说明。
示例性的,当用户通过S3FS服务向访问文件存储系统一样访问对象存储系统时,不可避免的会新增文件、修改文件等,需要将新增文件或修改后的文件上传至S3云端。新增文件或修改后的文件即为待上传的目标文件。上传过程包括三个步骤:
步骤1、S3FS服务向S3云端发送分片上传请求;
步骤2、S3FS服务对目标文件进行切片得到多个分片,上传分片;
步骤3、若各分片均成功上传,则指示S3云端进行分片合并;若一个或多个分片未成功上传,则指示S3云端清除成功上传的分片。
持久化数据库中存储的上传记录用于记录步骤1中的分片上传请求关联的参数。例如,每次上传目标文件时,S3FS服务向S3云端发送携带分片大小、存储桶标识等的分片上传请求,S3云端向S3FS服务发送携带序列号的分片上传响应。针对该分片上传请求,S3FS服务生成上传记录并存储在持久化数据库中,上传记录用于记录分片上传请求关联的参数,比如分片大小、存储桶的标识、序列号、目标文件的标识等。其中,分片大小用于指示将目标文件分成的多个分片中各分片的大小,存储桶的标识用于确定目标文件存储在哪个桶,序列号用于标识属于同一个目标文件的分片。
本申请实施例中,上传记录包括历史上传记录、当前上传记录。一个目标文件被切片成多个分片,上次上传时,若目标文件上传过程中出现S3FS服务崩溃、S3FS服务与S3云端之间的网络中断等问题,则会发生多个分片中部分分片已成功上传至S3云端、部分分片未成功上传的现象,S3FS服务会将分片上传请求关联的参数记录在上传记录中,并将上传记录存储在本地持久化数据库中。对于本次上传而言,持久化数据库中存储的上传记录为历史上传记录。
当S3FS服务初次向S3云端上传目标文件,或者,S3FS服务重新向S3云端上传目标文件时,S3FS服务与S3云端交互,即S3FS服务向S3云端发送分片上传请求,S3云端返回上传响应,S3FS服务记录该分片上传请求关联的参数,得到当前上传记录并存储在持久化数据库中。可以理解的是,倘若初传或重传目标文件过程中出现中断,下次续传目标文件时,当前上传记录就成为历史上传记录。
每次上传目标文件时,S3FS服务基于目标文件的标识查询本地的持久化数据库,若持久化数据库中存在目标文件的历史上传记录,则表示本次上传之前,S3FS服务已经上传过目标文件,但是由于出现S3FS服务崩溃、S3FS服务与S3云端之间的网络中断等问题,导致目标文件的多个分片中部分分片已成功上传,部分分片未成功上传。这种情况下,需要确定接下来续传目标文件还是重传目标文件。
202、确定所述目标文件是否已更新,若目标文件未更新,则执行步骤203;若目标文件更新,则执行步骤204。
示例性的,S3FS服务判断目标文件是否已更新,若已更新则需要重传整个更新后的目标文件。若目标文件未更新,则仅上传部分分片,即上次未成功上传的分片。
S3FS服务可灵活采用不同方式确定目标文件是否已更新。例如,S3FS服务每次上传目标文件之前,采用预设的算法对目标文件进行运算,以得到一个校验值。本次上传之前,S3FS服务比较当前的校验值和上次的校验值,若这俩个校验值一样,则表示目标文件未更新,接下来采用续传方式上传部分分片。若这两个校验值不一样,则表示目标文件已更新,接下来采用重传方式上传整个更新后的目标文件。
再如,S3FS服务每次获取到一个目标文件后,为该目标文件设置一个版本标识(version-ID),记录在持久化数据库中,并携带在分片上传请求中发送给S3云端。若目标文件已更新,则更新持久化数据库中的版本标识。本次上传之前,S3FS服务从S3云端获取目标文件的版本标识,当该版本标识和持久化数据库中的版本标识相同时,表示目标文件未更新,接下来采用续传方式上传部分分片。若这两个版本标识不一样,则表示目标文件已更新,接下来采用重传方式上传整个更新后的目标文件。
203、续传原始的目标文件。
S3FS服务仅向S3云端上传目标文件的部分分片,部分分片是上次上传时未成功上传的分片。
204、向S3云端上传更新后的目标文件。
205、向S3云端上传原始的目标文件。
示例性的,若持久化数据库中不存在历史上传记录,则表示S3FS服务第一次向S3云端上传目标文件,不存在部分分片已上传、部分分片未上传的情况,而是所有分片都未上传。因此,需要向S3云端上传整个目标文件。
本申请实施例提供的文件上传方法,S3FS服务上传目标文件时,先确定持久化数据库中是否存在目标文件的历史上传记录,从而确定出本次上传之前是否已经上传过目标文件的部分分片。若之前已经上传过目标文件的部分分片,则继续确定目标文件是否已更新。若目标文件未更新,则续传目标文件,即仅向S3云端上传目标文件的部分分片,部分分片是上次上传时未成功上传的分片。采用该种方案,S3FS服务将待上传的目标文件临时存储在本地,通过断点续传的方式上传文件,速度快且降低资源消耗。
可选的,上述实施例中,当所述目标文件未更新时,S3FS服务续传所述目标文件时,先从历史上传记录中确定出分片大小,根据分片大小将目标文件切片以得到多个分片。之后,从多个分片中确定出未上传至S3云端的目标分片,并向S3云端上传目标分片。
示例性的,由于是续传,因此,S3FS服务复用第一分片上传请求的元数据,即历史上传记录中的分片上传请求的标识、分片大小等。因此,S3FS服务从历史上传记录中获取分片大小,根据该分片大小将目标文件切片以得到多个分片。需要说明的是,切片是指:从目标文件中依次读取预设大小的内容到内存,这些内容即为分片,从而实现对目标文件切片,并不是说将独立磁盘上的目标文件切分成多个分片并存储在独立磁盘上。
完成切片后,S3FS服务访问S3云端,获取已经上传的分片列表。S3FS服务根据该分片列表,确定出待上传的目标分片。例如,一个目标文件被分成10个分片,分片1-分片10,分片列表中包含分片1-分片5。因此,S3FS服务确定待上传的目标分片为分片6-分片10,将该些目标分片上传至S3云端。
采用该种方案,S3FS服务复用上一次分配上传请求关联的参数对目标文件进行续传,无需向S3云端发送分片上传请求,减少S3FS服务与S3云端的交互次数,提高文件上传效率。
可选的,上述实施例中,S3FS服务向S3云端上传目标分片时,先根据历史上传记录中的参数封装分片得到分片结构体。当目标分片为两个或两个以上时,采用并发方式向S3云端发送各分片结构体,从而实现断点续传。
示例性的,S3FS服务复用上次分片上传请求关联的参数,即从历史上传记录中获取序列号、存储桶的标识等元数据,根据这些元数据和分片构建出分片结构体,并采用并发方式发送给S3云端。其中,序列号用于标记属于同一个目标文件的分片,若几个分片结构体携带同一个序列号,则S3云端认为这几个分片结构体是同一个目标文件不同的分片的分片结构体。
采用该种方案,S3FS服务采用并发方式向S3云端发送分片结构体,速度快。
S3FS服务向S3云端发送各分片的分片结构体。对于每个分片而言,若S3云端成功接收到分片结构体,则向S3FS服务返回成功上传的指示信息。若S3云端未成功接收一个分片结构体,则S3云端向S3FS服务返回接收失败的指示信息。另外,若S3FS服务和S3云端之间的网络中断,S3FS服务超过预设时长未收到指示信息,则S3FS服务认为S3云端未成功接收。
若一个分片的分片结构体未成功上传至S3云端,则S3FS服务重新向S3云端上传该分片结构体。以下为清楚起见,将需要重新上传的分片结构体对应的分片称之为重传分片。当重传分片重传预设次数后,依旧未成功上传时,S3FS服务向S3云端发送中断请求,以指示S3云端执行垃圾回收。同时,S3FS服务删除本地持久化数据库中的历史上传记录,并在本地日志中记录该目标文件未成功上传。
S3云端接收到中断请求后,确定出目标文件的多个目标分片中,存在未成功上传的目标分片,因此,S3云端删除已成功上传的目标分片的分片结构体。
这样一来,S3FS服务通过读取本地日志确定出目标文件未成功上传,下次向S3云端上传目标文件时,将整个目标文件重新上传。
采用该种方案,当分片结构体上传预设次数后依旧未成功上传时,S3FS服务中断目标文件的上传,避免S3FS服务的资源长期被占用,影响其他业务。
可选的,上述实施例中,当所述目标文件的各分片均上传至所述S3云端后,S3FS服务向所述S3云端发送完成请求,以使得所述S3云端合并各分片得到所述目标文件。同时,S3FS服务从所述持久化数据库中删除所述历史上传记录。
示例性的,每个分片的分片结构体成功上传至S3云端后,S3云端向S3FS服务返回成功上传的指示信息。S3FS服务接收到各目标分片对应的成功上传的指示信息后,向S3云端发送完成请求。例如,一个目标文件分切分成10个分片,分片1-分片5在上次上传过程中成功上传。本次上传时,S3FS服务仅上传分片6-分片10。当S3云端向S3FS服务返回分片6-分片10中各个分片成功上传的指示信息后,S3FS服务向S3云端发送完成(complete)请求。S3云端接收到完成请求后,合并分片1-分片10得到目标文件。可以理解的是,S3云端接收到的是各个分片的分片结构体,因此,合并过程中,S3云端通过元数据记录,将所有的从分片串联起来从而得到目标文件。
采用该种方案,通过向S3云端指示各分片已成功上传,使得S3云端及时合并分片得到目标文件,提供文件上传效率。
以上是目标文件未更新时,S3FS服务如何续传目标文件。下面,对目标文件更新后,S3FS服务如何重传目标文件进行详细说明。
S3FS服务确定出目标文件已更新后,S3FS服务向S3云端发送中断请求,以指示所述S3云端删除所述目标文件的多个目标分片中已成功上传的目标分片的分片结构体。同时,S3FS服务删除历史上传记录。
示例性的,若目标文件更新,由于上次成功上传至S3云端的分片是更新之前的目标文件的分片,因此,S3云端需要将这些已成功上传的分片删除,确保本次成功上传更新后的目标文件后,S3云端保存最新版本的目标文件。
同时,S3FS服务从本地持久化数据库中删除历史上传记录,避免S3FS服务上传更新后的目标文件时,不会复用上次上传旧版本的目标文件时的分片上传请求的参数,确保新版本的目标文件正确上传。
之后,S3FS云端上传更新后的目标文件。图3是本申请实施例提供的文件上传方法的另一个流程图。本实施例包括:
301、S3FS服务向S3云端发送第二分片上传请求。
相应的,S3云端接收该第二分片上传请求。上述的第一分片上传请求是上次上传目标文件时S3FS服务发送给S3云端的分片上传请求;第二分片上传请求是本次上传目标文件时S3FS服务发送给S3云端的分片上传请求。
其中,所述第二分片上传请求携带分片大小、用于存储所述目标文件的存储桶的桶标识。
示例性的,S3FS服务根据用户下发的配置等确定分片大小、用于存储目标文件的存储桶的标识等。第二分片上传请求携带的分片大小和第一分片上传请求携带的分片大小可以相同,也可以不同。另外,第二分片上传请求还携带目标文件的身份标识等,身份标识可以是目标文件的文件名等。
302、S3云端向S3FS服务发送分片上传响应。
相应的,S3FS服务接收来自S3云端的分片上传响应。
所述分片上传响应携带序列号,所述序列号用于标识属于同一个目标文件的分片结构体。
示例性的,S3云端接收到第二分片上传请求后,存储分片大小、存储桶标识等,并为目标文件分配一个唯一的序列号。后续S3FS服务上传分片时,同一个目标文件的各分片携带相同的序列号,S3云端将携带同一个序列号的分片合并。
303、S3FS服务记录所述第二分片上传请求关联的参数以得到当前上传记录并存储。
重传前,S3FS服务删除本地持久化数据库中的历史上传记录。本次重传时,S3FS服务根据第二分片上传请求关联的参数生成当前上传记录,并将当前上传记录存储在本地持久化数据库中。
示例性的,S3FS服务接收到S3云端的分片上传响应后,生成当前上传记录并将当前上传记录写入持久化数据库。
304、S3FS服务根据分片大小对目标文件切片,以得到多个分片。
305、S3FS服务对所述多个分片中的每个分片封装所述桶标识以及所述序列号,以得到多个分片结构体。
306、S3FS服务向所述S3云端发送各所述分片结构体。
相应的,S3云端接收各分片结构体。
采用该种方案,若用户更新了目标文件,则S3FS服务指示S3云端删除旧版本的目标文件的分片,并将整个更新后的目标文件重新上传,确保上传至S3云端的文件正确。
图4是本申请实施例提供的文件上传方法的流程图。本实施例包括:
401、S3FS服务确定是否从S3云端获取目标文件的元数据和目标文件的版本号,若获取到元数据和版本号,则执行步骤402;若没有获取到元数据和版本号,则执行步骤409。
示例性的,S3FS服务向S3云端发送查询请求,该查询请求携带目标文件的身份标识。S3云端接收到查询请求后,根据身份标识查S3云端是否存储了目标文件的元数据、版本号等。通常来说,若S3FS服务执行步骤401之前,S3FS服务曾经向S3云端针对目标文件发送过分片上传请求,即上述的第一分片上传请求,那么,S3云端就会有目标文件的元数据和版本号等,此时,S3FS服务执行步骤402。若S3FS服务执行步骤401之前,从未针对目标文件发送给分片上传请求,则表示目标文件时一个初次采用分片上传的文件,S3FS服务执行步骤409。
402、S3FS服务确定持久化数据库中是否存在目标文件的历史上传记录,若持久化数据库中存在目标文件的历史上传记录,则执行步骤403;若持久化数据库中不存在目标文件的历史上传记录,则执行步骤409。
示例性的,S3FS服务根据步骤401获取到的元数据查询本地的持久化数据库。若持久化数据库中存在目标文件的历史上传记录,则说明S3FS服务执行步骤401之前,曾经向S3云端发送过第一分片上传请求,接收到第一分片上传请求对应的分片上传响应后,生成上传记录并成功将写入持久化数据,S3FS服务可能已经上传过分片,这时候,S3FS服务执行步骤403继续确定接下来是重传还是续传;若持久化数据库中不存在历史记录,则说明S3FS服务成功发送第一分片上传请求之后,因为各种原因未成功将上传记录写入持久化数据流。原因包括但不限于下述各种原因:S3云端接收到第一分片上传请求后,S3云端和S3FS服务之间的网络中断;S3FS服务接收到第一分片上传请求对应的分片上传响应之后宕机,导致S3FS服务没有生成上传记录;S3FS服务生成第一分片上传请求对应的上传记录之后宕机,导致S3FS服务未能将上传记录写入持久化数据库。
403、S3FS服务确定所述目标文件是否已更新,若目标文件未更新,则执行步骤404;若目标文件已更新,则执行步骤406。
示例性的,S3FS服务对比步骤401中获取到的版本号,和本地持久化数据库中的版本号,若两者一致,则表示用户未更新过目标文件;若两者不一致,则表示用户更新过目标文件,步骤401之前上传的分片是旧版本的目标文件的分片,需要将旧版本的分片删除,重传目标文件。
404、确定采用续传方式上传目标文件。
405、S3FS服务从S3云端获取分片列表,之后,执行步骤410。
其中,分片列表中的分片为上次成功上传至S3云端的分片。
406、S3FS服务确定重传目标文件。
407、S3FS服务向S3云端发送中断请求,以使得S3云端删除多个目标分片中已成功上传的目标分片的分片结构体。
示例性的,S3FS服务根据持久化数据库中的历史上传记录,对上一次未完成的分片上传请求,即第一分片上传请求执行中止(abort),实际实现时,S3FS服务向S3云端发送中断请求。S3云端接收到中断请求后,删除已成功上传的目标分片的分片结构体,同时,删除目标文件的元数据,比如分片、序列号等。
408、S3FS服务初始化新的分片上传请求,生成当前上传记录并存储在持久化数据库中。之后,执行步骤410。
新的分片上传请求即第二分片上传请求。S3FS服务向S3云端发送携带分片大小、存储桶的标识等的第二分片上传请求,S3云端返回分片上传响应,该分片上传响应携带序列号等。
S3FS服务根据第二分片上传请求关联的分片大小、序列号、存储桶标识等生成当前上传记录,并将当前上传记录存储在持久化数据库中。
409、S3FS服务确定目标文件为初传的目标文件,之后,执行步骤408。
410、S3FS服务根据分片大小对目标文件切片得到多个分片,并构建分片结构体。
对于步骤405而言,由于是续传,因此步骤410中,S3FS服务复用第一分片请求关联的参数,即S3FS服务根据历史上传记录中的参数对目标文件切片。
对于步骤408而言,由于是初传或重传,因此步骤410中,S3FS服务根据第二分片请求关联的参数,即当前上传记录中的参数对目标文件切片。
411、S3FS服务确定出未上传的分片。
示例性的,对于初传或重传,目标文件的所有分片都是未上传的分片;对于续传,S3FS服务根据步骤405中的分片列表,从多个分片中确定出未上传的分片。确定出未上传的分片后,S3FS服务为分片封装序列号、存储桶标识等,从而构建出分片结构体。
412、S3FS服务并发上传各分片结构体。
采用该种方案,实现分片初传或重传目标文件的目的。
413、S3FS服务确定各分片结构体是否上传成功,若每个分片结构体均上传成功,则执行步骤414;若存在至少一个未成功上传的分片结构体,则执行步骤415。
示例性的,一个分片结构体上传成功后,S3云端向S3FS服务发送成功上传的指示信息,若上传失败,则向S3FS服务发送上传失败的指示信息,或者,S3FS服务超过预设时长未接收到任何指示信息,则默认上传失败。
414、S3FS服务向S3云端发送完成请求,以使得S3云端合并各分片得到目标文件;同时,S3FS服务清除上传记录。
其中,上传记录可以是历史上传记录,也可以是当前上传记录。例如,当S3FS服务初传或重传目标文件时,上传记录为当前上传记录;当S3FS服务续传目标文件时,上传记录为历史上传记录。
S3云端合并分片得到目标文件后,向S3FS服务返回目标文件成功上传的指示信息。
415、S3FS服务重传分片结构体。
示例性的,若一个分片的分片结构体未成功上传,则S3FS服务重传分片结构体。该分片称之为重传分片。若重传分片重传预设次数后依旧未成功上传,S3FS服务向S3云端发送中断请求,以使得S3云端删除多个目标分片中已成功上传的目标分片的分片结构体。同时,S3FS服务从持久化数据库中删除历史上传记录,并在本地日志中记录目标文件未成功上传。
这样一来,S3FS服务及时释放用于上传目标文件的资源,避免影响S3FS服务的其他业务。将未上传的目标文件记录到本地,便于S3FS服务后续重新尝试对目标文件进行分片上传。
步骤415中,若重传分片最终成功上传,则S3云端合并分片得到目标文件,并给S3FS服务返回目标文件成功上传的指示信息。若重传分片最终未成功上传,则S3云端返回目标文件上传失败的指示信息。
图5为本申请实施例提供的一种电子设备的结构示意图。如图5所示,该电子设备500例如为部署了S3FS服务的设备,该电子设备500包括:
处理器51和存储器52;
所述存储器52存储计算机指令;
所述处理器51执行所述存储器52存储的计算机指令,使得所述处理器51执行如上S3FS服务实施的文件上传方法。
处理器51的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
可选地,该电子设备500还包括通信部件53。其中,处理器51、存储器52以及通信部件53可以通过总线54连接。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上S3FS服务实施的文件上传方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上S3FS服务实施的文件上传方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种文件上传方法,其特征在于,应用于S3FS服务,所述方法包括:
确定持久化数据库中是否存在目标文件的历史上传记录,所述持久化数据库是为所述S3FS服务创建的用于保存上传记录的本地数据库,所述历史上传记录用于记录第一分片上传请求关联的参数,所述第一分片上传请求是所述S3FS服务上次向所述S3云端发送的分片上传请求;
当所述持久化数据库中存在所述历史上传记录时,确定所述目标文件是否已更新;
当所述目标文件未更新时,续传所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述当所述目标文件未更新时,续传所述目标文件,包括:
从所述历史上传记录中确定出分片大小;
根据所述分片大小将所述目标文件切片以得到多个分片;
从所述多个分片中确定出未上传至所述S3云端的目标分片;
向所述S3云端上传所述目标分片。
3.根据权利要求2所述的方法,其特征在于,所述向所述S3云端上传所述目标分片,包括:
当所述目标分片为多个时,根据记录在所述历史上传记录中的、所述第一分片上传请求关联的参数封装各目标分片,以得到多个分片结构体;
采用并发方式向所述S3云端发送各所述分片结构体。
4.根据权利要求2所述的方法,其特征在于,还包括:
若多个目标分片中存在未成功上传的重传分片时,则重新上传所述重传分片;
当所述重传分片重传预设次数后未成功上传时,向所述S3云端发送中断请求,以使得所述S3云端删除多个目标分片中已成功上传的目标分片的分片结构体;
从所述持久化数据库中删除所述历史上传记录,并在本地日志中记录所述目标文件未成功上传。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述当所述目标文件未更新时,续传所述目标文件之后,还包括:
当所述目标文件的各分片均上传至所述S3云端后,向所述S3云端发送完成请求,以使得所述S3云端合并各分片得到所述目标文件;
从所述持久化数据库中删除所述历史上传记录。
6.根据权利要求1-4任一项所述的方法,其特征在于,还包括:
当所述目标文件已更新时,向所述S3云端发送中断请求,以指示所述S3云端删除所述目标文件的多个目标分片中已成功上传的目标分片的分片结构体;
删除所述历史上传记录。
7.根据权利要求6所述的方法,其特征在于,所述删除所述历史记录之后,还包括:
向S3云端发送第二分片上传请求,所述第二分片上传请求携带分片大小、用于存储所述目标文件的存储桶的桶标识;
接收来自所述S3云端的分片上传响应,所述分片上传响应携带序列号,所述序列号用于标识属于同一个目标文件的分片结构体;
根据所述分片大小对所述目标文件切片,以得到多个分片;
记录所述第二分片上传请求关联的参数以得到当前上传记录;
对所述多个分片中的每个分片封装所述桶标识以及所述序列号,以得到多个分片结构体;
向所述S3云端发送各所述分片结构体。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述确定持久化数据库中是否存在目标文件的历史上传记录,包括:
向所述S3云端发送携带所述目标文件的身份标识的查询请求;
接收所述S3云端发送的查询响应;
当所述查询响应指示所述S3云端存在所述目标文件的元数据和版本号时,确定所述持久化数据库中是否存在所述目标文件的历史上传记录。
9.根据权利要求1-4任一项所述的方法,其特征在于,还包括:
所述目标文件存储在部署了所述S3FS服务的电子设备的独立磁盘上或文件系统目录下。
10.根据权利要求1-4任一项所述的方法,其特征在于,所述确定所述目标文件是否已更新,包括:
从所述S3云端获取所述目标文件的版本号和序列号;
当所述历史上传记录中的版本号和从所述S3云端获取到的版本号不同时,确定所述目标文件已更新,所述历史上传记录中记录的参数至少包括所述目标文件的版本号、和序列号,所述序列号用于标识属于所述目标文件的分片结构体。
11.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至10任一所述的方法。
12.一种计算机程序产品,其包含计算程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210100289.9A CN114584551A (zh) | 2022-01-27 | 2022-01-27 | 文件上传方法、电子设备及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210100289.9A CN114584551A (zh) | 2022-01-27 | 2022-01-27 | 文件上传方法、电子设备及计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114584551A true CN114584551A (zh) | 2022-06-03 |
Family
ID=81769264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210100289.9A Pending CN114584551A (zh) | 2022-01-27 | 2022-01-27 | 文件上传方法、电子设备及计算机程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114584551A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114942912A (zh) * | 2022-07-25 | 2022-08-26 | 天津联想协同科技有限公司 | 网盘文件收集方法、装置、网盘及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684712A (zh) * | 2012-09-14 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 文件快速恢复重传的方法、装置及网盘 |
CN108401012A (zh) * | 2018-01-31 | 2018-08-14 | 山东汇贸电子口岸有限公司 | 一种文件断点续传方法 |
CN110809039A (zh) * | 2019-10-30 | 2020-02-18 | 华工正源智能终端(孝感)有限公司 | 文件上传方法及装置 |
CN111008185A (zh) * | 2019-10-29 | 2020-04-14 | 厦门网宿有限公司 | 一种数据共享方法、系统及设备 |
CN113101643A (zh) * | 2021-04-16 | 2021-07-13 | 上海米哈游璃月科技有限公司 | 一种资源文件管理方法、装置、设备及存储介质 |
WO2021190313A1 (zh) * | 2020-03-25 | 2021-09-30 | 华为技术有限公司 | Db文件的备份方法、装置和电子设备 |
CN113568884A (zh) * | 2021-09-26 | 2021-10-29 | 武汉四通信息服务有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
-
2022
- 2022-01-27 CN CN202210100289.9A patent/CN114584551A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684712A (zh) * | 2012-09-14 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 文件快速恢复重传的方法、装置及网盘 |
CN108401012A (zh) * | 2018-01-31 | 2018-08-14 | 山东汇贸电子口岸有限公司 | 一种文件断点续传方法 |
CN111008185A (zh) * | 2019-10-29 | 2020-04-14 | 厦门网宿有限公司 | 一种数据共享方法、系统及设备 |
CN110809039A (zh) * | 2019-10-30 | 2020-02-18 | 华工正源智能终端(孝感)有限公司 | 文件上传方法及装置 |
WO2021190313A1 (zh) * | 2020-03-25 | 2021-09-30 | 华为技术有限公司 | Db文件的备份方法、装置和电子设备 |
CN113101643A (zh) * | 2021-04-16 | 2021-07-13 | 上海米哈游璃月科技有限公司 | 一种资源文件管理方法、装置、设备及存储介质 |
CN113568884A (zh) * | 2021-09-26 | 2021-10-29 | 武汉四通信息服务有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114942912A (zh) * | 2022-07-25 | 2022-08-26 | 天津联想协同科技有限公司 | 网盘文件收集方法、装置、网盘及存储介质 |
CN114942912B (zh) * | 2022-07-25 | 2022-12-23 | 天津联想协同科技有限公司 | 网盘文件收集方法、装置、网盘及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010240B2 (en) | Tracking status and restarting distributed replication | |
US20200348852A1 (en) | Distributed object replication architecture | |
US11327799B2 (en) | Dynamic allocation of worker nodes for distributed replication | |
US11349915B2 (en) | Distributed replication and deduplication of an object from a source site to a destination site | |
US9170892B2 (en) | Server failure recovery | |
US20200401557A1 (en) | Metadata compaction in a distributed storage system | |
US11397538B2 (en) | Data migration method and apparatus | |
CN107786638B (zh) | 一种数据处理方法、装置及系统 | |
WO2019184012A1 (zh) | 数据写入方法、客户端服务器和系统 | |
CN108415986B (zh) | 一种数据处理方法、装置、系统、介质和计算设备 | |
CN110597452A (zh) | 存储系统的数据处理方法及装置、存储服务器及存储介质 | |
CN113032335A (zh) | 文件访问方法、装置、设备及存储介质 | |
CN108810055B (zh) | 一种大文件传输方法及装置 | |
CN111444157A (zh) | 分布式文件系统及数据访问方法 | |
CN114528255A (zh) | 元数据管理方法、电子设备及计算机程序产品 | |
CN114584551A (zh) | 文件上传方法、电子设备及计算机程序产品 | |
CN111435286B (zh) | 一种数据存储方法、装置和系统 | |
US10067843B1 (en) | Synchronizing control nodes and a recovery from a failure of a primary control node of a storage system | |
CN113544635A (zh) | 存储系统中数据处理方法、装置以及存储系统 | |
CN114528260A (zh) | 文件访问请求的处理方法、电子设备及计算机程序产品 | |
CN115390754A (zh) | 一种硬盘管理方法及装置 | |
CN115065694A (zh) | 一种云存储数据中转上传系统、方法、设备及介质 | |
CN1741016A (zh) | 智能卡数据与存储在外部服务器中的数据的有效同步 | |
CN110737635A (zh) | 一种数据分块方法 | |
CN115309336A (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 |