对象数据的处理方法、装置及设备与流程

文档序号:26101290发布日期:2021-07-30 18:12阅读:76来源:国知局
对象数据的处理方法、装置及设备与流程

本申请涉及存储技术领域,尤其涉及一种对象数据的处理方法、装置及设备。



背景技术:

分布式存储系统中,通常采用基于对象的存储(简称对象存储)技术。对象存储是一种将数据作为对象进行管理的数据存储技术。

分布式存储系统包括多个存储服务器。存储服务器的存储空间被划分为多个存储单元,这些存储单元称为存储桶(bucket)。存储桶是用于存储对象的容器。基于存储桶的存储方式要求以存储桶为单位对对象进行管理。因此,通常每个存储桶只存储一个对象的数据。

然而,当存储的对象为小对象(即,对象的数据量远小于存储桶的容量大小)时,使得存储空间的利用率较低。



技术实现要素:

本申请提供一种对象数据的处理方法、装置及设备,以提高存储空间的利用率。

第一方面,本申请提供一种对象数据的处理方法,应用于网关设备,所述方法包括:

从客户端设备接收待存储的对象数据,所述对象数据具有第一生命周期;

根据所述对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,并向所述存储服务器发送所述对象数据以及所述目标存储桶的标识,以使所述存储服务器将所述对象数据存储到所述目标存储桶中;

其中,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据。

一种可能的实现方式中,从客户端设备接收待存储的对象数据之后,还包括:

将所述对象数据存储到所述网关设备的存储器中;

根据所述对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,并向所述存储服务器发送所述对象数据以及所述目标存储桶的标识,包括:

若所述存储器存储的数据量满足预设条件,则针对所述存储器存储的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶,并向所述存储服务器发送所述第一对象数据以及所述目标存储桶的标识。

一种可能的实现方式中,所述存储器为固态硬盘ssd存储器,所述ssd存储器包括多个存储块;将所述对象数据存储到所述网关设备的存储器中,包括:

确定所述ssd存储器的当前存储块,所述当前存储块中存储的对象数据未被存储到所述存储服务器;

将所述对象数据存储到所述当前存储块中;

若所述存储器存储的数据量满足预设条件,则针对所述存储器存储的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶,并向所述存储服务器发送所述第一对象数据以及所述目标存储桶的标识,包括:

若所述当前存储块中剩余存储空间小于或者等于预设阈值,则针对所述当前存储块中的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶,并向所述存储服务器发送所述第一对象数据以及所述目标存储桶的标识。

一种可能的实现方式中,将所述对象数据存储到所述当前存储块中之后,还包括:

生成并存储所述对象数据对应的第一索引信息,所述第一索引信息用于指示所述对象数据在所述ssd存储器中的存储位置;

向所述存储服务器发送所述第一对象数据以及所述目标存储桶的标识之后,还包括:

从所述存储服务器接收所述第一对象数据在所述存储服务器中的存储位置;

生成并存储所述第一对象数据对应的第二索引信息,所述第二索引信息用于指示所述第一对象数据在所述存储服务器中的存储位置。

一种可能的实现方式中,所述方法还包括:

若第二对象数据的生命周期到期,则将所述第二对象数据对应的第一索引信息和第二索引信息删除,所述第二对象数据为所述网关设备和/或所述存储服务器存储的任意对象数据。

一种可能的实现方式中,所述方法还包括:

在所述当前存储块中存储的所有对象数据均已存储至所述存储服务器之后,将所述当前存储块标记为可擦除;

在所述ssd存储器满足预设擦除条件时,根据所述标记对所述当前存储块进行擦除,并将所述当前存储块中的各对象数据对应的第一索引信息删除。

一种可能的实现方式中,所述方法还包括:

从客户端设备接收第一读取请求,所述第一读取请求用于请求读取目标对象数据;

若所述网关设备存储有所述目标对象数据对应的第一索引信息,则根据所述第一索引信息,从所述ssd存储器中读取所述目标对象数据;

若所述网关设备未存储所述目标对象数据对应的第一索引信息,则向所述存储服务器发送第二读取请求,并从所述存储服务器接收所述目标对象数据;其中,所述第二读取请求包括所述目标对象数据对应的第二索引信息。

第二方面,本申请提供一种对象数据的处理方法,应用于存储服务器,所述方法包括:

从网关设备接收对象数据以及目标存储桶的标识,所述对象数据为所述网关设备从客户端设备接收到的待存储的对象数据,所述对象数据具有第一生命周期;

将所述对象数据存储到所述目标存储桶中;

其中,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据。

一种可能的实现方式中,所述方法还包括:

若第一存储桶中的对象数据的生命周期到期,则将所述第一存储桶中的对象数据删除;其中,所述第一存储桶为所述存储服务器中的任意存储桶。

一种可能的实现方式中,将所述对象数据存储到所述目标存储桶中之后,还包括:

向所述网关设备发送所述对象数据在所述存储服务器中的存储位置,以使所述网关设备生成并存储所述对象数据对应的第二索引信息,所述第二索引信息用于指示所述对象数据在所述存储服务器的存储位置。

一种可能的实现方式中,所述方法还包括:

从所述网关设备接收第二读取请求,所述第二读取请求包括目标对象数据对应的第二索引信息,所述第二读取请求是所述网关设备在确定未存储有所述目标对象数据对应的第一索引信息的情况下发送的;

根据所述目标对象数据对应的第二索引信息,获取所述目标对象数据;

向所述网关设备发送所述目标对象数据。

第三方面,本申请提供一种对象数据的处理装置,应用于网关设备,所述装置包括:

接收模块,用于从客户端接收待存储的对象数据,所述对象数据具有第一生命周期;

处理模块,用于根据所述对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,其中,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据;

发送模块,用于向所述存储服务器发送所述对象数据以及所述目标存储桶的标识,以使所述存储服务器将所述对象数据存储到所述目标存储桶中。

一种可能的实现方式中,所述处理模块还用于将所述对象数据存储到所述网关设备的存储器中;

所述处理模块具体用于,若所述存储器存储的数据量满足预设条件,则针对所述存储器存储的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶;

所述发送模块具体用于,向所述存储服务器发送所述第一对象数据以及所述目标存储桶的标识。

一种可能的实现方式中,所述存储器为固态硬盘ssd存储器,所述ssd存储器包括多个存储块;所述处理模块具体用于:

确定所述ssd存储器的当前存储块,所述当前存储块中存储的对象数据未被存储到所述存储服务器;

将所述对象数据存储到所述当前存储块中;

若所述当前存储块中剩余存储空间小于或者等于预设阈值,则针对所述当前存储块中的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶。

一种可能的实现方式中,所述处理模块还用于,在将所述对象数据存储到所述当前存储块中之后,生成并存储所述对象数据对应的第一索引信息,所述第一索引信息用于指示所述对象数据在所述ssd存储器中的存储位置;

所述接收模块还用于,从所述存储服务器接收所述第一对象数据在所述存储服务器中的存储位置;

所述处理模块还用于,生成并存储所述第一对象数据对应的第二索引信息,所述第二索引信息用于指示所述第一对象数据在所述存储服务器中的存储位置。

一种可能的实现方式中,所述处理模块还用于,若第二对象数据的生命周期到期,则将所述第二对象数据对应的第一索引信息和第二索引信息删除,所述第二对象数据为所述网关设备和/或所述存储服务器存储的任意对象数据。

一种可能的实现方式中,所述处理模块还用于:

在所述当前存储块中存储的所有对象数据均已存储至所述存储服务器之后,将所述当前存储块标记为可擦除;

在所述ssd存储器满足预设擦除条件时,根据所述标记对所述当前存储块进行擦除,并将所述当前存储块中的各对象数据对应的第一索引信息删除。

一种可能的实现方式中,所述接收模块还用于,从客户端设备接收第一读取请求,所述第一读取请求用于请求读取目标对象数据;

所述处理模块还用于,若所述网关设备存储有所述目标对象数据对应的第一索引信息,则根据所述第一索引信息,从所述ssd存储器中读取所述目标对象数据;

所述发送模块还用于,若所述网关设备未存储所述目标对象数据对应的第一索引信息,则向所述存储服务器发送第二读取请求;其中,所述第二读取请求包括所述目标对象数据对应的第二索引信息;

所述接收模块还用于,从所述存储服务器接收所述目标对象数据。

第四方面,本申请提供一种对象数据的处理装置,应用于存储服务器,所述装置包括:

接收模块,用于从网关设备接收对象数据以及目标存储桶的标识,所述对象数据为所述网关设备从客户端设备接收到的待存储的对象数据,所述对象数据具有第一生命周期;

处理模块,用于将所述对象数据存储到所述目标存储桶中;

其中,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据。

一种可能的实现方式中,所述处理模块还用于,若第一存储桶中的对象数据的生命周期到期,则将所述第一存储桶中的对象数据删除;其中,所述第一存储桶为所述存储服务器中的任意存储桶。

一种可能的实现方式中,所述装置还包括:发送模块;

所述发送模块,用于向所述网关设备发送所述对象数据在所述存储服务器中的存储位置,以使所述网关设备生成并存储所述对象数据对应的第二索引信息,所述第二索引信息用于指示所述对象数据在所述存储服务器的存储位置。

一种可能的实现方式中,所述接收模块还用于,从所述网关设备接收第二读取请求,所述第二读取请求包括目标对象数据对应的第二索引信息,所述第二读取请求是所述网关设备在确定未存储有所述目标对象数据对应的第一索引信息的情况下发送的;

所述处理模块还用于,根据所述目标对象数据对应的第二索引信息,获取所述目标对象数据;

所述发送模块还用于,向所述网关设备发送所述目标对象数据。

第五方面,本申请提供一种电子设备,包括:存储器和处理器,所述存储器中存储有计算机程序,所述处理器运行所述计算机程序执行如第一方面任一项所述的方法,或者,执行如第二方面任一项所述的方法。

第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法,或者,实现如第二方面任一项所述的方法。

第七方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法,或者,实现如第二方面任一项所述的方法。

本申请提供的对象数据的处理方法、装置及设备,该方法包括:网关设备从客户端设备接收待存储的对象数据,该对象数据具有第一生命周期,网关设备根据该对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,其中,目标存储桶是用于存储具有第一生命周期的多个对象数据的存储桶。网关设备向存储服务器发送该对象数据以及目标存储桶的标识,使得存储服务器将该对象数据存储到目标存储桶中。通过上述过程,实现了多个对象数据复用同一存储桶,解决了存储空间利用率低的问题。由于存储桶中存储的是具有相同生命周期的多个对象数据,因此,便于对这些对象数据进行生命周期管理;当存储桶中对象数据的生命周期到期后,可以删除存储桶中的所有对象数据,使得存储桶的存储空间可以被立即释放,并用于存储新的对象数据,提升存储空间的复用能力。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a为存储服务器的存储空间的示意图;

图1b为存储桶复用的示意图;

图2为本申请提供的一种分布式存储系统架构的示意图;

图3为本申请提供的一种对象数据的处理方法的流程示意图;

图4为本申请提供的另一种对象数据的处理方法的流程示意图;

图5为本申请提供的对象数据归档转存的示意图;

图6为本申请提供的再一种对象数据的处理方法的流程示意图;

图7为本申请提供的又一种对象数据的处理方法的流程示意图;

图8为本申请提供的一种对象数据的处理装置的结构示意图;

图9为本申请提供的另一种对象数据的处理装置的结构示意图;

图10为本申请提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在分布式存储中,对象存储有利于简化数据存储。对象存储将数据作为对象进行管理,为每个对象分配一个唯一标识。用户只需要利用该唯一标识即可检索该对象,而不必知道该对象实际存储的物理地址。

存储服务器的存储空间被划分为多个存储单元,这些存储单元被称为存储桶(bucket)。图1a为存储服务器的存储空间的示意图。如图1a所示,存储服务器的存储空间被划分为多个存储桶,每个存储桶的容量大小为1mb。需要说明的是,图1a所示的存储桶的容量大小仅为示意。实际应用中,存储桶的容量大小可以为其他值,例如:10mb、64mb、128mb等,并且不同存储桶的大小可以相同,也可以不同。

存储桶是用于存储对象的容器。基于存储桶的存储方式,要求以存储桶为单位对对象进行管理。例如,以存储桶为单位写入对象、读取对象、删除对象等。因此,如图1a所示,通常每个存储桶中只存储一个对象。

然而,用户单个对象的数据量大小波动较大。当一个对象的数据量很小(例如,远小于存储桶的容量大小时)时,单个很小的对象就占用一个存储桶,导致存储空间利用率较低。

一种相关技术中,可以采用存储桶复用的方式来解决小对象导致的存储空间利用率低的问题。图1b为存储桶复用的示意图。如图1b所示,存储桶复用是指在一个存储桶中存储多个对象的数据,例如,图1b示例了在存储桶1中存储对象1、对象2、对象3等多个对象的数据。

下面结合一个举例对相关技术中实现存储桶复用的具体实现方式进行举例说明。

假设一个存储桶的容量大小为1mb。在对象写入流程中,存储服务器从客户端设备接收到待写入的对象1(假设对象1的大小为0.5mb)时,需要先在对象1后面填充0使其大小扩充为1mb,然后将扩充后的对象1写入存储桶中。并且,在对象1的索引信息中记录对象1在存储桶中的起始位置和偏移信息。当存储服务器从客户端设备接收到待写入的对象2(假设对象2的大小为0.5mb)时,需要从存储桶中读取对象1,根据对象1的偏移信息,确定对象2的起始位置,然后将对象2拼接在对象1后面,将拼接后的对象写入到存储桶中。类似的,在对象2的索引信息中记录对象2在存储桶中的起始位置和偏移信息。

根据上述举例可见,上述的对象写入流程复杂,一些场景中,用户需要对写入的数据进行立即读取,若采用上述相关技术,可能存在用户写入对象数据后无法立即读取的问题。

另外,上述相关技术中,存储桶中存储的多个对象数据的生命周期可能不同,因此,可能存在一部分对象数据的生命周期到期,而另一部分对象数据的生命周期未到期的情况,使得对象数据的生命周期管理难度较大。即使其中一部分对象数据的生命周期到期被删除,由于该存储桶中还存在未到期的对象数据,该存储桶的空间也不能真正被释放,导致该存储桶中存在空洞,加大了存储桶空间复用的难度。

上述相关技术虽然提高了存储空间利用率,但是不可避免的带来了读写性能差、生命周期管理难度大、存储桶空间复用难度大的问题。因此,上述相关技术无法满足高并发读写、数据生命周期管理严格等应用场景的需求。

本申请提供的对象数据的处理方法、装置及设备,旨在解决上述技术问题中的至少一个。下面先对本申请实施例所涉及的系统架构进行说明。

图2为本申请提供的一种分布式存储系统架构的示意图。如图2所示,分布式存储系统中包括:网关设备以及存储服务器。应理解,网关设备的数量可以为一个或者多个。存储服务器的数量可以为一个或者多个。当网关设备或者存储服务器的数量为多个时,还可以采用集群架构。

其中,存储服务器采用基于存储桶的存储方式,即,每个存储服务器的存储空间被划分为多个存储桶。每个存储桶用于存储具有相同生命周期的多个对象数据。

基于图2所示的系统架构,用户通过客户端设备请求写入某个对象数据,该对象数据具有第一生命周期。网关设备从客户端设备接收到该对象数据后,根据该对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,其中,目标存储桶是用于存储具有第一生命周期的多个对象数据的存储桶。网关设备向存储服务器发送该对象数据以及目标存储桶的标识,使得存储服务器将该对象数据存储到目标存储桶中。这样,实现了多个对象数据复用同一存储桶,解决了存储空间利用率低的问题。由于存储桶中存储的是具有相同生命周期的多个对象数据,因此,便于对这些对象数据的生命周期管理,当存储桶中对象数据的生命周期到期后,可以对存储桶中的所有对象数据删除,使得存储桶的存储空间可以被立即释放,并用于存储新的对象数据,提升存储空间的复用能力。

需要说明的是,本实施例的分布式存储系统可以应用于多种业务场景中。例如,可以应用于云存储系统,还可以应用于采用分布式架构进行数据存储的视频系统,等。针对不同的业务场景,对象数据的形式可能不同,例如,对象数据可以为图片、视频、音频、文档等数据。

下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图3为本申请提供的一种对象数据的处理方法的流程示意图。如图3所示,本实施例的方法包括:

s301:客户端设备向网关设备发送待存储的对象数据,所述对象数据具有第一生命周期。

相应的,网关设备从客户端设备接收待存储的对象数据。

本实施例中,待存储的对象数据具有第一生命周期。对象数据的生命周期指示的是该对象数据应当存储的时长。例如,某个对象数据的生命周期为1年、10天,或者,24小时,等。当对象数据的生命周期到期后,需要停止对象数据的存储,即删除该对象数据。

需要说明的是,本申请实施例对于对象数据的生命周期的指示方式不作限定。一些示例中,对象数据的生命周期可以由用户指定。例如,用户通过客户端设备请求存储对象数据时,可以指定该对象数据的生命周期。另一些示例中,对象数据的生命周期还可以取决于用户所属的类型或者对象数据所属的类型等。

s302:网关设备根据所述对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据。

本实施例中,存储服务器的存储空间被划分为多个存储桶。每个存储桶用于存储具有相同生命周期的多个对象数据。其中,“具有相同生命周期的多个对象数据”指的是该多个对象数据的生命周期同时到期。例如,对象1和对象2均是在2020年1月1日到期,则对象1和对象2具有相同的生命周期。换句话说,每个存储桶用于存储生命周期同时到期的多个对象数据。

当网关设备从客户端设备接收到待存储的对象数据后,可以根据该对象数据的生命周期,确定该对象数据应当存储到哪个存储桶中。具体的,假设该对象数据具有第一生命周期,则从存储服务器的多个存储桶中,将用于存储具有第一生命周期的对象数据的存储桶作为目标存储桶。

举例说明,假设存储服务器的存储桶1中存储的是2020年1月1日到期的对象数据,存储桶2中存储的是2020年1月2日到期的对象数据,存储桶3中存储的是2020年1月3日到期的对象数据。

网关设备接收到某个对象数据,若该对象数据的生命周期为2020年1月2日到期,则确定该对象数据应当存储到存储桶2中,也就是说,将存储桶2确定为目标存储桶。若该对象数据的生命周期为2020年1月4日到期,由于该对象数据的生命周期与存储桶1、存储桶2、存储桶3中的生命周期均不同,因此,可以将存储桶4(假设存储桶4中目前未存储对象数据)作为目标存储桶。这样,后续接收到生命周期为2020年1月4日的对象数据,也将被存储到存储桶4中。

一些可能的实现方式中,网关设备从存储服务器的多个存储桶中确定目标存储桶之后,还可以包括:网关设备获取该目标存储桶的剩余存储空间,若所述剩余存储空间小于或者等于预设阈值,则向存储服务器发送扩容指令,以指示存储服务器对目标存储桶的容量进行扩容。通过对目标存储桶的容量进行扩容,避免目标存储桶的剩余存储空间不足导致对象数据存储失败的问题。

s303:网关设备向所述存储服务器发送所述对象数据以及所述目标存储桶的标识。

s304:存储服务器将所述对象数据存储到所述目标存储桶中。

应理解,上述s301至s304描述的是一个对象数据的存储过程。通过上述存储过程,网关设备实现了根据对象数据的生命周期对对象数据进行归档存储的功能。当采用本实施例的方法存储多个对象数据之后,存储服务器的每个存储桶中存储的是具有相同生命周期的多个对象数据。

本实施例提供的对象数据的处理方法,包括:网关设备从客户端设备接收待存储的对象数据,该对象数据具有第一生命周期,网关设备根据该对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,其中,目标存储桶是用于存储具有第一生命周期的多个对象数据的存储桶。网关设备向存储服务器发送该对象数据以及目标存储桶的标识,使得存储服务器将该对象数据存储到目标存储桶中。通过上述过程,实现了多个对象数据复用同一存储桶,解决了存储空间利用率低的问题。由于存储桶中存储的是具有相同生命周期的多个对象数据,因此,便于对这些对象数据进行生命周期管理;当存储桶中对象数据的生命周期到期后,可以删除存储桶中的所有对象数据,使得存储桶的存储空间可以被立即释放,并用于存储新的对象数据,提升存储空间的复用能力。

需要特别说明的是,本实施例的存储桶用于持久化存储对象数据,直到对象数据到期才会删除。由于存储桶中的多个对象数据的生命周期相同,因此存储桶中的对象数据是同时到期的,使得存储桶中的所有对象数据可以同时被删除,并释放存储桶的整个存储空间,而不会像前述相关技术那样存在空洞的问题(相关技术的存储桶中存在一部分对象数据到期,而另一部分对象数据没有到期,当删除到期的对象数据后,使得存储桶中存在空洞,存储桶的存储空间无法完全复用),因此,本申请方案提升了存储空间的复用能力。

在上述实施例的基础上,下面再结合图5至图6对本申请方案进行更详细的描述。

图4为本申请提供的另一种对象数据的处理方法的流程示意图。如图4所示,本实施例的方法包括:

s401:客户端设备向网关设备发送待存储的对象数据,该对象数据具有生命周期。

相应的,网关设备从客户端设备接收待存储的对象数据。

s402:网关设备将对象数据存储到网关设备的存储器中。

本实施例中,网关设备具有对对象数据进行暂存的功能。这里的暂存是指暂时性的存储。也就是说,网关设备从客户端设备接收到对象数据后,先将对象数据暂存到本地,然后,再将暂存的对象数据转存到存储服务器。当对象数据被转存到存储服务器后,网关设备可以在适当的时机将暂存的对象数据删除。应理解,由于对象数据最终是要持久化存储到存储服务器中,因此,本实施例中将网关设备对对象数据的存储称为暂存。暂存也可以称为缓存。

具体的,网关设备包括存储器,网关设备从客户端设备接收到待存储的对象数据后,先将对象数据存储到本地的存储器中。

可选的,所述存储器可以是主存储器(也可以称为内存储器,或者内存)或者辅助存储器(外存储器)。当存储器为辅助存储器时,可以避免暂存的对象数据占用网关设备的大量内存,降低网关设备内存不足的风险。

可选的,所述存储器还可以是非永久记忆的存储器或者永久记忆的存储器。当存储器为永久记忆的存储器时,即使网关设备发生掉电,其存储的对象数据也不会丢失,保证了数据的安全性。

s403:若存储器存储的数据量满足预设条件,则网关设备针对存储器存储的每个第一对象数据,根据第一对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶。

s404:网关设备向存储服务器发送第一对象数据以及目标存储桶的标识。

相应的,存储服务器从网关设备接收第一对象数据以及目标存储桶的标识。

s405:存储服务器将第一对象数据存储到目标存储桶中。

实际应用中,s401和s402可以被重复执行多次,即网关设备每次从客户端设备接收到待存储的对象数据后,均将该对象数据存储到网关设备的存储器中。这样,重复执行多次后,网关设备的存储器中暂存的对象数据越来越多。

本实施例中,网关设备还具有根据生命周期对暂存的对象数据进行归档转存至存储服务器的功能。具体的,当网关设备暂存的对象数据的数据量满足预设条件时,例如,暂存的对象数据的数据量达到某个预设阈值时,网关设备针对暂存的每个对象数据,根据其生命周期将其转存至对应的存储桶中,使得每个存储桶中存储的是具有相同生命周期的对象数据。

下面结合图5对网关设备对对象数据进行归档转存的过程进行举例说明。

图5为本申请提供的对象数据归档转存的示意图。如图5所示,假设网关设备暂存了10个对象数据。其中,对象1、对象2、对象5的生命周期为2020年12月1日到期,对象3、对象4、对象6的生命周期为2020年12月2日到期,对象7、对象8、对象9和对象10的生命周期为2020年12月3日到期。并且,假设存储服务器中包括存储桶1、存储桶2和存储桶3,三个存储桶目前均为空。

如图5所示,针对对象1,其生命周期为2020年12月1日,由于三个存储桶中还没有用于存储生命周期为2020年12月1日的存储桶,因此,网关设备可以将对象1转存至存储桶1中。后续,存储桶1将用于存储与对象1的生命周期相同的对象数据(即,存储生命周期为2020年12月1日到期的对象数据)。

针对对象2,其生命周期为2020年12月1日,因此,网关设备将对象2转存至存储桶1中。

针对对象3,其生命周期为2020年12月2日,由于三个存储桶中还没有用于存储生命周期为2020年12月2日的存储桶,因此,网关设备可以将对象3转存至存储桶2中。后续,存储桶2将用于存储与对象3的生命周期相同的对象数据(即,存储生命周期为2020年12月2日到期的对象数据)。

针对对象4,其生命周期为2020年12月2日,因此,网关设备将对象4转存至存储桶2中。

针对对象5,其生命周期为2020年12月1日,因此,网关设备将对象5转存至存储桶1中。

针对对象6,其生命周期为2020年12月2日,因此,网关设备将对象6转存至存储桶2中。

针对对象7,其生命周期为2020年12月3日,由于三个存储桶中还没有用于存储生命周期为2020年12月3日的存储桶,因此,网关设备可以将对象7转存至存储桶3中。后续,存储桶3将用于存储与对象7的生命周期相同的对象数据(即,存储生命周期为2020年12月3日到期的对象数据)。

针对对象8,其生命周期为2020年12月3日,因此,网关设备将对象8转存至存储桶3中。

针对对象9,其生命周期为2020年12月3日,因此,网关设备将对象9转存至存储桶3中。

针对对象10,其生命周期为2020年12月3日,因此,网关设备将对象10转存至存储桶3中。

需要说明的是,本实施例中网关设备的存储器用于暂存对象数据,当暂存的对象数据被归档转存至存储服务器后,存储器中暂存的对象数据可以被擦除,以暂存新的对象数据,因此,存储器的存储空间可以不用特别大,只需要容纳一定数量的对象数据即可。

能够理解,通过网关设备在存储器中暂存对象数据,一方面,当某个对象数据被暂存到网关设备的存储器之后,用户可以立即通过网关设备的存储器读取该对象数据,从而提高读取速度;另一方面,便于网关设备对对象数据进行归档转存,提高转存效率。

图6为本申请提供的再一种对象数据的处理方法的流程示意图。本实施例中,网关设备的存储器为固态硬盘(solidstatedisk或solidstatedrive,ssd)存储器。ssd存储器具有读写速度快、掉电不丢失数据的特点。

如图6所示,本实施例的方法包括:

s601:客户端设备向网关设备发送待存储的对象数据,该对象数据具有生命周期。

相应的,网关设备从客户端设备接收待存储的对象数据。

s602:网关设备确定ssd存储器的当前存储块,并将对象数据存储到当前存储块中。

本实施例中,ssd存储器中包括多个存储块。示例性的,可以按照预设空间大小将ssd存储器划分为多个存储块。例如,每个存储块的大小可以为8mb、32mb、64mb、128mb等。需要说明的是,本实施例对于存储块大小不作限定。

ssd存储器可以采用顺序写入的方式,即,写满一个存储块之后,再写下一个存储块。其中,当前存储块是指当前未写满的存储块。也就是说,当前存储块中存储的对象数据还未被存储到存储服务器中。

s603:网关设备生成并存储对象数据对应的第一索引信息,第一索引信息用于指示对象数据在ssd存储器中的存储位置。

具体的,网关设备根据对象数据在ssd存储器中的存储位置,生成对象数据对应的第一索引信息。该第一索引信息可用于在ssd存储器中检索该对象数据。

一些示例中,网关设备将对象数据的第一索引信息存储在数据库中。当用户查询某个对象数据时,可以从数据库中查询该对象数据对应的第一索引信息,并根据第一索引信息从ssd存储器中检索对象数据。

本实施例中,网关设备通过采用ssd存储器,即使网关设备发生掉电,网关设备中暂存的对象数据也不会丢失,因此,将对象数据暂存到ssd存储器之后,即可认为对象数据写入成功。并且,用户在写入对象数据之后,可以立即通过对象数据的第一索引信息读取该对象数据,提高了对象数据的读写性能。

s604:若当前存储块中剩余存储空间小于或者等于预设阈值,则网关设备针对当前存储块中的每个第一对象数据,根据第一对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶。

s605:网关设备向存储服务器发送第一对象数据和目标存储桶的标识。

换句话说,当网关设备判断当前存储块写满之后,网关设备针对当前存储块中的每个对象数据,根据其生命周期将其归档转存到相应的存储桶中。这里的写满应理解为:存储块的剩余空间为零,或者,存储块的剩余空间比较小,不足以写入一个对象数据。

可见,本实施例中,网关设备是以存储块为单位对暂存的对象数据进行归档转存。这样,每写满一个存储块之后,在当前存储块中存储的所有对象数据均已存储至存储服务器之后,网关设备可以对该当前存储块进行擦除,便于存储块的空间被重复复用。

一种可能的实现方式中,在当前存储块中存储的所有对象数据均已存储至存储服务器之后,网关设备可以立即对所述当前存储块进行擦除。这样,可以立即释放该存储块的存储空间,便于循环利用。

另一种可能的实现方式中,在当前存储块中存储的所述有对象数据均以存储至存储服务器之后,网关设备可以不立即对当前存储块进行擦除,而是将当前存储块标记为可擦除。后续根据ssd存储器的回收管理机制,当ssd存储器满足预设擦除条件时(例如无其他空闲存储块时),再根据所述标记对当前存储块进行擦除。这样,尽可能延长对象数据在ssd存储器中的暂存时长,当用户需要读取对象数据时,可以优先从ssd存储器中读取对象数据,从而提高读取速度。

相应的,网关设备在对当前存储块进行擦除之后,将当前存储块中的各对象数据对应的第一索引信息从数据库中删除。这样,在用户读取对象数据时,网关设备可以根据数据库中不存在该对象数据的第一索引信息,确定出该对象数据已被转存至存储服务器,进而可以从存储服务器读取该对象数据。

s606:存储服务器将第一对象数据存储到目标存储桶中。

s607:存储服务器向网关设备发送第一对象数据在存储服务器中的存储位置。

相应的,网关设备从存储服务器接收第一对象数据在存储服务器中的存储位置。

示例性的,该存储位置可以包括:第一对象数据所在的存储桶的标识,以及第一对象数据在该存储桶中的起始位置和偏移信息。

s608:网关设备生成并存储第一对象数据对应的第二索引信息,第二索引信息用于指示第一对象数据在存储服务器中的存储位置。

具体的,网关设备根据第一对象数据在存储服务器中的存储位置,生成第一对象数据对应的第二索引信息。该第二索引信息可用于在存储服务器中检索该第一对象数据。

与第一索引信息类似的,网关设备可以将第二索引信息存储在数据库中。当用户查询某个对象数据时,网关设备优先从数据库中查询该对象数据对应的第一索引信息,当第一索引信息不存在时,可以从数据库中查询该对象数据对应的第二索引信息,并根据第二索引信息从存储服务器中检索对象数据。

s609:若第二对象数据的生命周期到期,则网关设备将第二对象数据对应的第一索引信息和第二索引信息删除;其中,第二对象数据为网关设备和/或存储服务器中存储的任意对象数据。

本实施例中,对象数据的索引信息(第一索引信息和第二索引信息)还与对象数据的生命周期关联。换句话说,为对象数据的索引信息设置存活时长,该存活时长与对象数据的生命周期一致。当某个对象数据的生命周期到期时,该对象数据对应的索引信息的存活时长也到期,该对象数据对应的索引信息将自动删除,使得该对象数据立即无法被读取,从而保证对象数据的生命周期的实时性。

s610:若第一存储桶中的对象数据的生命周期到期,则存储服务器将第一存储桶中的对象数据删除;第一存储桶为存储服务器中的任意存储桶。

由于每个存储桶中存储的多个对象数据的生命周期一致,因此,多个对象数据的生命周期会同时到期,不同出现一部分对象到期,而另一部分对象未到期的情况,避免了前述相关技术中的空洞问题。这样,当对象数据的生命周期到期后,可以将该存储桶中的对象数据删除,使得该存储桶的空间真正被释放,从而保证该存储桶的存储空间可被循环利用,提升了存储桶的复用能力。

上述各实施例描述了对象数据的写入流程。下面结合图7所示的实施例描述对象数据的读取流程。

图7为本申请提供的又一种对象数据的处理方法的流程示意图。如图7所示,本实施例的方法包括:

s701:客户端设备向网关设备发送第一读取请求。

相应的,网关设备从客户端设备接收第一读取请求。其中,所述第一读取请求用于请求读取目标对象数据。

s702:网关设备判断是否存储有目标对象数据对应的第一索引信息。

若是,则执行s703和s707,若否,则执行s704至s707。

s703:网关设备根据目标对象数据对应的第一索引信息,从ssd存储器中读取目标对象数据。

s704:网关设备向存储服务器发送第二读取请求,第二读取请求包括目标对象数据对应的第二索引信息。

s705:存储服务器根据目标对象数据对应的第二索引信息,获取目标对象数据。

s706:存储服务器向网关设备发送目标对象数据。

s707:网关设备向客户端设备发送目标对象数据。

当网关设备存储有目标对象数据对应的第一索引信息时,说明ssd存储器还存储有该目标对象数据,因此,优先从ssd存储器中读取目标对象数据,提高读取效率。

当网关设备未存储有目标对象数据对应的第一索引信息时,说明ssd存储器已删除该目标对象数据,该情况下,网关设备从数据库中获取该目标对象数据对应的第二索引信息,并发送给存储服务器,使得存储服务器根据第二索引信息读取该目标对象数据,保证了目标对象数据的成功读取。

图8为本申请提供的一种对象数据的处理装置的结构示意图。本实施例的装置可以为软件和/或硬件的形式。本实施例的装置可以为网关设备,或者,可以集成在网关设备中。如图8所示,本实施例提供的对象数据的处理装置800,包括:接收模块801,处理模块802和发送模块803。

其中,接收模块801,用于从客户端接收待存储的对象数据,所述对象数据具有第一生命周期;

处理模块802,用于根据所述对象数据的生命周期,从存储服务器的多个存储桶中确定目标存储桶,其中,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据;

发送模块803,用于向所述存储服务器发送所述对象数据以及所述目标存储桶的标识,以使所述存储服务器将所述对象数据存储到所述目标存储桶中。

一种可能的实现方式中,所述处理模块802还用于将所述对象数据存储到所述网关设备的存储器中;

所述处理模块802具体用于,若所述存储器存储的数据量满足预设条件,则针对所述存储器存储的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶;

所述发送模块803具体用于,向所述存储服务器发送所述第一对象数据以及所述目标存储桶的标识。

一种可能的实现方式中,所述存储器为固态硬盘ssd存储器,所述ssd存储器包括多个存储块;所述处理模块802具体用于:

确定所述ssd存储器的当前存储块,所述当前存储块中存储的对象数据未被存储到所述存储服务器;

将所述对象数据存储到所述当前存储块中;

若所述当前存储块中剩余存储空间小于或者等于预设阈值,则针对所述当前存储块中的每个第一对象数据,根据所述第一对象数据的生命周期,从所述存储服务器的多个存储桶中确定目标存储桶。

一种可能的实现方式中,所述处理模块802还用于,在将所述对象数据存储到所述当前存储块中之后,生成并存储所述对象数据对应的第一索引信息,所述第一索引信息用于指示所述对象数据在所述ssd存储器中的存储位置;

所述接收模块801还用于,从所述存储服务器接收所述第一对象数据在所述存储服务器中的存储位置;

所述处理模块802还用于,生成并存储所述第一对象数据对应的第二索引信息,所述第二索引信息用于指示所述第一对象数据在所述存储服务器中的存储位置。

一种可能的实现方式中,所述处理模块802还用于,若第二对象数据的生命周期到期,则将所述第二对象数据对应的第一索引信息和第二索引信息删除,所述第二对象数据为所述网关设备和/或所述存储服务器存储的任意对象数据。

一种可能的实现方式中,所述处理模块802还用于:

在所述当前存储块中存储的所有对象数据均已存储至所述存储服务器之后,将所述当前存储块标记为可擦除;

在所述ssd存储器满足预设擦除条件时,根据所述标记对所述当前存储块进行擦除,并将所述当前存储块中的各对象数据对应的第一索引信息删除。

一种可能的实现方式中,所述接收模块801还用于,从客户端设备接收第一读取请求,所述第一读取请求用于请求读取目标对象数据;

所述处理模块802还用于,若所述网关设备存储有所述目标对象数据对应的第一索引信息,则根据所述第一索引信息,从所述ssd存储器中读取所述目标对象数据;

所述发送模块803还用于,若所述网关设备未存储所述目标对象数据对应的第一索引信息,则向所述存储服务器发送第二读取请求;其中,所述第二读取请求包括所述目标对象数据对应的第二索引信息;

所述接收模块801还用于,从所述存储服务器接收所述目标对象数据。

本实施例提供的对象数据的处理装置可用于执行上述任一方法实施例中由网关设备执行的方法,其实现原理和技术效果类似,此处不作赘述。

图9为本申请提供的一种对象数据的处理装置的结构示意图。本实施例的装置可以为软件和/或硬件的形式。本实施例的装置可以为存储服务器,或者,可以集成在存储服务器中。如图9所示,本实施例提供的对象数据的处理装置900,包括:接收模块901和处理模块902。

接收模块901,用于从网关设备接收对象数据以及目标存储桶的标识,所述对象数据为所述网关设备从客户端设备接收到的待存储的对象数据,所述对象数据具有第一生命周期;

处理模块902,用于将所述对象数据存储到所述目标存储桶中;

其中,所述目标存储桶用于存储具有所述第一生命周期的多个对象数据。

一种可能的实现方式中,所述处理模块902还用于,若第一存储桶中的对象数据的生命周期到期,则将所述第一存储桶中的对象数据删除;其中,所述第一存储桶为所述存储服务器中的任意存储桶。

一种可能的实现方式中,如图9所示,本实施例的对象数据的处理装置900还包括:发送模块903;

所述发送模块903,用于向所述网关设备发送所述对象数据在所述存储服务器中的存储位置,以使所述网关设备生成并存储所述对象数据对应的第二索引信息,所述第二索引信息用于指示所述对象数据在所述存储服务器的存储位置。

一种可能的实现方式中,所述接收模块901还用于,从所述网关设备接收第二读取请求,所述第二读取请求包括目标对象数据对应的第二索引信息,所述第二读取请求是所述网关设备在确定未存储有所述目标对象数据对应的第一索引信息的情况下发送的;

所述处理模块902还用于,根据所述目标对象数据对应的第二索引信息,获取所述目标对象数据;

所述发送模块903还用于,向所述网关设备发送所述目标对象数据。

本实施例提供的对象数据的处理装置,可用于执行上述任一方法实施例中由存储服务器执行的方法,其实现原理和技术效果类似,此处不作赘述。

图10为本申请提供的一种电子设备的结构示意图。如图10所示,本实施例提供的电子设备1000,包括:处理器1001以及存储器1002。

其中,存储器1002,用于存储计算机程序;处理器1001,用于执行存储器存储的计算机程序,以实现上述实施例中的对象数据的处理方法。具体可以参见前述方法实施例中的相关描述。可选地,存储器1002既可以是独立的,也可以跟处理器1001集成在一起。

当所述存储器1002是独立于处理器1001之外的器件时,所述电子设备1000还可以包括:总线1003,用于连接所述存储器1002和处理器1001。

本实施例提供的电子设备,可以作为网关设备,可用于执行上述任一方法实施例中网关设备侧的对象数据的处理方法,其实现原理和技术效果类似,此处不再赘述。当电子设备作为网关设备时,存储器1002与网关设备用于存储对象数据的存储器(例如ssd存储器)可以是同一存储器,也可以是不同的存储器。

本实施例提供的电子设备,可以作为存储服务器,可用于执行上述任一方法实施例中存储服务器侧的对象数据的处理方法,其实现原理和技术效果类似,此处不作赘述。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序用于实现如上任一方法实施例中网关设备执行的技术方案,或者,存储服务器执行的技术方案。其实现原理和技术效果类似,此处不作赘述。

本申请实施例还提供一种芯片,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器运行所述计算机程序执行上述任一方法实施例中的网关设备执行的技术方案,或者,存储服务器执行的技术方案。其实现原理和技术效果类似,此处不作赘述。

本申请实施例还提供一种计算机程序产品,包括:计算机程序,所述计算机程序被处理器执行时,实现上述任一方法实施例中由网关设备执行的技术方案,或者,实现由存储服务器执行的技术方案,其实现原理和技术效果类似,此处不作赘述。

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

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

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

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。

应理解,上述处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。

总线可以是工业标准体系结构(industrystandardarchitecture,isa)总线、外部设备互连(peripheralcomponent,pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称:asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

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