掌桥专利:专业的专利平台
掌桥专利
首页

一种文件读取、写入方法及装置

文献发布时间:2023-06-19 09:29:07


一种文件读取、写入方法及装置

技术领域

本发明实施例涉及存储技术领域,尤其涉及一种文件读取、写入方法及装置。

背景技术

医院信息系统是为医院各部门提供病人诊疗信息和行政管理信息的收集、存储、处理、提取和数据交换等功能的平台,通常存储大量的医学影像数据,如各类放射检查的影像图像、病理图像、超声检查图像等。现有的医院信息系统读取/写入医学影像数据的速度较慢,读写效率较低。

发明内容

本申请提供一种文件读取、写入方法及装置,能够解决读写效率较低的问题。

为达到上述目的,本申请采用如下技术方案:

第一方面,提供一种文件读取方法,加速装置在接收到用于请求读取文件序列的数据的读请求后,向第一存储节点发送第一子读请求,以及向第二存储节点发送第二子读请求。其中,第一子读请求和第二子读请求是并行发送的,第一子读请求用于请求读取第一文件的数据,第二子读请求用于请求读取第二文件的数据,文件序列包括第一文件和第二文件。之后,在接收到第一存储节点发送的第一文件的数据和第二存储节点发送的第二文件的数据后,向客户端发送第一文件的数据和第二文件的数据。

加速装置并行地与第一存储节点和第二存储节点通信,以实现第一文件和第二文件的并行读取,有效地提高了读取文件序列的效率。

可选的,在本申请的一种可能的实现方式中,加速装置接收到的读请求包括用于指示第一文件和第二文件的排列顺序的顺序信息,这样,上述“加速装置向客户端发送第一文件的数据和第二文件的数据”的方法包括:加速装置根据顺序信息,将第一文件的数据和第二文件的数据进行排列,以得到文件序列的数据;之后,加速装置向客户端发送文件序列的数据。

文件序列中的第一文件和第二文件按顺序排列,读请求中的顺序信息指示了该排列顺序。因此,在接收到第一文件的数据和第二文件的数据后,加速装置需要根据顺序信息,对第一文件的数据和第二文件的数据进行排列,以保证文件序列的数据的准确性。

可选的,在本申请的另一种可能的实现方式中,加速装置在接收到第一文件的数据和第二文件的数据后,还缓存第一文件的数据和第二文件的数据。相应的,在向客户端发送文件序列的数据之后,还回收缓存中的第一文件的数据和第二文件的数据,以提高缓存的有效利用率。

第二方面,提供一种加速装置,该加速装置能够实现第一方面及其任意一种可能的实现方式中的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。

在本申请的一种可能的方式中,该加速装置可以包括读取单元和交互单元,该读取单元和交互单元可以执行上述第一方面及其任意一种可能的实现方式的文件读取方法中的相应功能。例如:读取单元,用于接收来自客户端的读请求,该读请求用于请求读取文件序列的数据,文件序列包括第一文件和第二文件。交互单元,用于向第一存储节点发送第一子读请求,以及向第二存储节点发送第二子读请求,第一子读请求和第二子读请求是并行发送的,第一子读请求用于请求读取第一文件的数据,第二子读请求用于请求读取第二文件的数据。交互单元,还用于接收第一存储节点发送的第一文件的数据和第二存储节点发送的第二文件的数据。读取单元,还用于向客户端发送交互单元接收到的第一文件的数据和第二文件的数据。

第三方面,提供一种文件写入方法,加速装置在接收到用于请求写入文件序列中文件的数据的第一写请求后,向第一存储节点发送第一子写请求,以及向第二存储节点发送第二子写请求,其中,第一子写请求和第二子写请求是并行发送的,文件序列包括第一文件和第二文件,第一子写请求用于请求写入第一文件的数据,第二子写请求用于请求写入第二文件的数据。

加速装置并行地与第一存储节点和第二存储节点通信,以实现第一文件和第二文件的并行写入,有效地提高了写入文件序列的效率。

可选的,在本申请的一种可能的实现方式中,在确定第一文件的数据和第二文件的数据均已写入成功后,加速装置向客户端发送写成功响应。

加速装置并行地与第一存储节点和第二存储节点通信,如果第一文件和/或第二文件未写入成功,则加速装置向客户端发送用于指示未写入成功的消息。

可选的,在本申请的另一种可能的实现方式中,文件序列还包括第三文件,第一文件、第二文件和第三文件按照预设顺序排列,相应的,第一写请求包括顺序信息,该顺序信息用于指示第一文件、第二文件和第三文件的排列顺序。在第三文件为文件序列中的最后一个文件的场景中,加速装置还向第三存储节点发送用于请求写入第三文件的数据的第三子写请求;之后,在确定第一文件的数据、第二文件的数据和第三文件的数据均已写入成功后,加速装置向客户端发送写成功响应。

在接收到写请求后,加速装置可以先并行地与第一存储节点和第二存储节点通信,再与第三存储节点通信,以实现文件序列中文件数据的写入。

可选的,在本申请的另一种可能的实现方式中,文件序列还包括第三文件,第一文件、第二文件和第三文件按照预设顺序依次排列,且第三文件为文件序列中的最后一个文件。在这种场景中,加速装置还可以接收来自客户端用于请求写入第三文件的数据的第二写请求,并向第三存储节点发送第三子写请求,用于请求写入第三文件的数据;之后,在确定第一文件的数据、第二文件的数据和第三文件的数据均已写入成功后,加速装置向客户端发送写成功响应。

在写入文件序列中文件的数据的过程中,客户端可以向加速装置先发送第一写请求,后发送第二写请求。由于加速装置在接收到第一写请求后,并行地与第一存储节点和第二存储节点通信,实现了第一文件和第二文件的并行写入,因此,该实现方式还是提高了写文件序列的效率。

第四方面,提供一种加速装置,该加速装置能够实现第三方面及其任意一种可能的实现方式中的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。

在本申请的一种可能的方式中,该加速装置可以包括写入单元和交互单元,该写入单元和交互单元可以执行上述第三方面及其任意一种可能的实现方式的文件写入方法中的相应功能。例如:写入单元,用于接收来自客户端的第一写请求,该第一写请求用于请求写入文件序列中文件的数据,文件序列包括第一文件和第二文件。交互单元,用于向第一存储节点发送第一子写请求和第二子写请求,第一子写请求和第二子写请求是并行发送的,第一子写请求用于请求写入第一文件的数据,第二子写请求用于请求写入第二文件的数据。

第五方面,提供一种设备,该设备一个或多个处理器,以及一个或多个存储器;所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器存储有计算机指令。当所述一个或多个处理器执行所述计算机指令时,使得所述设备实现执行上述第一方面及其任意一种可能的实现方式所述的文件读取方法,或者执行上述第三方面及其任意一种可能的实现方式所述的文件写入方法。

可选的,该设备还包括收发器,该收发器可以用于执行上述第一方面及其任意一种可能的实现方式所述的文件读取方法中收发数据、信令或信息的步骤,例如,接收读请求,接收第一文件的数据和第二文件的数据等;还可以用于执行上述第三方面及其任意一种可能的实现方式所述的文件写入方法中收发数据、信令或信息的步骤,例如,接收第一写请求,发送第一子写请求,发送第二子写请求等。

该设备可以是服务器(或存储节点),也可以是服务器(或存储节点)中的一部分装置,例如服务器(或存储节点)中的芯片系统。该芯片系统用于支持服务器(或存储节点)实现第一方面、第三方面及其任意一种可能的实现方式中所涉及的功能。该芯片系统包括芯片,也可以包括其他分立器件或电路结构。

第六方面,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令;当计算机指令在计算机上运行时,该计算机执行如上述第一方面及其各种可能的实现方式所述的文件读取方法,或执行如上述第三方面及其各种可能的实现方式所述的文件写入方法。

第七方面,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机上运行时,使得计算机执行如上述第一方面及其各种可能的实现方式所述的文件读取方法,或执行如上述第三方面及其各种可能的实现方式所述的文件写入方法。

需要说明的是,上述计算机指令可以全部或者部分存储在计算机存储介质上,其中,第一计算机存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请对此不作限定。

本申请中第五方面、第六方面、第七方面及其各种实现方式的描述,可以参考第一方面、第三方面及其各种实现方式中的详细描述;并且,第五方面、第六方面、第七方面及其各种实现方式的有益效果,可以参考第一方面、第三方面及其各种实现方式中的有益效果分析,此处不再赘述。

在本申请中,上述加速装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。

本申请的这些方面或其他方面在以下的描述中会更加简明易懂。

附图说明

图1为本发明实施例中通信系统的结构示意图一;

图2为本发明实施例中通信系统的结构示意图二;

图3为本发明实施例中加速装置的结构示意图;

图4为本发明实施例提供的文件读取方法的流程示意图一;

图5为本发明实施例加速装置中各个单元之间相互通信的一种流程示意图;

图6为本发明实施例加速装置中各个单元之间相互通信的另一种流程示意图;

图7为本发明实施例提供的文件读取方法的流程示意图二;

图8为本发明实施例提供的文件读取方法的流程示意图三;

图9为本发明实施例加速装置中各个单元之间相互通信的另一种流程示意图;

图10为本发明实施例加速装置中各个单元之间相互通信的另一种流程示意图;

图11为本发明实施例提供的文件写入方法的流程示意图一;

图12为本发明实施例提供的文件写入方法的流程示意图二;

图13为本发明实施例提供的文件写入方法的流程示意图三;

图14为本发明实施例提供的设备的结构示意图。

具体实施方式

在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

医院信息系统通常存储有大量的非结构化的医学影像数据。医学影像数据是在进行放射、核磁共振、超声、病理、内镜等检查过程中形成的医学数据,通常采用医学数字成像和通信(digital imaging and communications in medicine,DICOM)标准格式进行存储、访问及共享。

医学影像设备(如磁共振成像设备、超声成像设备等)对人体每进行一次检查,通常会生成多个文件序列,每个文件序列包括多个DICOM格式的源文件,多个DICOM格式的源文件按照预设顺序依次排列。因此,医学影像数据具有单个文件数据量较大、文件序列的数据量巨大、单位时间内数据量增长速度快等特点。

现有的医院信息系统通常采用串行的方式读写医学影像数据,这样,对于某一文件序列而言,读写该文件序列时需要依次读写该文件序列中的每一文件,时间花销较大,读写效率较低。

为此,本发明实施例提出了一种文件读取、写入方法及装置,在现有的系统中添加加速装置,通过加速装置与存储节点的配合,并行地读写文件序列中的数据,有效地提高了读写效率。

本发明实施例提供的文件读取、写入方法应用于大量非结构化数据的读写场景,具体适用于包括客户端、服务器、加速装置以及多个存储节点的通信系统。其中,多个存储节点组成存储集群(也可以简称为存储系统),用于存储该通信系统中的非结构化数据。加速装置可以置于服务器中,也可以置于每个存储节点中,通过应用程序调用接口(application programming interface,API)、可移植操作系统接口(portable operatingsystem interface of UNIX,POSIX)或者其他标准接口提供服务。

本发明实施例提供的通信系统包括但不限于医院信息系统、金融票据影像管理系统、用于训练人工智能算法的系统等。

图1示出了本发明实施例提供的通信系统的一种结构。如图1所示,该通信系统包括客户端10、服务器11和多个存储节点12,服务器11中部署有加速装置13。

客户端10用于与服务器11通信,请求读文件序列或者写文件序列。该客户端10可以是为客户提供服务的程序,如影像浏览器;也可以是影像采集设备,如磁共振成像设备、超声成像设备等;本发明实施例对此不作限定。

服务器11是指能够与客户端通信,为客户端提供数据支持的设备。在实际应用中,服务器11可以为一个客户端10提供服务,也可以同时为多个客户端10提供服务。图1中仅以一个客户端10为例进行说明。

加速装置13集成于服务器11中,用于在接收到客户端10发送的用于请求读取文件序列的数据的读请求后,并行地与多个存储节点12通信,以获取文件序列中每个文件的数据;还用于在接收到客户端10发送的用于请求写入文件序列中文件的数据的写请求后,并行地与多个存储节点12通信,以使得存储节点12存储文件序列中某一文件的数据。

存储节点12用于存储非结构化数据,如医学影像数据。该存储节点12可以是服务器,也可以是台式机,本发明实施例对此不作限定。

该通信系统中文件的数据可以采用冗余的形式分散存储在多个存储节点12中。例如:为了提升数据的可靠性,同时提高存储空间的利用率,文件的数据可以采用N个数据块+M个校验块(根据数据校验擦除码(erasure code,EC)算法得到)的方式存储,其中,N个数据块和M个校验块分别位于不同的存储节点12中。

图2示出了本发明实施例提供的通信系统的另一种结构。如图2所示,该通信系统包括客户端20、服务器21和多个存储节点22,每个存储节点22中部署有加速装置23。其中,客户端20、服务器21、存储节点22以及加速装置23的描述可以参考上述对图1的描述,这里不再进行详细赘述。

需要说明的是,上述图1和图2示出的通信系统的结构只是一个示例。在实际应用中,该通信系统还可以包括其他设备,这里不再一一赘述。

图3示出了本发明实施例中加速装置(如上述加速装置13或加速装置23)的逻辑架构。如图3所示,从逻辑功能的角度上看,本发明实施例中的加速装置包括接口层30、缓存层31和数据层32。

接口层30用于提供加速装置和服务器之间的通信接口。该接口层30可以包括读取单元300、写入单元301和缓存回收单元302。

读取单元300用于提供读取数据的接口。具体的,用于接收客户端发送的用于请求读取文件序列的数据的读请求,并在接收到读请求后,解析该请求中文件序列的信息,以及调用数据层32并行地读取文件序列中的数据,还用于接收数据层32发送的每一文件的数据,并向客户端发送接收到的数据,还用于将接收到的每一文件的数据,按照文件的排列顺序进行排列。

写入单元301用于提供写数据的接口。具体的,用于接收客户端发送的用于请求写入文件序列中文件的数据的写请求,并在接收到写请求后,解析该请求中文件序列的信息,以及调用数据层32并行地将文件序列中的数据写入存储节点。

缓存回收单元302用于提供缓存回收的接口。具体的,与读取单元301或写入单元301通信,获取待回收文件序列的信息,解析该文件序列的信息,并调用缓存层31,以实现待回收文件序列的缓存回收。

缓存层31包括缓存单元310,用于缓存文件序列中临时保存的非持久化数据或缓存持久化数据。

数据层32用于实现与多个存储节点的交互。数据层32包括交互单元320,该交互单元320用于并行地与多个存储节点通信,以读取文件序列中每一文件的数据,或者将接收到的每一文件的数据写入存储节点中。

需要说明的是,图3示出的加速装置的逻辑架构只是一个示例。在实际应用中,除图3所示部件之外,加速装置可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面对本发明实施例提供的文件读取、写入方法进行描述。为了便于理解,本发明实施例以加速装置置于服务器中为例进行说明。

本发明实施例提供的文件读取、写入方法包括读取文件序列的数据这一过程和写文件序列的数据这一过程。下面先对读取文件序列的数据这一过程进行描述。

图4为本发明实施例提供的一种文件读取方法中读取文件序列的数据的流程示意图。如图4所示,本申请实施例提供的文件读取方法包括如下步骤。

S400、响应于用户的读取操作,客户端向服务器发送读请求,用于请求读取文件序列的数据。

客户端在接收到用户输入的用于读取文件序列的操作后,启动读取文件序列的数据的流程,向服务器发送读请求,请求读取文件序列的数据。

该文件序列包括第一文件和第二文件,第一文件和第二文件按照预设顺序排列。读请求包括文件序列的标识、顺序信息、第一文件的存储地址和第二文件的存储地址。顺序信息用于指示第一文件和第二文件的排列顺序。

这里,第一文件的存储地址可以为该第一文件的逻辑存储地址,也可以为该第一文件的物理存储地址,本发明实施例对此不作限定。同理,第二文件的存储地址可以为该第二文件的逻辑存储地址,也可以为该第二文件的物理存储地址,本发明实施例对此不作限定。

S401、响应于读请求,服务器中的加速装置确定第一存储节点和第二存储节点。

第一文件和第二文件采用冗余的方式采用冗余的形式分散存储在多个存储节点中。服务器在接收到读请求后,将该读请求发送至加速装置,加速装置中的读取单元在接收到读请求后,根据文件序列的标识和第一文件的存储地址,确定存储系统中的第一存储节点,以及根据文件序列的标识和第二文件的存储地址,确定存储系统中的第二存储节点。第一存储节点存储有第一文件的部分数据,第二存储节点存储有第二文件的部分数据。

S402、服务器中的加速装置并行地向第一存储节点发送第一子读请求,以及向第二存储节点发送第二子读请求。

第一子读请求用于请求读取第一文件的数据,第二子读请求用于请求读取第二文件的数据。

第一子读请求包括第一文件的标识,第二子读请求包括第二文件的标识。

加速装置中的读取单元在确定出第一存储节点和第二存储节点后,可以调用交互单元读取数据,之后,交互单元并行地与第一存储节点和第二存储节点通信,以获取第一文件的数据和第二文件的数据(后续图5示出了这一方式),也可以并行地调用交互单元读取数据,使得交互单元与第一存储节点、第二存储节点通信,以获取第一文件的数据和第二文件的数据(后续图6示出了这一方式)。

S403、第一存储节点获取第一文件的数据,并向加速装置发送第一文件的数据。

第一存储节点在接收到第一子读请求后,根据第一文件的标识,与存储有第一文件的数据的其他存储节点进行通信,以获取第一文件的数据,并在获取到第一文件的数据后,向加速装置发送该第一文件的数据。

可选的,第一存储节点在获取到第一文件的数据后,还可以对获取到的数据进行完整性校验和正确性校验,并在校验成功后,向加速装置发送该第一文件的数据。

S404、第二存储节点获取第二文件的数据,并向加速装置发送第二文件的数据。

第二存储节点在接收到第二子读请求后,根据第二文件的标识,与存储有第二文件的数据的其他存储节点进行通信,以获取第二文件的数据,并在获取到第二文件的数据后,向加速装置发送该第二文件的数据。

可选的,第二存储节点在获取到第二文件的数据后,还可以对获取到的数据进行完整性校验和正确性校验,并在校验成功后,向加速装置发送该第二文件的数据。

在实际应用中,S403的执行速度取决于第一存储节点的性能,S404的执行速度取决于第二存储节点的性能,因此,本发明实施例对S403和S404顺序不作限定。

S405、加速装置缓存第一文件的数据和第二文件的数据。

具体的,加速装置中的交互单元在接收到第一文件的数据和第二文件的数据后,与缓存单元通信,缓存单元缓存第一文件的数据和第二文件的数据。

S406、加速装置根据顺序信息,将第一文件的数据和第二文件的数据进行排列,得到文件序列的数据,并向客户端发送文件序列的数据。

文件序列中的第一文件和第二文件是按照预设顺序排列的,相应的,加速装置的读取单元在获取到第一文件的数据和第二文件的数据后,也根据该顺序,将第一文件的数据和第二文件的数据进行排列,以保证文件序列的数据的正确性。之后,加速装置中的读取单元向客户端发送文件序列的数据。

结合上述图3,在读取文件序列的数据的过程中,图5示出了加速装置中各个单元之间相互通信的一种流程,图6示出了加速装置中各个单元之间相互通信的另一种流程。不同的是:在图5中,读取单元调用交互单元读取数据,之后,交互单元并行地与第一存储节点和第二存储节点通信,以获取第一文件的数据和第二文件的数据;在图6中,读取单元并行地调用交互单元,使得交互单元与第一存储节点、第二存储节点通信。

可以看出,加速装置并行地与存储系统中的第一存储节点和第二存储节点通信,可以在短时间内获取到第一文件的数据和第二文件的数据,有效地提高了读取文件序列的数据的效率。

进一步可选的,加速装置在向客户端发送文件序列的数据后,还可以回收缓存中第一文件的数据和第二文件的数据,以提高缓存的有效利用率。

结合上述图4,如图7所示,本发明实施例提供的文件读取方法还包括:

S701、加速装置回收缓存中第一文件的数据和第二文件的数据。

可选的,加速装置可以采用下述任一算法回收缓存的第一文件的数据和第二文件的数据:先进先出(first in first out,FIFO)算法、最近最少使用(least recentlyused,LRU)算法、最不常用(least frequently used,LFU)算法。

当然,加速装置还可以采用其他算法回收缓存中第一文件的数据和第二文件的数据,这里不再一一举例。

综上所述,服务器中的加速装置采用并行地方式与存储节点通信,以获取文件序列的数据,有效地减少了文件序列中的多个文件在客户端与服务器之间、服务器与存储系统之间的交互时间,提高了读取效率。

接下来对存储文件序列的数据这一过程进行描述。

图8为本发明实施例提供的一种文件写入方法中写入文件序列的数据的流程示意图。如图8所示,本申请实施例提供的文件写入方法包括如下步骤。

S800、响应于用户的写入操作,客户端向服务器发送第一写请求,用于请求写入文件序列的数据。

客户端在接收到用户输入的用于写入文件序列的操作后,启动写入文件序列的数据的流程,向服务器发送第一写请求,请求写入文件序列的数据。

该文件序列包括第一文件和第二文件,第一文件和第二文件按照预设顺序排列。第一写请求包括文件序列的标识、第一文件的数据和第二文件的数据。

S801、服务器中的加速装置缓存第一文件的数据和第二文件的数据。

具体的,加速装置中的写入单元在接收到第一文件的数据和第二文件的数据后,与缓存单元通信,缓存单元缓存第一文件的数据和第二文件的数据。

S802、响应于第一写请求,服务器中的加速装置确定第一存储节点和第二存储节点。

服务器在接收到第一写请求后,将该第一写请求发送至加速装置,加速装置中的写入单元在接收到第一写请求后,基于存储系统中的负载均衡策略(用于保证存储系统中各个存储节点的负载基本一致),根据文件序列的标识、第一文件的数据和第二文件的数据,确定存储系统中用于存储第一文件的部分数据的第一存储节点和用于存储第二文件的部分数据的第二存储节点。

本发明实施例中第一文件的数据和第二文件的数据采用冗余的方式采用冗余的形式分散存储在多个存储节点中。这里的第一存储节点是存储有第一文件的部分数据的多个存储节点中的任意一个节点,同理,第二存储节点是存储有第二文件的部分数据的多个存储节点中的任意一个节点。

S803、加速装置并行地向第一存储节点发送第一子写请求,以及向第二存储节点发送第二子写请求。

第一子写请求用于请求写入第一文件的数据,第二子写请求用于请求写入第二文件的数据。

第一子写请求包括第一文件的数据,第二子写请求包括第二文件的数据。

加速装置中的写入单元在确定出第一存储节点和第二存储节点后,可以调用交互单元写入数据,之后,交互单元并行地与第一存储节点和第二存储节点通信,以写入第一文件的数据和第二文件的数据(后续图9示出了这一方式),也可以并行地调用交互单元读取数据,使得交互单元与第一存储节点、第二存储节点通信,以写入第一文件的数据和第二文件的数据(后续图10示出了这一方式)。

S804、第一存储节点与其他存储节点通信,存储第一文件的数据,并向加速装置发送第一响应,用于指示已经成功写入第一文件的数据。

第一存储节点在接收到第一子写请求后,基于存储存储系统中的负载均衡策略,确定用于存储第一文件的部分数据的其他存储节点,并与确定出的存储节点通信,以实现第一文件的数据的存储。

第一存储节点在将接收到第一子写请求后,将第一文件的数据划分为N个数据块,并根据N个数据块中的数据,计算M个校验块中的数据,之后,第一存储节点与用于存储第一文件的部分数据的其他存储节点通信,以实现第一文件的数据的存储。

在第一文件的数据写入成功后,第一存储节点向加速装置中的交互单元发送第一响应,用于指示已经写入成功第一文件的数据。

S805、第二存储节点与其他存储节点通信,存储第二文件的数据,并向加速装置发送第二响应,用于指示已经成功写入第二文件的数据。

第二存储节点在接收到第二子写请求后,基于存储存储系统中的负载均衡策略,确定用于存储第二文件的部分数据的其他存储节点,并与确定出的存储节点通信,以实现第二文件的数据的存储。

第二存储节点在将接收到第二子写请求后,将第二文件的数据划分为N'个数据块,并根据N'个数据块中的数据,计算M'个校验块中的数据,之后,第二存储节点与用于存储第二文件的部分数据的其他存储节点通信,以实现第二文件的数据的存储。

在第二文件的数据写入成功后,第二存储节点向加速装置中的交互单元发送第二响应,用于指示已经写入成功第二文件的数据。

S806、在接收到第一响应和第二响应后,加速装置向客户端发送写成功响应。

当然,若第一文件的数据和/或第二文件的数据未写入成功,则加速装置向客户端发送写失败响应。

结合上述图3,在写入文件序列的数据的过程中,图9示出了加速装置中各个单元之间相互通信的一种流程,图10示出了加速装置中各个单元之间相互通信的另一种流程。不同的是:在图9中,写入单元在确定出第一存储节点和第二存储节点后,调用交互单元写入数据,之后,交互单元并行地与第一存储节点和第二存储节点通信,以实现第一文件的数据和第二文件的数据的写入;在图10中,写入单元在确定出第一存储节点和第二存储节点后,并行地调用交互单元,使得交互单元与第一存储节点、第二存储节点通信,以实现第一文件的数据和第二文件的数据的写入。

可以看出,加速装置并行地与存储系统中的第一存储节点和第二存储节点通信,可以在短时间内写入第一文件的数据和第二文件的数据,有效地提高了写入文件序列的数据的效率。

进一步可选的,加速装置在确定第一文件的数据和第二文件的数据均写入成功后,还可以回收缓存中第一文件的数据和第二文件的数据,以提高缓存的有效利用率。

结合上述图8,如图11所示,本发明实施例提供的文件写入方法还包括:

S1101、加速装置回收缓存中第一文件的数据和第二文件的数据。

可选的,加速装置可以采用下述任一算法回收缓存中第一文件的数据和第二文件的数据:先进先出(first in first out,FIFO)算法、最近最少使用(least recentlyused,LRU)算法、最不常用(least frequently used,LFU)算法。

当然,加速装置还可以采用其他算法回收缓存中第一文件的数据和第二文件的数据,这里不再一一举例。

综上所述,服务器中的加速装置采用并行地方式与存储节点通信,以写入文件序列的数据,有效地减少了文件序列中的多个文件在客户端与服务器之间、服务器与存储系统之间的交互时间,提高了写入效率。

对于包括按照顺序依次排列的第一文件、第二文件以及第三文件的文件序列而言,本发明实施例可以采用图8或图11示出的流程并行写入第一文件的数据、第二文件的数据以及第三文件的数据,也可以先并行地写入第一文件的数据和第二文件的数据,后写入第三文件的数据。

下述图12或图13示出的了“先并行地写入第一文件的数据和第二文件的数据,后写入第三文件的数据”的流程。

具体的,如图12所示,本申请实施例提供的文件写入方法包括如下步骤。

S1200、响应于用户的写入操作,客户端向服务器发送第一写请求,用于请求写入文件序列的数据。

该文件序列包括第一文件、第二文件和第三文件,第一文件、第二文件和第三文件按照预设顺序排列,且第三文件为该文件序列中的最后一个文件。

第一写请求包括文件序列的标识、顺序信息、第一文件的数据、第二文件的数据和第三文件的数据。顺序信息用于指示第一文件、第二文件和第三文件的排列顺序。

S1201、服务器中的加速装置缓存第一文件的数据、第二文件的数据和第三文件的数据。

具体的,加速装置中的写入单元在接收到第一文件的数据、第二文件的数据和第三文件的数据后,与缓存单元通信,缓存单元缓存第一文件的数据、第二文件的数据和第三文件的数据。

S1202、响应于第一写请求,服务器中的加速装置确定第一存储节点和第二存储节点。

S1202可以参考上述S802的描述,这里不再赘述。

S1203、加速装置并行地向第一存储节点发送第一子写请求,以及向第二存储节点发送第二子写请求。

S1203可以参考上述S803的描述,这里不再赘述。

S1204、第一存储节点与其他存储节点通信,存储第一文件的数据,并向加速装置发送第一响应,用于指示已经成功写入第一文件的数据。

S1204可以参考上述S804的描述,这里不再赘述。

S1205、第二存储节点与其他存储节点通信,存储第二文件的数据,并向加速装置发送第二响应,用于指示已经成功写入第二文件的数据。

S1205可以参考上述S805的描述,这里不再赘述。

S1206、在接收到第一响应和第二响应后,响应于第一写请求,加速装置确定第三存储节点。

加速装置接收到第一响应和第二响应,说明第一文件的数据和第二文件的数据均写入成功。进一步地,加速装置响应于第一写请求,执行写入第三文件的数据的过程。

加速装置中的写入单元基于存储系统中的负载均衡策略(用于保证存储系统中各个存储节点的负载基本一致),根据文件序列的标识和第三文件的数据,确定存储系统中用于存储第三文件的部分数据的第三存储节点。

本发明实施例中第三文件的数据也采用冗余的方式采用冗余的形式分散存储在多个存储节点中。这里的第三存储节点是存储有第三文件的部分数据的多个存储节点中的任意一个节点。

S1207、加速装置向第三存储节点发送第三子写请求,用于请求写入第三文件的数据。

第三子写请求包括第三文件的数据。

加速装置中的写入单元在确定出第三存储节点后,调用交互单元写入数据,之后,交互单元与第三存储节点通信,以写入第三文件的数据。

S1208、第三存储节点与其他存储节点通信,存储第三文件的数据,并向加速装置发送第三响应,用于指示已经成功写入第三文件的数据。

第三存储节点在接收到第三子写请求后,基于存储存储系统中的负载均衡策略,确定用于存储第三文件的部分数据的其他存储节点,并与确定出的存储节点通信,以实现第三文件的数据的存储。

第三存储节点在将接收到第三子写请求后,将第三文件的数据划分为N”个数据块,并根据N”个数据块中的数据,计算M”个校验块中的数据,之后,第三存储节点与用于存储第三文件的部分数据的其他存储节点通信,以实现第三文件的数据的存储。

在第三文件的数据写入成功后,第三存储节点向加速装置中的交互单元发送第三响应,用于指示已经写入成功第三文件的数据。

S1209、在接收到第三响应后,加速装置向客户端发送写成功响应。

加速装置接收到第三响应则说明文件序列中的所有文件的数据均已经写入成功,这样,加速装置向客户端发送写成功响应,完成写入文件序列的数据这一过程。

进一步可选的,加速装置在确定第一文件的数据、第二文件的数据以及第三文件的数据均写入成功后,还可以回收缓存中第一文件的数据、第二文件的数据以及第三文件的数据,以提高缓存的有效利用率。

如图12所示,本发明实施例提供的文件写入方法还可以包括:

S1210、加速装置回收缓存中第一文件的数据、第二文件的数据和第三文件的数据。

图13示出了“先并行地写入第一文件的数据和第二文件的数据,后写入第三文件的数据”的另一流程。具体的,如图13所示,本申请实施例提供的文件写入方法包括如下步骤。

S1300、响应于用户的写入操作,客户端向服务器发送第一写请求,用于请求写入文件序列中第一文件的数据和第二文件的数据。

该文件序列包括第一文件、第二文件和第三文件,第一文件、第二文件和第三文件按照预设顺序排列,且第三文件为该文件序列中的最后一个文件。

响应于用户的写入操作,客户端先向服务器发送第一写请求,请求写入第一文件的数据和第二文件的数据。该第一写请求包括文件序列的标识、第一文件的数据和第二文件的数据。

S1301、服务器中的加速装置缓存第一文件的数据和第二文件的数据。

具体的,加速装置中的写入单元在接收到第一文件的数据和第二文件的数据后,与缓存单元通信,缓存单元缓存第一文件的数据和第二文件的数据。

S1302、响应于第一写请求,服务器中的加速装置确定第一存储节点和第二存储节点。

S1302可以参考上述S802的描述,这里不再赘述。

S1303、加速装置并行地向第一存储节点发送第一子写请求,以及向第二存储节点发送第二子写请求。

S1303可以参考上述S803的描述,这里不再赘述。

S1304、第一存储节点与其他存储节点通信,存储第一文件的数据,并向加速装置发送第一响应,用于指示已经成功写入第一文件的数据。

S1304可以参考上述S804的描述,这里不再赘述。

S1305、第二存储节点与其他存储节点通信,存储第二文件的数据,并向加速装置发送第二响应,用于指示已经成功写入第二文件的数据。

S1305可以参考上述S805的描述,这里不再赘述。

S1306、在执行S1301~S1303的过程中,客户端向服务器发送第二写请求,用于请求写入文件序列中第三文件的数据。

第二写请求包括文件序列的标识和第三文件的数据。

S1307、服务器中的加速装置缓存第三文件的数据。

S1308、响应于第二写请求,加速装置确定第三存储节点。

加速装置中的写入单元基于存储系统中的负载均衡策略(用于保证存储系统中各个存储节点的负载基本一致),根据文件序列的标识和第三文件的数据,确定存储系统中用于存储第三文件的部分数据的第三存储节点。

本发明实施例中第三文件的数据也采用冗余的方式采用冗余的形式分散存储在多个存储节点中。这里的第三存储节点是存储有第三文件的部分数据的多个存储节点中的任意一个节点。

S1309、加速装置向第三存储节点发送第三子写请求,用于请求写入第三文件的数据。

第三子写请求包括第三文件的数据。

加速装置中的写入单元在确定出第三存储节点后,调用交互单元写入数据,之后,交互单元与第三存储节点通信,以写入第三文件的数据。

S1310、第三存储节点与其他存储节点通信,存储第三文件的数据,并向加速装置发送第三响应,用于指示已经成功写入第三文件的数据。

第三存储节点在接收到第三子写请求后,基于存储存储系统中的负载均衡策略,确定用于存储第三文件的部分数据的其他存储节点,并与确定出的存储节点通信,以实现第三文件的数据的存储。

第三存储节点在将接收到第三子写请求后,将第三文件的数据划分为N”个数据块,并根据N”个数据块中的数据,计算M”个校验块中的数据,之后,第三存储节点与用于存储第三文件的部分数据的其他存储节点通信,以实现第三文件的数据的存储。

在第三文件的数据写入成功后,第三存储节点向加速装置中的交互单元发送第三响应,用于指示已经写入成功第三文件的数据。

S1311、在接收到第一响应、第二响应以及第三响应后,加速装置向客户端发送写成功响应。

加速装置接收到第一响应、第二响应以及第三响应,则说明文件序列中的所有文件均已经写入成功,这样,加速装置向客户端发送写成功响应,完成写入文件序列的数据这一过程。

进一步可选的,加速装置在确定第一文件的数据、第二文件的数据以及第三文件的数据均写入成功后,还可以回收缓存中第一文件的数据、第二文件的数据以及第三文件的数据,以提高缓存的有效利用率。

如图13所示,本发明实施例提供的文件写入方法还可以包括:

S1312、加速装置回收缓存中第一文件的数据、第二文件的数据和第三文件的数据。

综上所述,服务器中的加速装置采用并行地方式与存储节点通信,读取或写入文件序列的数据,有效地减少了文件序列中的多个文件在客户端与服务器之间、服务器与存储系统之间的交互时间,提高了读写效率。

上述主要从方法的角度对本发明实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本发明实施例还提供一种设备,该设备可以是服务器,也可以是服务器中的一部分装置,例如服务器中的芯片系统,可以是存储节点,也可以是存储节点中的一部分装置,例如存储节点中的芯片系统。

如图14所示,该设备包括处理器141,存储器142、通信接口143、总线144。处理器141,存储器142以及通信接口143之间可以通过总线144连接。

处理器141是设备的控制中心,可以是一个通用中央处理单元(centralprocessing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。

作为一个示例,处理器141可以包括一个或多个CPU,例如图14中所示的CPU 0和CPU1。

存储器142可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

一种可能的实现方式中,存储器142可以独立于处理器141存在,即存储器142可以为处理器141外部的存储器。此时,存储器142可以通过总线144与处理器141相连接,用于存储指令或者程序代码。处理器141调用并执行存储器142中存储的指令或程序代码时,能够实现本发明实施例提供的文件读取、写入方法。

另一种可能的实现方式中,存储器142也可以和处理器141集成在一起,即存储器142可以为处理器141的内部存储器。

通信接口143,用于设备与其他设备(如客户端)通过通信网络连接,所述通信网络可以是以太网,无线接入网(radio access network,RAN),无线局域网(wireless localarea networks,WLAN)等。通信接口143可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。

总线144,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

作为一个示例,当上述加速装置通过该设备实现时,上述交互单元所执行的功能可以通过通信接口143实现,上述读取单元、写入单元和缓存回收单元所执行的功能可以通过处理器141调用存储器142中存储的计算机程序来实现,上述缓存单元所执行的功能可以通过存储器142实现。

需要指出的是,图14中示出的结构并不构成对该设备的限定,除图14所示部件之外,该设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行上述方法实施例所示的文件读取方法或文件写入方法。

在本发明的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述方法实施例所示的文件读取方法或文件写入方法。

在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。

计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据终端。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如固态硬盘solid state disk(SSD))等。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何在本发明实施例揭露的技术范围内的变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种文件写入方法和装置以及文件读取方法和装置
  • 一种文件读取、写入方法及装置
技术分类

06120112182000