一种文件存储方法及装置与流程

文档序号:11774533阅读:221来源:国知局
一种文件存储方法及装置与流程
本申请属于互联网
技术领域
,尤其涉及一种文件存储方法及装置。
背景技术
:nas(networkattachedstorage,网络存储器)是一种专用数据存储服务器,以数据为中心将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能。nas主要存在以下几个缺点:(1)受限于硬件可靠性,易出问题。一旦出现磁盘坏道,容易出现不可逆转的数据丢失。人工数据恢复困难,且耗时耗力;(2)价格昂贵,安全机制需要单独实现,开发和维护成本高;(3)并发访问量大时,读写性能会急剧下降。随着余额宝等互联网理财业务的发展,业务量和用户量越来越大,nas作为一个基于unix系统的存储服务器,承载了越来越大的数据访问和写入,导致任务文件执行时并发严重,效率低缓,且经常会遇到一些不可预知的异常情况,影响了文件产出的稳定性。余额宝文件处理的时间变得越来越长,这将大大影响到一些实效性较强的业务,例如余额宝收益的发放。针对nas在数据存储性能方面的上述缺陷,目前尚未提出有效的解决方案。技术实现要素:本申请目的在于提供一种文件存储方法及装置,可以将nas上的数据平滑迁移至oss,从而提高文件执行速度,降低成本,使得并发情况下文件读写性能得到有效保障。本申请提供一种文件存储方法及装置是这样实现的:一种文件存储方法,所述方法包括:将每份任务文件复制为两份任务文件,将所述两份任务文件分别并行写入nas和oss;对比所述nas和所述oss中存储的每份任务文件是否完全一致;如果在指定时长内对比结果均为完全一致,则将后续任务文件均写入所述oss。一种文件存储装置,所述装置包括:并行写入单元,用于将每份任务文件复制为两份任务文件,将两份任务文件分别并行写入nas和oss;对比单元,用于对比所述nas和所述oss中存储的每份任务文件是否完全一致;存储单元,用于在指定时长内对比结果均为完全一致 的情况下,将后续任务文件均写入所述oss。本申请提供的文件存储方法及装置,舍去传统nas而选用oss作为任务文件的存储系统,大大提升了文件读写的性能,同时提升了存储系统的可靠性。oss(objectstorageservice,对象存储器)属于一种海量、安全和高可靠的云存储服务,其存储容量和处理能力的弹性扩展使客户可以专注于核心业务。还可以同其他云产品搭配使用。oss广泛的应用于海量数据存储与备份,数据加工与处理,内容加速分发,业务数据挖掘分析等多种业务场景。本申请使用oss来存储任务文件,执行速率能够得到大幅度提高,并发情况下性能可以得到保障。本申请为了安全的从nas平滑过渡到oss,采用了任务双写、文件对比的方式,以保证两套存储环境下产出文件的可靠性和正确性。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请提出的文件存储方法的一种实施例的方法流程图;图2是本申请提出的nas和oss并行写入操作示意图;图3是本申请提出的nas和oss并行写入操作的具体示意图;图4是本申请提出的输入类文件写入操作示意图;图5是本申请提出的输出类文件写入操作示意图;图6是本申请所述文件存储装置一种实施例的结构示意图;图7是本申请所述文件存储装置一种实施例的复制单元结构示意图;图8是本申请所述文件存储装置一种实施例的并行写入单元结构示意图;图9是本申请所述文件存储装置一种实施例的并行写入单元另一结构示意图。具体实施方式为了使本
技术领域
的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。下面结合附图对本申请所述的文件存储方法及装置进行详细的说明。图1是本申请提出 的文件存储方法的一种实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块结构。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例提供的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。本申请可以以文件存储为例进行方案的具体说明,当然,本申请所述的文件存储方案不仅可以用于互联网理财业务的大文件存储迁移,同样可以适用于其他应用场景下的文件存储迁移。具体的如图1所示,本申请提供的文件存储方法的一种实施例可以包括:步骤s102,将每份任务文件复制为两份任务文件,将两份任务文件分别并行写入nas和oss。具体地,可以通过以下方式实现:根据一份任务文件定义两组任务实例(taskinstance),这两组taskinstance的数据内容与上述任务文件的数据内容完全相同,根据上述两组taskinstance生成两份任务文件(例如task1和task2),将其中一份任务文件写入nas中,同时,将另外一份任务文件写入oss中。上述两个并行写入操作各自运行,互不干扰。步骤s104,对比nas和oss中存储的每份任务文件是否完全一致。步骤s106,如果在指定时长内对比结果均为完全一致,则将后续任务文件均写入oss。在执行对比操作之前,nas和oss中均已写入多份任务文件,该对比操作的执行期可以称为过渡期,过渡期的时长(即上述指定时长)可根据需求自行设定。依次对比nas和oss中存储的每份任务文件是否完全一致,如果在过渡期内所有对比结果均为完全一致,则表示此时可以将任务文件的存储器由nas更换为oss,将后续的任务文件均写入oss,停止nas的写入操作。本实施例舍去传统nas而选用oss作为任务文件的存储系统,大大提升了文件读写的性能,同时提升了存储系统的可靠性。一实施例中,对于如何确定哪一份任务文件写入nas中,哪一份任务文件写入oss中,可以通过设置任务参数的方式来确定。即,分别设置上述两组taskinstance的任务参数(taskparam),任务参数用于指示任务文件写入nas或者oss。表1所示是taskinstance的表结构,taskinstance表为任务实例表,用于记录任务实例。表1表2所示是taskparam的表结构,taskparam表用于记录任务实例的参数,1条taskinstance记录对应多条taskparam记录。表2nametypedefaultstoragecommentsidvarchar2(32)主键gmt_createdatesysdate创建时间gmt_modifieddatesysdate修改时间task_instance_idvarchar2(32)任务实例idparam_keyvarchar2(128)参数keyparam_valuevarchar2(256)参数值图2是本申请提出的nas和oss并行写入操作示意图,如图2所示,为了不影响原有业务的正确运行,对原任务文件中的io层作封装,使得后来生成的两份任务文件可以根据自身配置(即任务参数)来决定存储层是写入oss还是写入nas。如果存储层决策判定为将任务文件写入oss中存储,则由存储控制器调用ossclient对oss或本地进行读写操作,反之则由存储控制器调用javaio,对nas进行操作,以此来适配原有逻辑。图3是本申请提出的nas和oss并行写入操作的具体示意图,如图3所示,根据第一份任务文件的任务参数确定其需要写入nas,则将第一份任务文件task1写入nas;根据第二份任务文件的任务参数确定其需要写入oss,则将第二份文件task2先写入本地,然后上传至oss。实现了nas和oss的并行写入操作独立运行互不干扰。另外,把oss作为任务文件的存储器,以先服务器本地执行再上传的方式完成任务文件的写入,大大提高了文件的执行效率。在本实施例中,任务文件主要分为以下两类:输入类文件、输出类文件。对于不同类型 的任务文件,其写入操作也并不相同。图4是本申请提出的输入类文件写入操作示意图,如图4所示,对于输入类文件,首先经由sftp(securefiletransferprotocol,安全文件传送协议)接收来自客户机构(主要包括银行、券商、基金公司等)的任务文件,然后将任务文件复制为两份任务文件,再基于文件交换系统将其中一份任务文件写入nas,将另一份任务文件写入oss。在此之后,文件批处理系统会同时处理oss及nas中的文件,待oss稳定之后停止nas的写入。图5是本申请提出的输出类文件写入操作示意图,如图5所示,对于输出类文件,首先从db(database,数据库)中读取任务文件,然后将任务文件复制为两份任务文件,再基于文件批处理系统将其中一份任务文件写入nas,将另一份任务文件写入oss。待oss稳定之后停止nas的写入。基于与上述文件存储方法相同的发明构思,本申请提供一种文件存储装置,如下面实施例所述。由于该文件存储装置解决问题的原理与文件存储方法相似,因此该文件存储装置的实施可以参见文件存储方法的实施,重复之处不再赘述。图6是本申请所述文件存储装置一种实施例的结构示意图,如图6所示,所述装置可以包括:复制单元10,用于将每份任务文件复制为两份任务文件。复制单元10是文件存储装置中复制任务文件的部分,可以是软件、硬件或二者的结合,例如可以是完成文件生成功能的接口、处理芯片等元器件。并行写入单元20,连接至复制单元10,用于将两份任务文件分别并行写入nas和oss。并行写入单元20是文件存储装置中写入任务文件的部分,可以是软件、硬件或二者的结合,例如可以是完成文件写入功能的接口、处理芯片等元器件。对比单元30,连接至并行写入单元20,用于对比nas和oss中存储的每份任务文件是否完全一致。对比单元30是文件存储装置中nas和oss中任务文件对比的部分,可以是软件、硬件或二者的结合,例如可以是完成数据比对功能的接口、处理芯片等元器件。存储单元40,连接至对比单元30,用于在指定时长内对比结果均为完全一致的情况下,将后续任务文件均写入oss。存储单元40是文件存储装置中存储任务文件的部分,可以是软件、硬件或二者的结合,例如可以是完成文件存储功能的接口、处理芯片等元器件。图7是本申请所述文件存储装置一种实施例的复制单元结构示意图,如图7所示,复制单元10可以包括:实例生成模块12,用于根据一份任务文件定义两组taskinstance;文件生成模块14,用于根据两组taskinstance生成两份任务文件。从而实现任务文件的完整复制,保证复制后的两份任务文件与原任务文件的数据完全相同。图8是本申请所述文件存储装置一种实施例的并行写入单元结构示意图,如图8所示,并行写入单元20可以包括:第一写入模块22,用于当任务文件是输入类文件时,经由安全文件传送协议sftp接收来自客户机构的任务文件,将任务文件复制为两份任务文件,再基于文件交换系统将两份任务文件分别并行写入nas和oss;第二写入模块24,用于当任务文件是输出类文件时,从数据库中读取任务文件,将任务文件复制为两份任务文件,再基于文件批处理系统将两份任务文件分别并行写入nas和oss。在本实施例中,客户机构主要包括:银行、券商、基金公司等。图9是本申请所述文件存储装置一种实施例的并行写入单元另一结构示意图,如图9所示,并行写入单元20可以包括:参数设置模块21,用于分别设置两份任务文件的任务参数;其中,任务参数用于指示任务文件写入nas或者oss;nas写入模块23,用于调取javaio将一份任务文件写入nas;oss写入模块25,用于调取ossclient将另一份任务文件先写入本地,再上传至oss。实现了nas和oss的并行写入操作独立运行互不干扰。另外,把oss作为任务文件的存储器,以先服务器本地执行再上传的方式完成任务文件的写入,大大提高了文件的执行效率。本实施例主要应用于互联网理财业务,舍去传统nas而选用oss作为任务文件的存储系统,大大提升了文件读写的性能,同时提升了存储系统的可靠性。从以上的描述可知,本申请主要适用于大文件异构存储业务,例如理财通、陆金所等,具有一定的通用性。本申请基于java语言设计,也可以使用其他高级语言实现。由于nas上承载着大量重要业务(包括余额宝收益文件、垫资文件等),为不影响老业务的正常运行,本申请在从nas过渡到oss的期间,采用nas及oss存储系统双写模式。这种平滑的迁移方式对业务无感知,并方便回切。为了保证任务文件迁移到oss后,文件产出的正确性及完整性,还需要对异构存储系统中的文件进行对比。oss在可靠性和安全性方面都优于nas,其执行速率能够得到大幅度提高,并发情况下性能可以得到保障,且成本较低。虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1