CN114675776A - 资源存储方法和装置、存储介质和电子设备 - Google Patents
资源存储方法和装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN114675776A CN114675776A CN202011553770.0A CN202011553770A CN114675776A CN 114675776 A CN114675776 A CN 114675776A CN 202011553770 A CN202011553770 A CN 202011553770A CN 114675776 A CN114675776 A CN 114675776A
- Authority
- CN
- China
- Prior art keywords
- target
- resource
- target resource
- storage system
- identifier
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种资源存储方法和装置、存储介质和电子设备,其中,该方法包括:获取目标资源,其中,所述目标资源为待存储到对象存储系统中的资源;在所述对象存储系统中存在与所述目标资源对应的已有对象的情况下,在所述对象存储系统中写入目标对象,其中,所述目标对象包含所述已有对象的目标对象标识和所述目标资源;将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置。通过本申请,解决了相关技术中在对象存储系统中进行对象更新的方式存在I/O开销过大的问题。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种资源存储方法和装置、存储介质和电子设备。
背景技术
在对象存储系统中进行对象更新时,可以通过创建新对象的方式进行对象更新:首先创建新对象,然后用新对象ID(Identity,标识)更新文件名到对象ID的映射。
采用上述对象更新的方式,被替换掉映射的旧对象一般采用标记删除的方式被垃圾回收:旧对象会被标记删除,而该对象被从block(数据块)文件中标记删除以后需要异步地被执行compaction(压缩)才能物理删除,compaction的过程即读取原block文件、过滤掉无效对象生成新block文件。
标记删除的方式会给对象存储系统带来较大的I/O(Input/Output,输入/输出)开销,即,这一过程导致较多的I/O放大。可见,相关技术中在对象存储系统中进行对象更新的方式存在I/O开销过大的问题。
发明内容
本申请提供了一种资源存储方法和装置、存储介质和电子设备,以至少解决相关技术中在对象存储系统中进行对象更新的方式存在I/O开销过大的问题。
根据本申请实施例的一个方面,提供了一种资源存储方法,包括:获取目标资源,其中,所述目标资源为待存储到对象存储系统中的资源;在所述对象存储系统中存在与所述目标资源对应的已有对象的情况下,在所述对象存储系统中写入目标对象,其中,所述目标对象包含所述已有对象的目标对象标识和所述目标资源;将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置。
可选地,在所述获取目标资源之后,所述方法还包括:使用所述目标资源的目标资源标识查询与所述对象存储系统对应的元信息,其中,所述元信息用于指示对象标识与资源标识之间的映射;在查找到与所述目标资源标识对应的所述目标对象标识的情况下,确定所述对象存储系统中存在与所述目标资源对应的所述已有对象。
可选地,所述使用所述目标资源的目标资源标识查询与所述对象存储系统对应的元信息包括:使用所述目标资源的目标资源标识查询与目标存储桶对应的所述元信息,得到目标查询结果,其中,所述目标存储桶用于存储目标帐号上传的资源,所述目标帐号为上传所述目标资源所使用的帐号,所述目标查询结果用于指示所述对象存储系统中是否存在与所述目标资源标识对应的对象标识。
可选地,所述在所述对象存储系统中写入目标对象包括:在第一数据服务器的第一数据块中追加写入所述目标对象标识和所述目标资源,其中,所述第一数据块为所述已有对象所属的数据块。
可选地,所述将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置包括:将所述第一数据块的索引中与所述目标对象标识对应的物理空间位置更新为所述目标资源的物理空间位置。
可选地,在所述在第一数据服务器的第一数据块中追加写入所述目标对象标识和所述目标资源之后,所述方法还包括:在第二数据服务器的第二数据块中写入所述目标对象标识和所述目标资源,其中,所述第二数据服务器与所述第一数据服务器为不同的服务器,所述第二数据块为所述第一数据块的副本。
可选地,在所述将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置之后,所述方法还包括:将存储所述已有对象的对象资源的物理空间位置标记为可用状态,其中,所述可用状态为允许被除了所述已有对象以外的其他对象所使用的状态。
根据本申请实施例的另一个方面,提供了一种资源存储装置,包括:获取单元,用于获取目标资源,其中,所述目标资源为待存储到对象存储系统中的资源;第一写入单元,用于在所述对象存储系统中存在与所述目标资源对应的已有对象的情况下,在所述对象存储系统中写入目标对象,其中,所述目标对象包含所述已有对象的目标对象标识和所述目标资源;更新单元,用于将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置。
可选地,所述装置还包括:查询单元,用于在所述获取目标资源之后,使用所述目标资源的目标资源标识查询与所述对象存储系统对应的元信息,其中,所述元信息中包含对象标识与资源标识之间的映射;确定单元,用于在查找到与所述目标资源标识对应的所述目标对象标识的情况下,确定所述对象存储系统中存在与所述目标资源对应的所述已有对象。
可选地,查询单元包括:查询模块,用于使用所述目标资源的目标资源标识查询与目标存储桶对应的所述元信息,得到目标查询结果,其中,所述目标存储桶用于存储目标帐号上传的资源,所述目标帐号为上传所述目标资源所使用的帐号,所述目标查询结果用于指示所述对象存储系统中是否存在与所述目标资源标识对应的对象标识。
可选地,所述第一写入单元包括:写入模块,用于在第一数据服务器的第一数据块中追加写入所述目标对象标识和所述目标资源,其中,所述第一数据块为所述已有对象所属的数据块。
可选地,所述更新单元包括:更新模块,用于将所述第一数据块的索引中与所述目标对象标识对应的物理空间位置更新为所述目标资源的物理空间位置。
可选地,所述装置还包括:第二写入单元,用于在所述在第一数据服务器的第一数据块中追加写入所述目标对象标识和所述目标资源之后,在第二数据服务器的第二数据块中写入所述目标对象标识和所述目标资源,其中,所述第二数据服务器与所述第一数据服务器为不同的服务器,所述第二数据块为所述第一数据块的副本。
可选地,所述装置还包括:标记单元,用于在将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置之后,将存储所述已有对象的对象资源的物理空间位置标记为可用状态,其中,所述可用状态为允许被除了所述已有对象以外的其他对象所使用的状态。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用通过更新对象标识的索引位置的方式,通过获取目标资源,其中,目标资源为待存储到对象存储系统中的资源;在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源;将与目标对象标识对应的索引更新为目标资源的物理空间位置,对于对象存储系统中的已有对象,通过将其对象标识的索引更新为新资源的物理空间位置,可以解除旧对象的空间占用,从而可以实现无需删除和回收旧对象的目的,达到降低对象更新的I/O开销的技术效果,进而解决了相关技术中在对象存储系统中进行对象更新的方式存在I/O开销过大的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的资源存储方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的资源存储方法的流程示意图;
图3是根据本申请实施例的另一种可选的资源存储方法的流程示意图;
图4是根据本申请实施例的一种可选的资源存储装置的结构框图;
图5是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种资源存储方法。可选地,在本实施例中,上述资源存储方法可以应用于如图1所示的由终端102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端102进行连接,可用于为终端或终端上安装的客户端(例如,游戏客户端)提供服务(如对象存储服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,还可以用于处理云服务。
上述网络包括但不限于以下至少之一:有线网络,无线网络。有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真)。终端102并不限定于PC(Personal Computer,个人计算机)、手机、平板电脑等。服务器104可以但不限于多个服务器的组合,例如,前端服务器,元数据服务器,后端服务器,数据服务器。每种服务器可以是一个服务器或者服务器集群,也可以是云服务器或者云服务器集群,本实施例中对此不作限定。
本申请实施例的资源存储方法可以由服务器104来执行,也可以由终端102来执行,还可以是由服务器104和终端102共同执行。其中,终端102执行本申请实施例的资源存储方法也可以是由安装在其上的客户端(例如,目标游戏的客户端)来执行。
以由服务器104来执行本实施例中的资源存储方法为例,图2是根据本申请实施例的一种可选的资源存储方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S202,获取目标资源,其中,目标资源为待存储到对象存储系统中的资源。
本实施例中的资源存储方法可以应用于在对象存储系统中存储对象的场景。对象是对象存储系统中数据存储的基本单位,每个对象是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置。对象可以包含整个数据结构,如文件、数据表项等。每个对象都有一个对象标识,可以通过对象标识访问存储设备(例如,数据服务器)中存储的对象。
对象存储系统中可以包含多个设备,可以包括但不限于以下全部或者部分设备:对象存储系统的客户端,元数据服务器,前端服务器(简称为前端),后端服务器(简称为后端),数据服务器(对象存储设备),其中,前端服务器和后端服务器可以是相同的服务器,或者,元数据服务器、前端服务器和后端服务器可以是同一服务器。
例如,对象存储系统可以包含:对象存储系统的客户端、元数据服务器和数据服务器,数据服务器中存储有对象,对象可以按照数据块(Block文件/目录)的方式进行存储。
用户(对应于一个对象)的终端设备上可以运行有对象存储系统的客户端,该客户端可以与对象存储系统的服务器(例如,前端)进行通信连接。用户可以使用帐号和密码、动态密码、关联应用(第三方应用)登录等方式登录到其终端设备上运行的客户端,并通过操作客户端进行对象操作,例如,对象存储操作,对象调用操作等。
目标用户可以使用目标帐号和对应的密码登录到其终端设备上运行的目标客户端,该目标客户端为对象存储系统的客户端。在目标客户端的资源上传界面上,目标用户可以通过本地调用或者其他方式上传目标资源,该目标资源可以是文件、数据表项等等,其可以是用户上传的文件中的新内容,本实施例中对于目标资源的类型不作限定。
对象存储系统的前端可以获取目标客户端上传的目标资源,并判断对象存储系统中是否存在与目标资源对应的已有对象,并基于判断结果执行后续操作。上述前端可以是对象存储系统的API(Application Programming Interface,应用程序接口)层。
需要说明的是,本实施例中以客户端上传目标资源的方式进行说明,对于其他获取资源的方式,本实施例中的资源存储方法同样适用。
步骤S204,在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源。
如果对象存储系统中不存在与目标资源对应的对象,前端可以向后端存储层发起新建对象请求,从而通过新建新对象的方式存储目标资源。
如果对象存储系统中存在与目标资源对应的对象,即,已有对象,该已有对象的对象标识(ID)为目标对象标识,前端可以将目标对象ID设为更新参数之一,向后端存储层发起对象更新。
后端根据目标对象标识和目标资源,可以在对象存储系统中写入目标对象,该目标对象包含有目标对象标识和目标资源,也就是,使用与目标资源对应的已有对象的目标对象标识来存储目标资源,可以理解为直接在对象存储系统中使用目标对象更新了已有对象。
步骤S206,将与目标对象标识对应的索引更新为目标资源的物理空间位置。
为了保证对象更新的准确性,在写入目标对象之后,需要更新目标对象标识对应的索引,也就是,更新目标对象索引对应的索引所指向的物理地址,指向的地址为目标资源的物理空间位置。
如果对象更新成功,后端可以向前端返回对象更新成功的指示信息,前端可以通过目标客户端向目标用户发出对象更新成功的指示信息。否则,如果对象更新失败,后端可以向前端返回对象更新失败的指示信息。前端可以利用目标用户上传的目标资源以及目标资源标识创建新对象。
作为一种可选的实施方式,如果对象更新失败,前端也可以向目标客户端返回对象更新失败的指示信息,并由目标用户通过客户端决定是否重试以及重试的时机。
作为另一种可选的实施方式,如果对象更新失败,也可以由后端存储层直接创建新对象,返回新对象ID给前端,并根据旧的对象ID发起异步垃圾回收。
通过上述步骤S202至步骤S206,获取目标资源,其中,目标资源为待存储到对象存储系统中的资源;在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源;将与目标对象标识对应的索引更新为目标资源的物理空间位置,解决了相关技术中在对象存储系统中进行对象更新的方式存在I/O开销过大的问题,降低了对象更新的I/O开销。
作为一种可选的实施例,在获取目标资源之后,上述方法还包括:
S11,使用目标资源的目标资源标识查询与对象存储系统对应的元信息,其中,元信息用于指示对象标识与资源标识之间的映射;
S12,在查找到与目标资源标识对应的目标对象标识的情况下,确定对象存储系统中存在与目标资源对应的已有对象。
在获取到目标资源之后,前端可以通过元数据服务器查询元数据,从而确定对象存储系统中是否存在与目标资源对应的已有对象。与对象存储系统对应的元信息用于指示对象存储系统中的对象标识与资源标识之间的映射。
前端可以首先获取目标资源的资源标识,即,目标资源标识,该目标资源可以是目标文件,对应地,目标资源标识为目标文件的目标文件名,然后,使用目标资源标识查询与对象存储系统对应的元信息,确定是否存在与目标资源标识对应的对象标识。
如果查找到与目标资源标识对应的目标对象标识,则可以确定对象存储系统中存在与目标资源对应的已有对象,否则,确定对象存储系统中不存在与目标资源对应的已有对象。
通过本实施例,通过元数据保存对象存储系统的对象标识与资源标识之间的映射,并使用资源标识进行元数据查询,可以快速获知对象存储系统中是否存在与目标资源对应的已有对象,提高对象查询的效率。
作为一种可选的实施例,使用目标资源的目标资源标识查询与对象存储系统对应的元信息包括:
S21,使用目标资源的目标资源标识查询与目标存储桶对应的元信息,得到目标查询结果,其中,目标存储桶用于存储目标帐号上传的资源,目标帐号为上传目标资源所使用的帐号,目标查询结果用于指示对象存储系统中是否存在与目标资源标识对应的对象标识。
用户可以创建一个或多个桶(bucket),用来存储其上传的资源,例如,用户可以创建3个bucket:bucket A,bucket B,bucket C。3个bucket下的文件相互独立,可以具有相同的文件名。对于目标用户(使用目标帐号的用户),该目标用户创建的桶为目标存储桶,即,目标存储桶可以用于存储目标帐号上传的资源。
前端可以使用目标资源标识查询与目标存储桶对应的元信息,确定对象存储系统中是否存在与目标资源标识对应的对象标识,也就是,确定在该目标存储桶下该目标资源标识是否已经存在,从而得到目标查询结果。
例如,用户发起文件上传后,前端的API层可以查询元信息,确定该用户的bucket(桶)下该上传文件名在存储系统中是否存在。
通过本实施例,使用不同的存储桶存储不同帐号上传的资源,可以提高元信息查询的效率。
作为一种可选的实施例,在对象存储系统中写入目标对象包括:
S31,在第一数据服务器的第一数据块中追加写入目标对象标识和目标资源,其中,第一数据块为已有对象所属的数据块。
后端可以根据目标对象ID和目标资源,向已有对象所属的数据服务器(第一数据服务器)发起更新。第一数据服务器在对象所属的block(数据块)文件追加写入对象ID和其新内容,也就是,在目标数据块中追加写入目标对象ID和目标资源。
作为一种可选的实施例,将与目标对象标识对应的索引更新为目标资源的物理空间位置包括:
S41,将第一数据块的索引中与目标对象标识对应的物理空间位置更新为目标资源的物理空间位置。
在更新与目标对象标识对应的索引时,第一数据服务器或者后端可以更新block索引,使得后续的查找请求被索引到对象新内容(目标资源)的物理空间位置。
block索引可以用来指示本block中存储的对象标识以及该对象标识所对应的对象内容所存储在的物理空间位置。对于第一数据块,后端或者第一数据服务器可以将第一数据块的索引中与目标对象标识对应的物理空间位置更新为目标资源的物理空间位置。
通过本实施例,在对象更新时更新对象所在的数据块的索引,可以提高索引更新的准确性。
作为一种可选的实施例,在第一数据服务器的第一数据块中追加写入目标对象标识和目标资源之后,上述方法还包括:
S51,在第二数据服务器的第二数据块中写入目标对象标识和目标资源,其中,第二数据服务器与第一数据服务器为不同的服务器,第二数据块为第一数据块的副本。
为了避免由于数据服务器出现问题导致的无法访问数据服务器中所存储的对象,可以在多个数据服务器中可以对象以及对象的副本。
对于第一数据块,除了在第一数据服务器中有该第一数据块以外,在一个或多个其他数据服务器中可以有该第一数据块的副本。在更新完第一数据服务器中的已有对象之外,后端也可以向其他副本复制该目标对象ID和目标资源。
例如,对于第二数据服务器,第一数据服务器中的第二数据块为第一数据块的副本。在第一数据服务器的第一数据块中追加写入目标对象标识和目标资源之后,后端可以在第二数据服务器的第二数据块中写入目标对象标识和目标资源。
通过本实施例,通过向对应的副本数据块中复制对象ID和新内容,可以保证数据存储的可靠性。
作为一种可选的实施例,在将与目标对象标识对应的索引更新为目标资源的物理空间位置之后,上述方法还包括:
S61,将存储已有对象的对象资源的物理空间位置标记为可用状态,其中,可用状态为允许被除了已有对象以外的其他对象所使用的状态。
在将与目标对象标识对应的索引更新为目标资源的物理空间位置之后,已有对象可以不需要删除和回收,而是将其标记为无效对象,存储该无效对象的空间可以被其他对象使用。
可选地,在本实施例中,后端或者所属的数据服务器可以将存储已有对象的对象资源的物理空间位置标记为可用状态。处于可用状态的存储可以被除了已有对象以外的其他对象所使用。
相关技术中,通过创建新对象来更新旧对象,新的对象ID与旧的对象ID是不同的,数据块中保留了完整的旧对象。如果不进行垃圾回收,会降低block中的空间利用率。而如果进行垃圾回收,会频繁地进行block文件的读取、过滤和生成新block文件,会造成I/O放大和额外调度开销。
通过本实施例,可以减少删除和回收旧对象造成的I/O放大和额外调度开销,减少I/O消耗,降低调度开销。
下面结合可选示例对本申请实施例中的资源存储方法进行解释说明。在本示例中,目标资源为用户上传的文件,资源标识为文件名,前端为前端API层,后端为后端存储层。对象存储系统的前端API层和后端对象存储层全部支持更新,更新请求经过前端API最终在后端对象存储层被执行。
在本示例中的资源存储方法中,前端查找并向后端传递被更新对象的ID,后端可靠地完成对象更新并返回对象ID给前端。可选地,如图3所示,本可选示例中的资源存储方法的流程可以包括以下步骤:
步骤S302,用户发起文件上传之后,如果对象存储系统中存在该上传文件对应的对象,向后端存储层发起对象更新。
用户发起文件上传之后,前端API层可以首先查询元信息确定该用户的bucket下,上传文件的文件名在存储系统中是否存在,如果不存在,则向后端存储层发起新建对象请求,通过新建对象的方式在对象存储系统中存储该文件。
反之如果存在,前端可以将元信息中的对象ID设为更新参数之一,向后端存储层发起对象更新。
步骤S304,后端根据对象ID和新内容,向其所属的数据服务器发起更新。
后端可以根据对象ID和新内容(上传文件中的内容,作用同目标资源),向旧内容所属的数据服务器发起更新。
步骤S306,数据服务器在对象所属的block文件追加写入对象ID和新内容,并更新block索引。
数据服务器按照后端发起的更新,可以在旧对象所属的block文件追加写入对象ID和新内容,并更新block索引,使得后续的查找请求被索引到对象新内容的物理空间位置。
步骤S308,向block的副本复制该对象ID和新内容。
接下来后端可以向其他副本复制该对象ID和新内容,其他副本可以在其他数据服务器中。
若所有副本均将对象ID和新内容更新成功,后端可以向前端返回更新成功;否则,若更新失败,后端可以向前端返回更新失败。
如果更新失败,前端可以利用用户上传文件名和文件内容创建新对象,并用新对象ID更新元信息中文件名到对象ID的映射。
通过本示例,在用户更新文件的场景下,采用对象存储系统直接支持更新的方式,后端存储层可以支持对象更新,从而不需要删除和回收旧对象,避免删除和回收旧对象带来的I/O放大和额外调度开销。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,提供了一种用于实施上述资源存储方法的资源存储装置。图4是根据本申请实施例的一种可选的资源存储装置的结构框图,如图4所示,该装置可以包括:
(1)获取单元402,用于获取目标资源,其中,目标资源为待存储到对象存储系统中的资源;
(2)第一写入单元404,与获取单元402相连,用于在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源;
(3)更新单元406,与第一写入单元404相连,用于将与目标对象标识对应的索引更新为目标资源的物理空间位置。
需要说明的是,该实施例中的获取单元402可以用于执行上述步骤S202,该实施例中的第一写入单元404可以用于执行上述步骤S204,该实施例中的更新单元406可以用于执行上述步骤S206。
通过上述模块,获取目标资源,其中,目标资源为待存储到对象存储系统中的资源;在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源;将与目标对象标识对应的索引更新为目标资源的物理空间位置,解决了相关技术中在对象存储系统中进行对象更新的方式存在I/O开销过大的问题,降低了对象更新的I/O开销。
作为一种可选的实施例,上述装置还包括:
查询单元,用于在获取目标资源之后,使用目标资源的目标资源标识查询与对象存储系统对应的元信息,其中,元信息中包含对象标识与资源标识之间的映射;
确定单元,用于在查找到与目标资源标识对应的目标对象标识的情况下,确定对象存储系统中存在与目标资源对应的已有对象。
作为一种可选的实施例,查询单元包括:
查询模块,用于使用目标资源的目标资源标识查询与目标存储桶对应的元信息,得到目标查询结果,其中,目标存储桶用于存储目标帐号上传的资源,目标帐号为上传目标资源所使用的帐号,目标查询结果用于指示对象存储系统中是否存在与目标资源标识对应的对象标识。
作为一种可选的实施例,第一写入单元404包括:
写入模块,用于在第一数据服务器的第一数据块中追加写入目标对象标识和目标资源,其中,第一数据块为已有对象所属的数据块。
作为一种可选的实施例,更新单元406包括:
更新模块,用于将第一数据块的索引中与目标对象标识对应的物理空间位置更新为目标资源的物理空间位置。
作为一种可选的实施例,上述装置还包括:
第二写入单元,用于在在第一数据服务器的第一数据块中追加写入目标对象标识和目标资源之后,在第二数据服务器的第二数据块中写入目标对象标识和目标资源,其中,第二数据服务器与第一数据服务器为不同的服务器,第二数据块为第一数据块的副本。
作为一种可选的实施例,上述装置还包括:
标记单元,用于在将与目标对象标识对应的索引更新为目标资源的物理空间位置之后,将存储已有对象的对象资源的物理空间位置标记为可用状态,其中,可用状态为允许被除了已有对象以外的其他对象所使用的状态。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述资源存储方法的电子设备,该电子设备可以是服务器、终端、或其组合。
图5是根据本申请实施例的一种可选的电子设备的结构框图,如图5所示,包括处理器502、通信接口504、存储器506和通信总线508,其中,处理器502、通信接口504和存储器506通过通信总线508完成相互间的通信,其中,
存储器506,用于存储计算机程序;
处理器502,用于执行存储器506上所存放的计算机程序时,实现如下步骤:
S1,获取目标资源,其中,目标资源为待存储到对象存储系统中的资源;
S2,在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源;
S3,将与目标对象标识对应的索引更新为目标资源的物理空间位置。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器506中可以但不限于包括上述资源存储装置中的获取单元402、第一写入单元404以及更新单元406。此外,还可以包括但不限于上述资源存储装置中的其他模块,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图5所示的结构仅为示意,实施上述资源存储方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图5其并不对上述电子装置的结构造成限定。例如,终端设备还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项资源存储方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取目标资源,其中,目标资源为待存储到对象存储系统中的资源;
S2,在对象存储系统中存在与目标资源对应的已有对象的情况下,在对象存储系统中写入目标对象,其中,目标对象包含已有对象的目标对象标识和目标资源;
S3,将与目标对象标识对应的索引更新为目标资源的物理空间位置。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种资源存储方法,其特征在于,包括:
获取目标资源,其中,所述目标资源为待存储到对象存储系统中的资源;
在所述对象存储系统中存在与所述目标资源对应的已有对象的情况下,在所述对象存储系统中写入目标对象,其中,所述目标对象包含所述已有对象的目标对象标识和所述目标资源;
将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置。
2.根据权利要求1所述的方法,其特征在于,在所述获取目标资源之后,所述方法还包括:
使用所述目标资源的目标资源标识查询与所述对象存储系统对应的元信息,其中,所述元信息用于指示对象标识与资源标识之间的映射;
在查找到与所述目标资源标识对应的所述目标对象标识的情况下,确定所述对象存储系统中存在与所述目标资源对应的所述已有对象。
3.根据权利要求2所述的方法,其特征在于,所述使用所述目标资源的目标资源标识查询与所述对象存储系统对应的元信息包括:
使用所述目标资源的目标资源标识查询与目标存储桶对应的所述元信息,得到目标查询结果,其中,所述目标存储桶用于存储目标帐号上传的资源,所述目标帐号为上传所述目标资源所使用的帐号,所述目标查询结果用于指示所述对象存储系统中是否存在与所述目标资源标识对应的对象标识。
4.根据权利要求1所述的方法,其特征在于,所述在所述对象存储系统中写入目标对象包括:
在第一数据服务器的第一数据块中追加写入所述目标对象标识和所述目标资源,其中,所述第一数据块为所述已有对象所属的数据块。
5.根据权利要求4所述的方法,其特征在于,所述将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置包括:
将所述第一数据块的索引中与所述目标对象标识对应的物理空间位置更新为所述目标资源的物理空间位置。
6.根据权利要求4所述的方法,其特征在于,在所述在第一数据服务器的第一数据块中追加写入所述目标对象标识和所述目标资源之后,所述方法还包括:
在第二数据服务器的第二数据块中写入所述目标对象标识和所述目标资源,其中,所述第二数据服务器与所述第一数据服务器为不同的服务器,所述第二数据块为所述第一数据块的副本。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置之后,所述方法还包括:
将存储所述已有对象的对象资源的物理空间位置标记为可用状态,其中,所述可用状态为允许被除了所述已有对象以外的其他对象所使用的状态。
8.一种资源存储装置,其特征在于,包括:
获取单元,用于获取目标资源,其中,所述目标资源为待存储到对象存储系统中的资源;
第一写入单元,用于在所述对象存储系统中存在与所述目标资源对应的已有对象的情况下,在所述对象存储系统中写入目标对象,其中,所述目标对象包含所述已有对象的目标对象标识和所述目标资源;
更新单元,用于将与所述目标对象标识对应的索引更新为所述目标资源的物理空间位置。
9.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至7中任一项所述的方法步骤。
10.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至7中任一项中所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011553770.0A CN114675776A (zh) | 2020-12-24 | 2020-12-24 | 资源存储方法和装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011553770.0A CN114675776A (zh) | 2020-12-24 | 2020-12-24 | 资源存储方法和装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114675776A true CN114675776A (zh) | 2022-06-28 |
Family
ID=82070728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011553770.0A Pending CN114675776A (zh) | 2020-12-24 | 2020-12-24 | 资源存储方法和装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114675776A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075823A (zh) * | 2023-10-17 | 2023-11-17 | 苏州元脑智能科技有限公司 | 对象查找方法、系统、电子设备及存储介质 |
-
2020
- 2020-12-24 CN CN202011553770.0A patent/CN114675776A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075823A (zh) * | 2023-10-17 | 2023-11-17 | 苏州元脑智能科技有限公司 | 对象查找方法、系统、电子设备及存储介质 |
CN117075823B (zh) * | 2023-10-17 | 2024-02-02 | 苏州元脑智能科技有限公司 | 对象查找方法、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162525B (zh) | 基于b+树的读写冲突解决方法、装置及存储介质 | |
CN107786638B (zh) | 一种数据处理方法、装置及系统 | |
CN109359091B (zh) | 文件管理方法、装置、终端及计算机可读存储介质 | |
US10108501B2 (en) | Terminal backup and recovery method | |
JP2014056319A (ja) | 情報処理装置およびプログラム、制御方法 | |
JP2012089094A5 (zh) | ||
EP3364303B1 (en) | Data arrangement method, storage apparatus, storage controller and storage array | |
CN111680008A (zh) | 日志处理方法、系统、可读存储介质及智能设备 | |
CN112182010B (zh) | 脏页刷新方法和装置、存储介质和电子设备 | |
CN111803917B (zh) | 资源的处理方法和装置 | |
CN112835528A (zh) | 脏页刷新方法和装置、电子设备和存储介质 | |
CN112925759A (zh) | 数据文件的处理方法和装置、存储介质、电子装置 | |
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 | |
CN111198885A (zh) | 数据的处理方法及装置 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN112269665B (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN112817962B (zh) | 基于对象存储的数据存储方法、装置和计算机设备 | |
CN114675776A (zh) | 资源存储方法和装置、存储介质和电子设备 | |
CN111176901B (zh) | 一种hdfs删除文件恢复方法、终端设备及存储介质 | |
WO2021163856A1 (zh) | 内容推送方法、装置、服务器及存储介质 | |
CN113360095B (zh) | 硬盘数据管理方法、装置、设备及介质 | |
CN115221130A (zh) | 文件的处理系统、文件的处理方法和装置 | |
CN114968963A (zh) | 文件覆盖写方法、装置和电子设备 | |
CN114741365A (zh) | 产品模型获取方法、装置、终端设备和存储介质 | |
CN114168074A (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 |