CN110597764B - 一种文件下载、版本管理方法及装置 - Google Patents
一种文件下载、版本管理方法及装置 Download PDFInfo
- Publication number
- CN110597764B CN110597764B CN201910957957.8A CN201910957957A CN110597764B CN 110597764 B CN110597764 B CN 110597764B CN 201910957957 A CN201910957957 A CN 201910957957A CN 110597764 B CN110597764 B CN 110597764B
- Authority
- CN
- China
- Prior art keywords
- file
- version
- identifier
- hdfs
- downloading
- 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
- 238000007726 management method Methods 0.000 title abstract description 32
- 238000003860 storage Methods 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000013523 data management Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文件下载、版本管理方法及装置,涉及金融科技(Fi ntech)的数据管理领域,其中方法为:获取第一用户下载第一文件的第一请求;根据所述第一请求获取所述第一用户请求下载的第一文件标识和第一文件版本;确定所述第一文件在分布式文件***HDFS的第一存储位置,以及确定所述第一文件版本对应的所述第一文件的第一开始字节和第一结束字节;根据所述第一存储位置、所述第一开始字节以及所述第一结束字节,确定所述第一文件在所述HDFS中的下载开始位置和下载结束位置;当下载所述第一文件成功时,将第一记录存储至第三资源表,该方法可应用于金融科技(Fintech)。
Description
技术领域
本发明涉及金融科技(Fintech)的大数据领域,尤其涉及一种文件下载、版本管理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。目前,金融科技领域中,越来越多的数据被产生,也被越来越多的用于各种信息处理中,由此也对应产生各种文件,对这些文件的管理就显得愈发重要,现有技术中一般采用分布式文件***(Hadoop Distribution File System,HDFS)对文件进行存储管理,再结合文件版本控制***一并管理各种版本文件的查询、更新等操作。其中,HDFS是基于流数据模式访问和处理超大文件的需求开发的***,可以运行在廉价的商用服务器上,它具备高容错、高可靠性、高扩展性以及高获得性等特征;文件版本控制***是用于控制各种文件的一个或若干版本的不同修订内容的***,两种***结合使用可以方便的查阅、更新任一指定版本文件的详细内容。
现有技术的这种处理方式中,文件版本控制***一般采用开源的方式与HDFS***连接以调用各种文件数据,因此在方便用户查询、更新等操作时,对用户下载的相关操作并没有太多关心,比如下载的时间、下载的文件版本、下载的结果是成功还是失败等没有记录,这种方式对于将操作数据的记录划为重要网络安全管理范畴的金融公司来说,若需要追溯某一文件下载时的相关信息并不容易。
因此,现有技术的处理方式在如何追溯各种版本文件的下载历史方面是一个亟待解决的问题。
发明内容
本申请实施例提供一种文件下载、版本管理方法及装置,解决了现有技术中如何追溯各种版本文件的下载历史问题。
本申请实施例提供一种文件下载管理方法,具体包括:
获取第一用户下载第一文件的第一请求;根据所述第一请求获取所述第一用户请求下载的第一文件标识和第一文件版本;
根据所述第一文件标识查询第一资源表,确定所述第一文件在分布式文件***HDFS的第一存储位置,所述第一资源表用于记录所述HDFS中文件的基本信息,所述基本信息包括文件标识、文件的存储位置;根据所述第一文件版本查询第二资源表,确定所述第一文件版本对应的所述第一文件的第一开始字节和第一结束字节;所述第二资源表用于记录所述HDFS中文件的版本信息,所述版本信息包括文件标识、文件版本、文件开始字节、文件结束字节;
根据所述第一存储位置、所述第一开始字节以及所述第一结束字节,确定所述第一文件在所述HDFS中的下载开始位置和下载结束位置;
根据所述下载开始位置和所述下载结束位置下载所述第一文件;
当下载所述第一文件成功时,将第一记录存储至第三资源表,所述第三资源表用于记录对所述HDFS中文件的下载历史信息,所述下载历史信息包括文件标识、文件版本、文件下载时间、文件下载是否成功;所述第一记录用于标记下载所述第一文件成功。
一种可能的实现方式,根据所述第一文件版本查询第二资源表之前,还包括:
根据所述第一文件标识查询所述第一资源表中所述第一用户对所述第一文件的第一操作权限;
当所述第一操作权限记录所述第一用户对所述第一文件有下载权限时,根据所述第一文件版本查询所述第二资源表。
一种可能的实现方式,获取第一用户下载第一文件的第一请求之后,还包括:
按照负载均衡算法从至少一个实例中选取负载轻的第一实例;通过第一实例对所述第一请求处理,所述第一实例用于处理所述第一用户首次上传、更新以及下载文件的请求。
本申请实施例提供一种文件版本管理方法,具体包括:
获取第一用户上传第二文件的第二请求;根据所述第二请求获取所述第一用户请求上传的所述第二文件和第二文件标识;
当所述第二文件标识的内容为空时,配置所述第二文件标识以及所述第二文件的第二存储位置;存储所述第二文件标识和所述第二存储位置至所述第一资源表;
根据所述第二存储位置,将所述第二文件的文件流写入所述HDFS;
获取所述HDFS返回的第一标识,所述第一标识用于标记所述第二文件的文件流的写入状态,包括成功、失败以及未写完;
当所述第一标识标记所述写入状态为所述成功时,配置所述第二文件的第一版本;存储所述第二文件标识和所述第一版本至所述第二资源表。
一种可能的实现方式,还包括:
当所述第一标识标记所述写入状态为所述失败时,获取所述第二文件的文件流写入失败的第一原因;删除所述第一资源表中所述第二文件的基本信息以及所述HDFS中的所述第二文件的文件流;
存储所述第二文件标识和所述第一原因至第一管理表,所述第一管理表用于记录对HDFS中文件的首次上传以及更新的失败操作。
一种可能的实现方式,还包括:
当所述第二文件标识的内容为非空时,根据所述第二文件标识查询所述第一资源表,确定所述第二存储位置;且根据所述第二文件标识查询所述第二资源表,确定所述第二文件的第二版本、所述第二版本对应的所述第二文件的第二开始字节以及所述第二版本对应的所述第二文件的第二结束字节;
根据所述第二存储位置以及所述第二结束字节,确定所述第二结束字节加M的位置为所述第二文件的文件流写入所述HDFS的写入开始位置,M为大于0的整数;
当所述第二结束字节加M大于或等于第一阈值时,新增所述第二文件的第三存储位置,所述第三存储位置为所述写入开始位置;
根据所述写入开始位置写入所述第二文件;
获取所述第一标识;当所述第一标识标记所述写入状态为所述成功时,配置所述第二文件的第三版本,所述第三版本的取值为所述第二版本的取值加N,N为大于0的整数;存储所述第二文件标识和所述第三版本至所述第二资源表。
一种可能的实现方式,获取所述第一标识之后,还包括:
当所述第一标识标记所述写入状态为所述未写完,且未获取到***异常消息时,新增所述第四存储位置,所述第四存储位置为继续写入所述第二文件的文件流的位置。
本申请实施例提供一种文件下载管理装置,具体包括:
获取单元,用于获取第一用户下载第一文件的第一请求;
处理单元,用于根据所述第一请求获取所述第一用户请求下载的第一文件标识和第一文件版本;根据所述第一文件标识查询第一资源表,确定所述第一文件在分布式文件***HDFS的第一存储位置,所述第一资源表用于记录所述HDFS中文件的基本信息,所述基本信息包括文件标识、文件的存储位置;根据所述第一文件版本查询第二资源表,确定所述第一文件版本对应的所述第一文件的第一开始字节和第一结束字节;所述第二资源表用于记录所述HDFS中文件的版本信息,所述版本信息包括文件标识、文件版本、文件开始字节、文件结束字节;
所述处理单元,用于根据所述第一存储位置、所述第一开始字节以及所述第一结束字节,确定所述第一文件在所述HDFS中的下载开始位置和下载结束位置;
所述处理单元,还用于根据所述下载开始位置和所述下载结束位置下载所述第一文件;当下载所述第一文件成功时,将第一记录存储至第三资源表,所述第三资源表用于记录对所述HDFS中文件的下载历史信息,所述下载历史信息包括文件标识、文件版本、文件下载时间、文件下载是否成功;所述第一记录用于标记下载所述第一文件成功。
一种可能的实现方式,所述处理单元具体用于:
根据所述第一文件标识查询所述第一资源表中所述第一用户对所述第一文件的第一操作权限;
当所述第一操作权限记录所述第一用户对所述第一文件有下载权限时,根据所述第一文件版本查询所述第二资源表。
一种可能的实现方式,所述处理单元具体用于:
按照负载均衡算法从至少一个实例中选取负载轻的第一实例;通过第一实例对所述第一请求处理,所述第一实例用于处理所述第一用户首次上传、更新以及下载文件的请求。
利用本发明提供的一种文件管理方法及装置,具有以下有益效果:通过对文件版本控制***调用的数据库进行设计,在其中增加记录文件下载历史的数据表以便于追溯各种版本文件的下载历史。
附图说明
图1为本申请实施例中一种文件管理方法流程图;
图2为本申请实施例中一种文件管理方法的首次上传流程图;
图3为本申请实施例中一种文件管理方法的更新版本流程图;
图4为本申请实施例中一种文件管理的实例结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。图1为本申请实施例中一种文件下载管理方法流程图,如图所示,具体步骤描述如下。
步骤101:获取第一用户下载第一文件的第一请求;根据所述第一请求获取所述第一用户请求下载的第一文件标识和第一文件版本;
具体的,当第一用户有下载第一文件的需求时,将下载第一文件的第一请求发送给文件版本控制***,文件版本控制***获取到第一请求,其中,第一文件是指支持各种类型的文件,可以支持的文件类型有文本形式、二进制形式等,尤其在涉及大数据领域时,脚本文件、物料压缩包等文件类型也都适用本申请中的文件管理方法。
进一步具体的,文件版本控制***中部署有多个实例,每个实例都是一个小型的文件版本控制***,当文件版本控制***获取到第一请求时,按照负载均衡算法从至少一个实例中选取负载轻的第一实例;通过第一实例对第一请求进行处理,第一实例可以处理第一用户首次上传、更新以及下载文件的请求。
举例来说,文件版本控制***中部署有3个实例,3个实例的状态分别是:第一实例的中央处理器(Central Processing Unit,CPU)占用率为40%、第二实例的CPU占用率为50%、第三实例的CPU占用率为75%,按照负载均衡算法,选取负载轻的第一实例接受第一用户的第一请求并进行处理;若其中有2个实例负载相同时可随机选取其中1个实例,其它情况不再赘述。根据第一请求获取其中携带的第一文件标识和第一文件版本。
步骤102:根据所述第一文件标识查询第一资源表,确定所述第一文件在HDFS的第一存储位置,所述第一资源表用于记录所述HDFS中文件的基本信息;根据所述第一文件版本查询第二资源表,确定所述第一文件版本对应的所述第一文件的第一开始字节和第一结束字节;
具体的,预先对文件版本控制***调用的数据库进行设计时,设计有4张数据表,包括:第一资源表、第二资源表、第三资源表以及第一管理表。
其中,第一资源表用于记录HDFS中文件的基本信息,基本信息包括文件标识、文件的存储位置、文件的所属者、文件的权限等,文件标识和文件的存储位置是第一资源表中最重要的两个字段,具体如表一所示。
表一
第二资源表用于记录HDFS中文件的版本信息,版本信息包括文件标识、文件版本、文件开始字节、文件结束字节等,具体如表二所示。
表二
第三资源表用于记录HDFS中文件的下载历史信息,下载历史信息包括文件标识、文件版本、文件下载时间、文件下载是否成功等,具体如表三所示。
表三
字段 | 作用 | 备注 |
resource_id | 记录下载资源的resource_id | |
version | 记录下载资源的version | |
downloader | 记录下载的用户 | |
start_time | 记录下载时间 | |
end_time | 记录结束时间 | |
status | 记录是否成功 | 0表示成功,1表示失败 |
err_msg | 记录失败原因 | null表示成功,否则记录失败原因 |
第一管理表用于记录对HDFS中文件的首次上传以及更新的失败操作信息,包括文件标识、文件版本、更新的时间、更新失败的原因等,具体如表四所示。
表四
上述4张存储在数据库中的数据表用于文件版本控制***在收到用户提出的对文件的各种请求时,调用数据表中的内容进行查询、更新以及记录的相关操作,文件的具体内容则存储在HDFS中。
因此,本步骤中根据第一文件标识查询第一资源表,确定第一文件在HDFS中的第一存储位置。
进一步具体的,根据所述第一文件标识查询第一资源表中第一用户对第一文件的第一操作权限;
当第一操作权限记录第一用户对第一文件有下载权限时,再根据第一文件版本查询第二资源表,否则第一用户没有权限对第一文件进行下载。
步骤103:根据所述第一存储位置、所述第一开始字节以及所述第一结束字节,确定所述第一文件在所述HDFS中的下载开始位置和下载结束位置;
具体的,第一存储位置标记的是文件在HDFS中的位置,根据这一位置得到待下载的第一文件在HDFS中对应的存储位置,再根据第一文件版本确定出的第一开始字节以及第一结束字节得到待下载的第一文件的准确的下载开始位置和下载结束位置。
举例来说,第一用户请求下载的是第一文件的第二版本文件内容,本申请中文件各版本的内容在HDFS中的存储方式为第二版本的文件内容和第一版本的文件内容都存储在第一存储位置,进一步具体的,第二版本文件内容是紧接在第一版本文件内容之后存储的,因此根据第二版本确定出的第二版本对应的第一开始字节和第一结束字节保证了所需下载的这一版本的第一文件内容的准确性。
步骤104:根据所述下载开始位置和所述下载结束位置下载所述第一文件;
步骤105:当下载所述第一文件成功时,将第一记录存储至第三资源表,所述第三资源表用于记录对所述HDFS中文件的下载操作,所述第一记录用于标记下载所述第一文件成功。
具体的,当下载第一文件成功时,将第一记录存储至第三资源表中,通过这种方式记录每次对文件的下载操作的相关信息,以便于追溯各种版本文件的下载历史。
进一步具体的,当下载第一文件失败时,将第二记录存储至第三资源表,第二记录用于标记下载第一文件失败。将失败的操作信息也记录在第三资源表中,从而确保在追溯各种版本文件的下载历史时能更加客观、全面地了解到不同时间、不同用户下载时的不同情况,也便于在排查失败原因时有更多详细的参考线索。
上述步骤内容描述的是多版本文件下载时处理方法,在下载文件之前,用户对文件会有首次上传的需求,以及已经存储在HDFS中的文件进行版本更新的需求,下面进一步展开在处理文件首次上传和版本更新时的具体步骤情况。
图2为本申请实施例中一种文件管理方法的首次上传流程图也即文件版本管理方法的流程图,如图所示,具体步骤描述如下。
步骤201:获取第一用户上传第二文件的第二请求;根据所述第二请求获取所述第一用户请求上传的所述第二文件和第二文件标识;
步骤202:当所述第二文件标识的内容为空时,配置所述第二文件标识以及所述第二文件的第二存储位置;存储所述第二文件标识和所述第二存储位置至所述第一资源表;
具体的,当用户上传的第二文件为用户首次上传的文件时,第二请求中携带的第二文件标识内容是为空的,文件版本控制***在接收到第二请求,识别出第二文件标识内容为空时,为第二文件配置第二文件标识和第二文件的第二存储位置;在数据库的第一资源表中新增第二文件的基本信息,第二文件标识和第二文件的第二存储位置作为重要字段存储在第一资源表中。
步骤203:根据所述第二存储位置,将所述第二文件的文件流写入所述HDFS;
步骤204:获取所述HDFS返回的第一标识,所述第一标识用于标记所述第二文件的文件流的写入状态,包括成功、失败以及未写完;
具体的,预先有设定HDFS不同的返回值对应的不同的写入状态以及原因,比如,返回值等于0表示写入状态为成功;返回值小于0表示写入状态为失败;返回值大于0表示写入状态未写完;其中,返回值小于0又分多种不同值对应失败时的不同原因,比如返回值为-1表示因网络中断影响HDFS的存储功能、返回值为-2表示未写完,已到存储位置的容量上限等。
步骤205:当所述第一标识标记所述写入状态为所述成功时,配置所述第二文件的第一版本;存储所述第二文件标识和所述第一版本至所述第二资源表。
具体的,在上传第二文件至HDFS中时,第二文件的文件流写入状态会有不同的情况,分别是:成功、失败以及未写完,其中,成功状态表示第二文件全部上传至HDFS中;失败状态表示第二文件因一些原因没有全部成功上传至HDFS中,比如,原因有网络中断影响HDFS的存储功能等;未写完状态分有两种,一种是因一些原因没有全部成功上传至HDFS中,这种情况等同于失败状态,另一种是在下文将展开的版本更新时,最新版本上传追加至前一版本的文件内容之后时,所在存储位置的容量有上限,设定上限为第一阈值,比如1G的容量,当超过该上限时,需要存储在新的位置上,这两种未写完的情况是需要区分处理的,但在首次上传文件的情况中,未写完状态下一般不存在超过上限的情况,因此首次上传文件的情况中,文件的写入状态只分两种:成功和失败。文件版本控制***通过HDFS返回的标记文件写入状态的第一标识,获知文件的上传情况以判断下一步的处理。
在本步骤中,当文件版本控制***获取到HDFS返回的第一标识标记的写入状态为成功时,配置第二文件的第一版本;在数据库的第二资源表中新增第二文件的版本信息,第二文件标识和第二文件版本作为重要字段存储在第二资源表中,同时将第二文件标识返回给用户,以使用户在下次发起更新文件版本请求时,请求中携带文件标识。
进一步具体的,当所述第一标识标记所述写入状态为所述失败时,获取所述第二文件的文件流写入失败的第一原因;删除所述第一资源表中所述第二文件的基本信息以及所述HDFS中的所述第二文件的文件流;存储所述第二文件标识和所述第一原因至第一管理表,所述第一管理表用于记录对HDFS中文件的首次上传以及更新的失败操作。
其中,当文件版本控制***获取到HDFS返回的第一标识标记的写入状态为失败时,根据HDFS返回值的具体数值获知文件流写入失败的具体原因;将第二文件标识和第一原因存储至第一管理表中,并删除第一资源表中第二文件的基本信息以及HDFS中的第二文件的文件流,同时本申请在获取消息异常和通知用户时使用两种方式:Rest接口和SDK,SDK用于捕获异常消息,如写入失败,Rest接口则是在后端的SDK捕获异常消息后需要通知用户失败信息时的前端接口,用户在接收到失败信息通知后可选择是否重新上传等处理。
进一步具体的,第一管理表可以用于记录对HDFS中文件的首次上传以及更新的失败操作信息,也可以用于文件的上传、更新以及下载等操作的生命周期管理,记录文件在上传、更新以及下载时的文件标识、文件版本、开始时间、结束时间、是否成功、失败原因,以更全面的记录文件的每次操作,从而能整体管控文件的各类操作。
上述步骤是文件首次上传时的情况,在文件首次上传后,当用户有更新文件版本请求时,如图所示,图3为本申请实施例中一种文件管理方法的更新版本流程图,具体步骤详见如下描述。
步骤301:当所述第二文件标识的内容为非空时,根据所述第二文件标识查询所述第一资源表,确定所述第二存储位置;且根据所述第二文件标识查询所述第二资源表,确定所述第二文件的第二版本、所述第二版本对应的所述第二文件的第二开始字节以及所述第二版本对应的所述第二文件的第二结束字节;
具体的,当文件版本控制***获取到的第二文件标识的内容为非空时,表示本次用户上传的第二文件在第一资源表中和第二资源表中都已有记录,根据第二文件标识查询第一资源表得到第二存储位置,查询第二资源表得到第二文件的已有版本、已有版本对应的第二文件的开始字节以及第二文件的结束字节。
步骤302:根据所述第二存储位置以及所述第二结束字节,确定所述第二结束字节加M的位置为所述第二文件的文件流写入所述HDFS的写入开始位置,M为大于0的整数;
具体的,举例来说,M取值为1Kb,根据步骤301中第二文件标识查询到第二资源表中的版本为3,第3版本的第二文件对应的开始字节是1Mb,结束字节是2Mb,新上传的第二文件的开始位置为第3版本的结束字节2Mb+1Kb,即1025Kb的位置为本次上传的第二文件的开始写入位置。
步骤303:当所述第二结束字节加M大于或等于第一阈值时,新增所述第二文件的第三存储位置,所述第三存储位置为所述写入开始位置;
举例来说,第二存储位置的容量上限为第一阈值,取值为1G,当第3版本的第二文件对应的结束字节是1G时,新上传的第二文件的开始位置为1G++1Kb,已超出第二存储位置的容量上限,这时需要新增第三存储位置已作为第二文件的最新版本的写入开始位置。
步骤304:根据所述写入开始位置写入所述第二文件;
步骤305:获取所述第一标识;当所述第一标识标记所述写入状态为所述成功时,配置所述第二文件的第三版本,所述第三版本的取值为所述第二版本的取值加N,N为大于0的整数;存储所述第二文件标识和所述第三版本至所述第二资源表。
举例来说,N取值为1,结合步骤302中例子可知,配置的第二文件的最新版本的取值为第3版本+1,即第4版本。
进一步具体的,获取所述第一标识;当所述第一标识标记所述写入状态为所述未写完,且获取到***异常消息时,确定所述第二文件的文件流写入失败的第二原因,存储所述第二文件标识和所述第二原因至所述第一管理表。
进一步具体的,当所述第一标识标记所述写入状态为所述未写完,且未获取到***异常消息时,新增所述第四存储位置,所述第四存储位置为继续写入所述第二文件的文件流的位置。
举例来说,当文件版本控制***获取到HDFS返回的第一标识标记的写入状态为未写完,且获取到***异常消息时,比如,返回值为-1,确定第二文件的文件流写入失败的原因为因网络中断影响HDFS的存储功能,将这一失败原因和文件标识存储至第一管理表中,同时通过Rest接口通知用户失败信息以供用户选择是否重新上传。
当文件版本控制***获取到HDFS返回的第一标识标记的写入状态为未写完,且未获取到***异常消息时,比如,返回值为-2,确定第二文件的文件流写入失败的原因为未写完,已到存储位置的容量上限,将需新增存储位置消息反馈给HDFS,在新增存储位置后继续写入第二文件的文件流。
图4为本申请实施例中一种文件管理的实例结构示意图,如图所示,***结构包括:文件版本控制***401、数据库402以及文件***HDFS403。
其中,文件版本控制***401包括3种控制操作,分别是:用户首次上传文件404、用户更新文件405以及用户下载文件406。
数据库402包括第一资源表407、第二资源表408、第三资源表409、第一管理表410。
文件***HDFS403包括:第一文件存储411、第二文件存储412以及第三文件存储413等。
图1-图3所示的方法流程在控制各种文件版本的首次上传、更新以及下载时可以应用到图4所示的文件管理的实例结构中。
最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (9)
1.一种文件管理方法,其特征在于,包括:
获取第一用户下载第一文件的第一请求;根据所述第一请求获取所述第一用户请求下载的第一文件标识和第一文件版本;
根据所述第一文件标识查询第一资源表,确定所述第一文件在分布式文件***HDFS的第一存储位置,所述第一资源表用于记录所述HDFS中文件的基本信息,所述基本信息包括文件标识、文件的存储位置;
根据所述文件标识和所述第一文件版本查询第二资源表,确定所述第一文件版本对应的所述第一文件的第一开始字节和第一结束字节;所述第二资源表用于记录所述HDFS中文件的版本信息,所述版本信息包括文件标识、文件版本、文件开始字节、文件结束字节;
根据所述第一存储位置、所述第一开始字节以及所述第一结束字节,确定所述第一文件在所述HDFS中的下载开始位置和下载结束位置;
根据所述下载开始位置和所述下载结束位置下载所述第一文件;
当下载所述第一文件成功时,将第一记录存储至第三资源表,所述第三资源表用于记录对所述HDFS中文件的下载历史信息,所述下载历史信息包括文件标识、文件版本、文件下载时间、文件下载是否成功;所述第一记录用于标记下载所述第一文件成功;
获取第一用户上传第二文件的第二请求;根据所述第二请求获取所述第一用户请求上传的所述第二文件和第二文件标识;
确定所述第二文件的第二存储位置,并根据所述第二存储位置,将所述第二文件的文件流写入所述HDFS;
在所述第一资源表中增加所述第二文件的基本信息,所述基本信息包括所述第二文件标识和所述第二文件的第二存储位置;
获取所述HDFS返回的第一标识,所述第一标识用于标记所述第二文件的文件流的写入状态;
当所述第一标识标记所述写入状态为失败时,获取所述第二文件的文件流写入失败的第一原因;删除所述第一资源表中所述第二文件的基本信息以及所述HDFS中的所述第二文件的文件流;
存储所述第二文件标识和所述第一原因至第一管理表,所述第一管理表用于记录对HDFS中文件的首次上传以及更新的失败操作。
2.如权利要求1所述的方法,其特征在于,根据所述第一文件版本查询第二资源表之前,还包括:
根据所述第一文件标识查询所述第一资源表中所述第一用户对所述第一文件的第一操作权限;
当所述第一操作权限记录所述第一用户对所述第一文件有下载权限时,根据所述第一文件版本查询所述第二资源表。
3.如权利要求1所述的方法,其特征在于,获取第一用户下载第一文件的第一请求之后,还包括:
按照负载均衡算法从至少一个实例中选取负载轻的第一实例;通过第一实例对所述第一请求处理,所述第一实例用于处理所述第一用户首次上传、更新以及下载文件的请求。
4.如权利要求1所述的方法,其特征在于,确定所述第二文件的第二存储位置,包括:
当所述第二文件标识的内容为空时,配置所述第二文件标识以及所述第二文件的第二存储位置;存储所述第二文件标识和所述第二存储位置至所述第一资源表;
所述方法还包括:
当所述第一标识标记所述写入状态为所述成功时,配置所述第二文件的第一版本;存储所述第二文件标识和所述第一版本至所述第二资源表。
5.如权利要求1所述的方法,其特征在于,确定所述第二文件的第二存储位置,包括:
当所述第二文件标识的内容为非空时,根据所述第二文件标识查询所述第一资源表,确定所述第二存储位置;且根据所述第二文件标识查询所述第二资源表,确定所述第二文件的第二版本、所述第二版本对应的所述第二文件的第二开始字节以及所述第二版本对应的所述第二文件的第二结束字节;
根据所述第二存储位置,将所述第二文件的文件流写入所述HDFS,包括:
根据所述第二存储位置以及所述第二结束字节,确定所述第二结束字节加M的位置为所述第二文件的文件流写入所述HDFS的写入开始位置,M为大于0的整数;
当所述第二结束字节加M大于或等于第一阈值时,新增所述第二文件的第三存储位置,所述第三存储位置为所述写入开始位置;
根据所述写入开始位置写入所述第二文件;
所述方法还包括:
当所述第一标识标记所述写入状态为所述成功时,配置所述第二文件的第三版本,所述第三版本的取值为所述第二版本的取值加N,N为大于0的整数;存储所述第二文件标识和所述第三版本至所述第二资源表。
6.如权利要求5所述的方法,其特征在于,还包括:
当所述第一标识标记所述写入状态为未写完,且未获取到***异常消息时,新增第四存储位置,所述第四存储位置为继续写入所述第二文件的文件流的位置。
7.一种文件管理装置,其特征在于,包括:
获取单元,用于获取第一用户下载第一文件的第一请求;
处理单元,用于根据所述第一请求获取所述第一用户请求下载的第一文件标识和第一文件版本;根据所述文件标识和所述第一文件标识查询第一资源表,确定所述第一文件在分布式文件***HDFS的第一存储位置,所述第一资源表用于记录所述HDFS中文件的基本信息,所述基本信息包括文件标识、文件的存储位置;根据所述第一文件版本查询第二资源表,确定所述第一文件版本对应的所述第一文件的第一开始字节和第一结束字节;所述第二资源表用于记录所述HDFS中文件的版本信息,所述版本信息包括文件标识、文件版本、文件开始字节、文件结束字节;
所述处理单元,用于根据所述第一存储位置、所述第一开始字节以及所述第一结束字节,确定所述第一文件在所述HDFS中的下载开始位置和下载结束位置;
所述处理单元,还用于根据所述下载开始位置和所述下载结束位置下载所述第一文件;当下载所述第一文件成功时,将第一记录存储至第三资源表,所述第三资源表用于记录对所述HDFS中文件的下载历史信息,所述下载历史信息包括文件标识、文件版本、文件下载时间、文件下载是否成功;所述第一记录用于标记下载所述第一文件成功;
所述获取单元,还用于获取第一用户上传第二文件的第二请求;根据所述第二请求获取所述第一用户请求上传的所述第二文件和第二文件标识;
所述处理单元,用于确定所述第二文件的第二存储位置,并根据所述第二存储位置,将所述第二文件的文件流写入所述HDFS;
所述处理单元,还用于在所述第一资源表中增加所述第二文件的基本信息,所述基本信息包括所述第二文件标识和所述第二文件的第二存储位置;
所述获取单元,还用于获取所述HDFS返回的第一标识,所述第一标识用于标记所述第二文件的文件流的写入状态;
所述处理单元,还用于当所述第一标识标记所述写入状态为失败时,获取所述第二文件的文件流写入失败的第一原因;删除所述第一资源表中所述第二文件的基本信息以及所述HDFS中的所述第二文件的文件流;
所述处理单元,还用于存储所述第二文件标识和所述第一原因至第一管理表,所述第一管理表用于记录对HDFS中文件的首次上传以及更新的失败操作。
8.如权利要求7所述的装置,其特征在于,所述处理单元具体用于:
根据所述第一文件标识查询所述第一资源表中所述第一用户对所述第一文件的第一操作权限;
当所述第一操作权限记录所述第一用户对所述第一文件有下载权限时,根据所述第一文件版本查询所述第二资源表。
9.如权利要求7所述的装置,其特征在于,所述处理单元具体用于:
按照负载均衡算法从至少一个实例中选取负载轻的第一实例;通过第一实例对所述第一请求处理,所述第一实例用于处理所述第一用户首次上传、更新以及下载文件的请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910957957.8A CN110597764B (zh) | 2019-10-10 | 2019-10-10 | 一种文件下载、版本管理方法及装置 |
PCT/CN2020/116859 WO2021068740A1 (zh) | 2019-10-10 | 2020-09-22 | 一种文件管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910957957.8A CN110597764B (zh) | 2019-10-10 | 2019-10-10 | 一种文件下载、版本管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597764A CN110597764A (zh) | 2019-12-20 |
CN110597764B true CN110597764B (zh) | 2024-05-07 |
Family
ID=68866095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910957957.8A Active CN110597764B (zh) | 2019-10-10 | 2019-10-10 | 一种文件下载、版本管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110597764B (zh) |
WO (1) | WO2021068740A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597764B (zh) * | 2019-10-10 | 2024-05-07 | 深圳前海微众银行股份有限公司 | 一种文件下载、版本管理方法及装置 |
CN111427614B (zh) * | 2020-03-20 | 2023-08-22 | 中国银行股份有限公司 | 文件版本管理方法及装置 |
CN113378119B (zh) * | 2021-06-25 | 2023-04-07 | 成都卫士通信息产业股份有限公司 | 一种软件授权方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195802A (zh) * | 2010-03-18 | 2011-09-21 | 中兴通讯股份有限公司 | 一种终端软件下发方法、服务器和终端 |
CN103986747A (zh) * | 2014-04-14 | 2014-08-13 | 曦威胜科技开发(深圳)有限公司 | P2p协议中文件共享下载方法 |
CN104572845A (zh) * | 2014-12-12 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 文件分发方法、装置、设备及*** |
CN104902022A (zh) * | 2015-05-27 | 2015-09-09 | 北京集奥聚合科技有限公司 | 一种分布式文件获取方法和分布式文件获取*** |
CN105357280A (zh) * | 2015-10-19 | 2016-02-24 | 福建新大陆软件工程有限公司 | 一种基于hdfs的文件溯源ftp*** |
CN106027647A (zh) * | 2016-05-20 | 2016-10-12 | 云南云电同方科技有限公司 | Lxpfs集群分布式文件存储*** |
CN106776720A (zh) * | 2016-11-18 | 2017-05-31 | 北京奇虎科技有限公司 | 一种文件处理方法和装置 |
CN108270871A (zh) * | 2018-01-29 | 2018-07-10 | 广东五科技股份有限公司 | 一种客户端的文件分块下载方法和装置 |
CN108289126A (zh) * | 2018-01-28 | 2018-07-17 | 丁超 | 用于上传或下载文件的方法、装置及计算机存储介质 |
CN109460531A (zh) * | 2018-11-07 | 2019-03-12 | 北京金山云网络技术有限公司 | 网页管理方法、装置及智能终端 |
CN110177154A (zh) * | 2019-06-17 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 一种文件交互处理方法、装置及*** |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5296960B2 (ja) * | 2005-06-17 | 2013-09-25 | 日本電気株式会社 | ファイルバージョン管理装置 |
CN102810138B (zh) * | 2012-06-19 | 2015-12-02 | 北京奇虎科技有限公司 | 一种用户端文件的修复方法和*** |
CN103475687B (zh) * | 2013-05-24 | 2016-12-28 | 北京网秦天下科技有限公司 | 用于下载网站数据的分布式方法和*** |
CN103281394A (zh) * | 2013-06-07 | 2013-09-04 | 北京奇虎科技有限公司 | 文件获取方法、节点服务器和*** |
CN103595770B (zh) * | 2013-10-29 | 2017-01-18 | 北京奇虎科技有限公司 | Sdk实现文件下载的方法与装置 |
CN106020786A (zh) * | 2015-11-02 | 2016-10-12 | 广州市动景计算机科技有限公司 | 一种动态修复应用程序的方法、装置及相关*** |
CN106294585B (zh) * | 2016-07-28 | 2019-10-18 | 上海倍增智能科技有限公司 | 一种云计算平台下的存储方法 |
CN109086071A (zh) * | 2018-08-22 | 2018-12-25 | 平安普惠企业管理有限公司 | 一种管理软件版本信息的方法及服务器 |
CN109684414B (zh) * | 2018-12-26 | 2022-04-08 | 百度在线网络技术(北京)有限公司 | 区块数据的同步方法、装置、设备及存储介质 |
CN110597764B (zh) * | 2019-10-10 | 2024-05-07 | 深圳前海微众银行股份有限公司 | 一种文件下载、版本管理方法及装置 |
-
2019
- 2019-10-10 CN CN201910957957.8A patent/CN110597764B/zh active Active
-
2020
- 2020-09-22 WO PCT/CN2020/116859 patent/WO2021068740A1/zh active Application Filing
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195802A (zh) * | 2010-03-18 | 2011-09-21 | 中兴通讯股份有限公司 | 一种终端软件下发方法、服务器和终端 |
CN103986747A (zh) * | 2014-04-14 | 2014-08-13 | 曦威胜科技开发(深圳)有限公司 | P2p协议中文件共享下载方法 |
CN104572845A (zh) * | 2014-12-12 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 文件分发方法、装置、设备及*** |
CN104902022A (zh) * | 2015-05-27 | 2015-09-09 | 北京集奥聚合科技有限公司 | 一种分布式文件获取方法和分布式文件获取*** |
CN105357280A (zh) * | 2015-10-19 | 2016-02-24 | 福建新大陆软件工程有限公司 | 一种基于hdfs的文件溯源ftp*** |
CN106027647A (zh) * | 2016-05-20 | 2016-10-12 | 云南云电同方科技有限公司 | Lxpfs集群分布式文件存储*** |
CN106776720A (zh) * | 2016-11-18 | 2017-05-31 | 北京奇虎科技有限公司 | 一种文件处理方法和装置 |
CN108289126A (zh) * | 2018-01-28 | 2018-07-17 | 丁超 | 用于上传或下载文件的方法、装置及计算机存储介质 |
CN108270871A (zh) * | 2018-01-29 | 2018-07-10 | 广东五科技股份有限公司 | 一种客户端的文件分块下载方法和装置 |
CN109460531A (zh) * | 2018-11-07 | 2019-03-12 | 北京金山云网络技术有限公司 | 网页管理方法、装置及智能终端 |
CN110177154A (zh) * | 2019-06-17 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 一种文件交互处理方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
WO2021068740A1 (zh) | 2021-04-15 |
CN110597764A (zh) | 2019-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597764B (zh) | 一种文件下载、版本管理方法及装置 | |
US20200050588A1 (en) | Automatic file version verification within electronic mail | |
US10387451B2 (en) | Synchronization system for multiple client devices | |
CN105512244A (zh) | 基于消息队列实现数据库事务处理的方法及装置 | |
CN102224492B (zh) | 数据维护*** | |
CN104820602A (zh) | 软件包发布方法、装置及*** | |
CN111324606B (zh) | 数据分片的方法及装置 | |
US11275795B2 (en) | System and method for in-place record content management | |
CN109634682A (zh) | 应用程序的配置文件更新方法及装置 | |
CN111104387A (zh) | 在服务器上获取数据集的方法和装置 | |
CN103902562A (zh) | 一种终端数据库升级方法及相关装置 | |
CN113157315A (zh) | 一种软件不同版本的差异信息识别方法、装置、设备及介质 | |
CN110889272A (zh) | 数据处理方法、装置、设备及存储介质 | |
US11099837B2 (en) | Providing build avoidance without requiring local source code | |
CN111984666A (zh) | 数据库访问方法、装置、计算机可读存储介质和计算机设备 | |
CN112445986B (zh) | 一种缓存信息的更新方法、推送方法、装置及介质 | |
CN112448979B (zh) | 一种缓存信息的更新方法、装置及介质 | |
CN111752797A (zh) | 终端日志的处理方法、装置、终端及存储介质 | |
US20150234866A1 (en) | Data Distribution System | |
CN114089962A (zh) | 一种构件管理方法、设备及介质 | |
US9936015B2 (en) | Method for building up a content management system | |
US11281444B2 (en) | Application update monitoring computer systems | |
CN110968888B (zh) | 一种数据处理方法及装置 | |
CN107784040B (zh) | 一种文件下发方法及装置 | |
CN111078258A (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 |