数据存储方法、装置、设备及介质与流程

文档序号:26004053发布日期:2021-07-23 21:21阅读:102来源:国知局
数据存储方法、装置、设备及介质与流程

本申请涉及计算机领域,具体而言,涉及一种数据存储方法、装置、设备及介质。



背景技术:

为了满足日益增长的数据存储需要,提出了分布式存储方案。在分布式存储方案中,为实现存储系统的高可用,元数据管理节点通常采用主备方式。即是当集群中主节点故障后,可由其他备节点成为新的主节点继续提供服务。

然而,发明人研究发现,在主备节点切换的过程中,元数据管理节点会存在短暂时间的不可用。在这段不可用的时间内,会因为无法继续往存储节点写入数据而出现数据丢失。



技术实现要素:

为了克服现有技术中的至少一个不足,第一方面,本申请实施例提供一种数据存储方法,应用于数据写入设备,所述方法包括:

获取待写入数据;

当检测到从数据管理设备申请存储文件发生异常时,则从预分配存储文件中选取目标文件,其中,所述预分配存储文件申请自所述数据管理设备;

将所述待写入数据以及所述待写入数据的元数据写入目标存储节点,其中,所述元数据记录有所述待写入数据与所述目标文件之间的对应关系。

第二方面,本申请实施例提供一种数据存储方法,应用于目标存储节点,所述方法包括:

接收待写入数据以及所述待写入数据的元数据,其中,所述元数据记录有所述待写入数据与目标文件之间的对应关系,所述目标文件为所述写入设备检测到从数据管理设备申请存储文件发生异常时,从预分配存储文件中选取的,所述预分配存储文件申请自所述数据管理设备;

将所述待写入数据以及所述待写入数据的元数据写入存储介质;

当检测到数据管理设备恢复正常,则将所述待写入数据的元数据发送给所述数据管理设备,所述元数据用于使得所述数据管理设备建立所述待写入数据与所述目标文件之间的对应关系。

第三方面,本申请实施例提供一种数据存储系统,所述数据存储系统包括数据写入设备、目标存储节点以及数据管理设备;

所述数据写入设备获取待写入数据;当检测到从数据管理设备申请存储文件发生异常时,则从预分配存储文件中选取目标文件;将所述待写入数据以及所述待写入数据的元数据写入目标存储节点;其中,所述预分配存储文件申请自所述数据管理设备,所述元数据记录有所述待写入数据与所述目标文件之间的对应关系;

所述目标存储节点接收所述待写入数据以及所述待写入数据的元数据;当检测到数据管理设备恢复正常,则将所述待写入数据的元数据发送给所述数据管理设备;

所述数据管理设备接收所述目标存储节点发送的待写入数据的元数据;根据所述元数据建立所述待写入数据与所述目标文件之间的对应关系。

第四方面,本申请实施例提供一种数据存储装置,应用于数据写入设备,所述数据存储装置包括:

数据获取模块,用于获取待写入数据;

文件分配模块,当检测到从数据管理设备申请存储文件发生异常时,则从预分配存储文件中选取目标文件,其中,所述预分配存储文件申请自所述数据管理设备;

数据发送模块,将所述待写入数据以及所述待写入数据的元数据写入目标存储节点,其中,所述元数据记录有所述待写入数据与所述目标文件之间的对应关系。

第五方面,本申请实施例提供一种数据存储装置,应用于目标存储节点,所述数据存储装置包括:

数据接收模块,接收待写入数据以及所述待写入数据的元数据,其中,所述元数据记录有所述待写入数据与目标文件之间的对应关系;

数据写入模块,将所述待写入数据以及所述待写入数据的元数据写入存储介质;

数据同步模块,用于当检测到数据管理设备恢复正常,则将所述待写入数据的元数据发送给所述数据管理设备,所述元数据用于使得所述数据管理设备建立所述待写入数据与所述目标文件之间的对应关系。

第六方面,本申请实施例提供一种电子设备,所述电子设备包括处理器以及存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述的数据存储方法或者所述的数据存储方法。

第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现所述的数据存储方法或者所述的数据存储方法。

相对于现有技术而言,本申请具有以下有益效果:

本申请实施例提供的数据存储方法、装置、设备及介质中,数据写入设备在获取到待写入数据后,若从数据管理设备获取申请目标存储文件失败,则从预设存储文件中选取目标存储文件,并将记录有待写入数据与目标存储文件对应关系的元数据连同待写入数据一起写入目标存储节点。如此,使得数据管理节点发生异常时,数据写入节点同样能够继续往存储节点中写入数据,避免出现数据丢失的情况发生。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的分布式存储系统结构示意图;

图2为本申请实施例提供的数据写入示意图;

图3为本申请实施例提供的数据存储方法步骤流程示意图之一;

图4为本申请实施例提供的数据存储方法步骤流程示意图之二;

图5为本申请实施例提供的元数据同步示意图;

图6为本申请实施例提供的数据存储装置结构示意图之一;

图7为本申请实施例提供的数据存储装置结构示意图之二;

图8为本申请实施例提供的电子设备结构示意图。

图标:101-数据获取模块;102-文件分配模块;103-数据发送模块;201-数据接收模块;202-数据写入模块;203-数据同步模块;304-通信装置;303-处理器;302-存储器。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

本申请实施例涉及计算机领域的分布式存储场景,为了便于阐述本申请实施例提供的技术方案,下面先介绍分布式存储场景下所涉及的设备以及各设备的作用。

本申请实施例提供一种分布式存储场景的示意图,如图1所示,分布式存储场景下,包括数据写入设备、数据管理设备以及数据存储节点。数据写入设备、数据管理设备以及数据存储节点之间可以通过网络建立通信连接。

其中,数据写入设备,用于获取待写入数据,该待写入数据可以是,但不限于,图片、音频以及视频。并且,该数据写入设备在不同的场景下,可以是不同的设备。例如,在视频监控场景下,该数据写入设备可以是网络摄像头;在直播场景下,该数据写入设备可以是用于直播的移动终端。

数据存储节点,用于将待写入数据落盘到数据存储节点配置的存储介质中。其中,数据存储节点的数量可以是多个(节点1、节点2、节点n),数据存储节点配置的存储介质可以是磁盘,还可以是固态硬盘,本申请实施例不对此做具体的限定。

数据管理设备,用于统筹管理需要写入到数据存储节点中的数据以及已写入到数据存储节点中的所有数据。例如,数据管理节点记录有已写入存储节点中数据的索引信息、文件大小等。

为了提高分布式存储场景下的系统可靠性,通常会为数据管理设备提供主设备以及从设备,当主设备发生异常时,则切换至从设备,将其作为新的主设备继续提供服务。

如图2所示,数据写入设备在将待写入数据存储到数据存储节点之前,需要向数据管理设备发起申请,使得数据管理设备为待写入数据分配目标存储文件;并将数据存储节点作为候选存储节点,从中确定出目标存储节点,用于存储该待写入数据。

值得说明的是,在分布式存储场景下,完整的数据文件会被拆分成不同的数据片段,存储在分配的数据存储节点中;而用户是无法感知这一过程。在将数据写入后,则会为用户提供数据文件的文件标识,用于表示该数据文件。

然而,在主设备与从设备切换的过程中,该数据管理节点是无法为数据写入节点提供服务的,因此,若数据写入设备获取了大量的待写入数据,而数据写入设备的数据缓存区域不够用时,则会出现数据丢失。

鉴于此,本申请实施例提供一种应用于数据写入设备的数据存储方法,通过预分配存储文件的方式,克服在主备切换期间数据写入设备无法进行数据写入的弊端。

下面结合图3所示的数据存储方法的步骤流程示意图,对各步骤进行详细阐述。如图3所示,该数据存储方法包括:

步骤s101a,获取待写入数据。

该待写入数据可以是,但不限于,图片、音频以及视频。本申请实施例不做具体的限定。

步骤s102a,当检测到从数据管理设备申请存储文件发生异常时,则从预分配存储文件中选取目标文件。

其中,预分配存储文件申请自数据管理设备,即数据管理设备在未发生异常时为数据写入设备预先分配指定数量的存储文件。本申请实施例中,该预分配存储文件的数量,可以根据数据写入设备获取待写入数据的速度以及数据存储节点的写入性能进行适应性调整。

示例性的,假定数据存储节点的写入性能为300mb/s,数据写入设备获取待写入数据的速度为2mb/s,则可以将预设存储文件的数量设定为4000。

此外,该数据管理设备在检测到数据写入设备剩余存储文件的数量少于4000时,则再次为数据写入设备分配新的存储文件,使得存储文件的总量达到4000。

此外,还需要说明的是,若待写入数据写入的目标存储文件为数据管理设备发生异常之前所使用的存储文件,则数据写入设备不需要向数据管理设备申请新的目标存储文件,也不需要从预分配存储文件中选取目标存储文件。可以理解为,只有在待写入数据需要写入新的目标文件时,才需要向数据管理设备进行申请。

步骤s103a,将待写入数据以及待写入数据的元数据写入目标存储节点。

其中,元数据记录有待写入数据与目标文件之间的对应关系。本申请实施例中,若数据管理设备未发生异常,则数据管理节点会为待写入数据分配目标存储节点以及目标存储文件,即此时的数据管理设备知道待写入数据所写入的目标文件。

因此,为了让数据管理节点恢复正常后,知道待写入数据所属的目标存储文件;该数据写入设备将待写入数据的元数据连同待写入数据一同发送给目标存储节点。

此外,相较于数据管理设备正常时,目标存储节点所接收的待写入数据;在数据管理节点发生异常时,目标存储节点接收到的数据中包括待写入数据以及待写书数据的元数据,该目标存储节点则根据该特征为待写入数据配置状态标识,用于指示该待写入数据的元数据需要同步至数据管理节点。

由此,本申请实施例中,数据写入设备在获取到待写入数据后,若难以从数据管理设备获取申请到目标存储文件,则从预设存储文件中选取目标存储文件,并将记录有待写入数据与目标存储文件对应关系的元数据连同待写入数据一起写入目标存储节点。如此,使得数据管理节点发生异常时,数据写入节点同样能够继续往存储节点中写入数据,避免出现数据丢失的情况发生。

此外,该待写入数据的元数据记录有待写入数据的索引信息以及目标存储文件的索引信息。其中,待写入数据的索引信息包括待写入数据写入的目标存储节点的节点标识等;目标存储文件的索引信息包括目标存储文件的文件标识、文件路径、文件大小等。

考虑到数据管理设备在发生异常后,同样不能为待写入数据分配目标存储节点。因此,本申请实施例提供多种方式,用于在数据管理设备在发生异常后为待写入数据确定目标存储节点。

在一种实施方式中,该数据写入设备从候选存储节点中确定出预设存储节点;将预设存储节点作为目标存储节点;将待写入数据以及待写入数据的元数据写入目标存储节点。

可以理解为,事先预备一些特定的存储节点,用于在数据管理设备发生异常后,作为目标存储节点。

在另一实施方式中,数据写入设备从候选存储节点中选取预设时段内使用过的历史存储节点;将历史存储节点作为目标存储节点;将待写入数据以及待写入数据的元数据写入目标存储节点。

示例性的,数据写入设备维护有映射表,该映射表用于记录根目录与纠删码(erasurecoding,ec)的映射关系。本申请实施例中将该映射表称为rootec-hash,并且,一根目录对应一个存储文件。

其中,该根目录中记录有根目录信息、ec信息、数据片段信息;数据片段信息表示将完整的数据文件拆分成的片段后,数据片段与存储节点的对应关系。

因此,该数据写入设备可以将目录名作为key,从根目录获得数据管理设备发生异常之前,最后一次分配的目标存储节点,将其作为本次待写入数据的目标存储节点。

同理,数据写入设备维护一个线程与数据片段信息的映射表,并以线程id作为key。申请实施例中将数据片段称为object,将该映射表称为threadobj-hash。

当数据写入设备向元数据管理设备申请目标存储文件失败时,则通过线程id获取到上一次所写入的数据片段信息,如果此次写入的根目录与上一次相同,则直接复用上次分配的目标存储文件,而不使用预分配存储文件。

基于图1所示的分布式存储场景的示意图,本申请实施例还提供一种应用于目标存储节点的数据存储方法。下面结合图4所示的步骤流程图对各步骤进行详细阐述,如图4所示,该数据存储方法包括:

步骤s101b,接收待写入数据以及待写入数据的元数据。

其中,元数据记录有待写入数据与目标文件之间的对应关系,目标文件为写入设备检测到从数据管理设备申请存储文件发生异常时,从预分配存储文件中选取的,预分配存储文件申请自数据管理设备。

步骤s102b,将待写入数据以及待写入数据的元数据写入存储介质。

步骤s103b,当检测到数据管理设备恢复正常,则将待写入数据的元数据发送给数据管理设备。

其中,元数据用于使得数据管理设备建立待写入数据与目标文件之间的对应关系。

正如在对数写入设备所执行数据存储方法进行描述时,提及了为了让数据管理节点恢复正常后,知道待写入数据所属的目标存储文件;该数据写入设备将待写入数据的元数据连同待写入数据一同发送给目标存储节点。

该目标存储节点可以每间隔预设时长,或者在目标存储节点重启后,将配置有状态标识的数据对应的元数据发送给数据管理设备,使得数据管理设备进行同步。

示例性的,如图5所示,数据存储节点将待写入数据的元数据发送给数据管理设备,使得数据管理设备建立待写入数据与目标文件之间的对应关系。例如,数据管理设备可以将待写入数据与目标文件之间的对应关系记录到redis数据库中。

基于上述对数据写入设备与目标存储设备的描述,本申请实施例还提供一种数据存储系统,数据存储系统包括数据写入设备、目标存储节点以及数据管理设备。

数据写入设备获取待写入数据;当检测到从数据管理设备申请存储文件发生异常时,则从预分配存储文件中选取目标文件;将待写入数据以及待写入数据的元数据写入目标存储节点。

其中,预分配存储文件申请自数据管理设备,元数据记录有待写入数据与目标文件之间的对应关系。

目标存储节点接收待写入数据以及待写入数据的元数据;当检测到数据管理设备恢复正常,则将待写入数据的元数据发送给数据管理设备。

数据管理设备接收目标存储节点发送的待写入数据的元数据;根据元数据建立待写入数据与目标文件之间的对应关系。

基于与数据写入设备所执行数据存储方法相同的发明构思,本申请实施例还提一种数据存储装置,应用于数据写入设备。该数据存储装置包括至少一个可以软件形式存储于存储器中的功能模块。如图6所示,从功能上划分,数据存储装置包括:

数据获取模块101,用于获取待写入数据。

本申请实施例中,该数据获取模块101用于实现图3中的步骤s101a,关于该数据获取模块101的详细描述,可以参见步骤s101a的详细描述。

文件分配模块102,当检测到从数据管理设备申请存储文件发生异常时,则从预分配存储文件中选取目标文件,其中,预分配存储文件申请自数据管理设备。

本申请实施例中,该文件分配模块102用于实现图3中的步骤s102a,关于该文件分配模块102的详细描述,可以参见步骤s102a的详细描述。

数据发送模块103,将待写入数据以及待写入数据的元数据写入目标存储节点,其中,元数据记录有待写入数据与目标文件之间的对应关系。

本申请实施例中,该数据发送模块103用于实现图3中的步骤s103a,关于该数据发送模块103的详细描述,可以参见步骤s103a的详细描述。

此外,值得说明的是,该应用于数据写入设备的数据存储装置还可以包括其他功能模块,用于实现对应数据存储方法的其他步骤,或者子步骤。数据获取模块101、文件分配模块102以及数据发送模块103同样可以用于实现对应数据存储方法的其他步骤,或者子步骤。本申请实施不对此做具体的限定。

基于与目标存储设备所执行数据存储方法相同的发明构思,本申请实施例还提供一种数据存储装置,应用于目标存储节点。该数据存储装置包括至少一个可以软件形式存储于存储器中的功能模块。如图7所示,数据存储装置包括:

数据接收模块201,接收待写入数据以及待写入数据的元数据,其中,元数据记录有待写入数据与目标文件之间的对应关系。

本申请实施例中,该数据接收模块201用于实现图4中的步骤s101b,关于该数据接收模块201的详细描述,可以参见步骤s101b的详细描述。

数据写入模块202,将待写入数据以及待写入数据的元数据写入存储介质。

本申请实施例中,该数据写入模块202用于实现图4中的步骤s102b,关于该数据写入模块202的详细描述,可以参见步骤s102b的详细描述。

数据同步模块203,用于当检测到数据管理设备恢复正常,则将待写入数据的元数据发送给数据管理设备,元数据用于使得数据管理设备建立待写入数据与目标文件之间的对应关系。

本申请实施例中,该数据同步模块203用于实现图4中的步骤s103b,关于该数据同步模块203的详细描述,可以参见步骤s103b的详细描述。

此外,值得说明的是,该应用于目标存储设备的数据存储装置还可以包括其他功能模块,用于实现对应数据存储方法的其他步骤,或者子步骤。数据接收模块201、数据写入模块202以及数据同步模块203同样可以用于实现对应数据存储方法的其他步骤,或者子步骤。本申请实施不对此做具体的限定。

本申请实施还提供了一种电子设备,电子设备包括处理器以及存储器,存储器存储有计算机程序。

如图8所示,该电子设备包括存储器302、通信装置304、处理器303。

该存储器302、处理器303以及通信装置304各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

其中,该存储器302可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器302用于存储程序,该通信装置304在接收到执行指令后,执行该程序。该通信装置304用于通过网络发数据。

该处理器303可能是一种集成电路芯片,具有信号的处理能力。上述的处理器303可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器303可以是微处理器或者该处理器303也可以是任何常规的处理器等。

当该电子设备为数据写入设备时,计算机程序被处理器303执行时,实现数据写入设备执行的数据存储方法;当该电子设备为目标存储设备时,计算机程序被处理器303执行时,实现目标存储设备执行的数据存储方法。

本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时,实现数据写入设备执行的数据存储方法或者目标存储设备执行的数据存储方法。

综上所述,本申请实施例提供的数据存储方法、装置、设备及介质中,数据写入设备在获取到待写入数据后,若从数据管理设备获取申请目标存储文件失败,则从预设存储文件中选取目标存储文件,并将记录有待写入数据与目标存储文件对应关系的元数据连同待写入数据一起写入目标存储节点。如此,使得数据管理节点发生异常时,数据写入节点同样能够继续往存储节点中写入数据,避免出现数据丢失的情况发生。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1