CN117075823A - 对象查找方法、系统、电子设备及存储介质 - Google Patents

对象查找方法、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN117075823A
CN117075823A CN202311339284.2A CN202311339284A CN117075823A CN 117075823 A CN117075823 A CN 117075823A CN 202311339284 A CN202311339284 A CN 202311339284A CN 117075823 A CN117075823 A CN 117075823A
Authority
CN
China
Prior art keywords
target
target object
address
data block
node
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.)
Granted
Application number
CN202311339284.2A
Other languages
English (en)
Other versions
CN117075823B (zh
Inventor
臧林劼
李晓伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311339284.2A priority Critical patent/CN117075823B/zh
Publication of CN117075823A publication Critical patent/CN117075823A/zh
Application granted granted Critical
Publication of CN117075823B publication Critical patent/CN117075823B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种对象查找方法、系统、电子设备及存储介质,涉及计算机技术领域,该方法包括:获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与目标对象标识符相匹配的目标对象地址信息;从目标对象地址信息指示的目标节点的目标数据块中获取到目标对象,并将目标对象发送至客户端。本申请提供的对象查找方法、系统、电子设备及存储介质,用于在降低分布式存储系统对内存资源的占用、以及对存储节点的I/O性能要求的同时,能够极大地提高分布式存储系统的对象查找效率。

Description

对象查找方法、系统、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种对象查找方法、系统、电子设备及存储介质。
背景技术
分布式对象存储系统已被广泛应用于大数据、云计算、科教文、数据挖掘分析和智能AI等数据管理场景中。分布式对象存储系统能够通过分布式存储系统数据映射策略、放置算法、冗余保护等措施将需要存储的数据以对象的形式分布存储在分布式集群的各个存储节点上。
在相关技术中,分布式对象存储系统的对放置策略包括:基于源数据目标数结构的放置策略,以及基于哈希(Hash)计算映射对象的位置策略。然而,使用上述两种对象放置策略的分布式存储系统需要占用大量的动态随机存取内存(Dynamic Random AccessMemory,DRAM)空间,且分布式存储系统在进行对象查找时,对存储节点的输入/输出(Input/Output,I/O)性能的消耗较大。
基于此,急需一种内存资源占用低、对存储节点的I/O性能要求较低的分布式系统,以提高对象的查找效率。
发明内容
本申请的目的是提供一种对象查找方法、系统、电子设备及存储介质,用于在降低分布式存储系统对内存资源的占用、以及对存储节点的I/O性能要求的同时,能够极大地提高分布式存储系统的对象查找效率。
第一方面,本申请提供一种对象查找方法,包括:
获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
可选地,所述获取客户端发送的目标对象的目标对象标识符之前,所述方法还包括:所述目标查找单元所在的存储节点在接收所述客户端发送的对象获取请求的情况下,基于所述对象获取请求中携带的所述目标对象标识符,确定所述目标对象所属的所述目标分片的分片标识;所述目标查找单元所在的存储节点基于所述目标分片的分片标识,确定与所述目标分片对应的所述目标查找单元,并由所述目标查找单元来响应所述对象获取请求;其中,所述对象获取请求为:所述客户端基于目标映射关系向所述目标查找单元所在的存储节点发送的;所述目标映射关系为:所述目标分片的分片标识与所述目标查找单元所在节点的网络地址之间的映射关系。
可选地,所述获取客户端发送的目标对象的目标对象标识符,包括:所述目标查找单元在接收到所述对象获取请求的情况下,对所述对象获取请求进行解析,从所述对象获取请求中提取出所述目标对象标识符。
可选地,所述目标映射关系包括:所述目标分片的分片标识与多个查找单元所在节点的网络地址之间的映射关系;所述多个查找单元为分布于不同节点中完全相同的查找单元;所述目标查找单元为所述多个查找单元中的任一个。
可选地,所述通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息,包括:所述目标查找单元从多个对象地址信息中确定与所述目标对象标识符相匹配的目标对象地址信息;其中,所述目标对象地址信息包括:所述目标节点的目标网络地址,存储有所述目标对象的目标数据块的目标块地址。
可选地,所述从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端,包括:所述目标查找单元基于所述目标块地址对所述对象获取请求进行调整,并基于所述目标网络地址将携带有所述目标块地址的所述对象获取请求转发至所述目标节点;所述目标节点在接收到携带有所述目标块地址的所述对象获取请求的情况下,基于所述目标块地址获取所述目标对象,并将所述目标对象发送至所述客户端。
可选地,所述目标数据块中存储有一个对象,或者,所述目标数据块中存储有多个对象、且所述目标对象为所述目标数据块中读取顺序第一的对象;所述基于所述目标块地址获取所述目标对象,包括:所述目标节点基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量;基于所述目标块地址以及所述目标地址偏移量从所述目标数据块中提取所述目标对象。
可选地,所述目标数据块中存储有多个对象、且所述目标对象不为所述目标数据块中读取顺序第一的对象;所述基于所述目标块地址获取所述目标对象,包括:所述目标节点基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量,以及所述目标数据块存储的多个对象中读取顺序在所述目标对象之前的参考对象的地址偏移量;基于所述目标块地址以及所述参考对象的地址偏移量,确定所述目标数据块中存储所述目标对象的起始地址,并根据所述起始地址以及所述目标地址偏移量从所述目标数据块中提取所述目标对象。
可选地,所述分布式存储系统包括一个处于活动状态的活动索引单元以及多个处于非活动状态的索引单元;所述获取客户端发送的目标对象的目标对象标识符之前,所述方法还包括:所述活动索引单元接收所述客户端发送的针对所述目标对象的对象放置请求,将所述目标对象添加至所述目标分片中,并为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的所述目标数据块;所述活动索引单元基于所述目标数据块所属节点的网络地址以及所述目标数据块的目标块地址生成所述目标对象地址信息,并基于为所述目标对象分配的对象标识符以及所述目标对象地址信息生成目标地址二元组;所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元;其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息将所述目标对象发送至所述目标节点。
可选地,所述活动索引单元将所述目标地址二元组发送至所述客户端之后,所述方法还包括:所述目标节点在接收到所述客户端发送的所述目标对象的情况下,基于所述目标对象标识符以及所述目标对象地址信息中的目标块地址,将所述目标对象存储至所述目标数据块中,并在所述目标数据块的首部生成所述目标对象在所述目标数据块中的所述目标地址偏移量;其中,所述目标对象为所述客户端基于所述目标网络地址发送至所述目标节点的;所述目标节点通过所述客户端或者所述活动索引单元获取到所述目标对象标识符以及所述目标块地址。
可选地,所述基于所述目标对象地址信息更新所述目标查找单元,包括:所述目标查找单元基于所述目标对象地址信息更新所述目标查找单元中的对象地址信息列表;其中,所述对象地址信息列表包括:至少一个对象地址信息。
可选地,所述活动索引单元接收所述客户端发送的针对所述目标对象的对象放置请求,将所述目标对象添加至所述目标分片中之后,所述方法还包括:在所述目标分片无法再添加更多对象的情况下,将所述活动索引单元的状态调整为非活动状态,并构建新的索引单元作为所述分布式存储系统中唯一处于活动状态的索引单元;其中,处于活动状态的索引单元所管理的数据存储于所在节点的内存中;处于非活动状态的索引单元所管理的数据存储于所在节点的磁盘空间中。
可选地,所述活动索引单元为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的所述目标数据块,包括:所述活动索引单元为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的多个数据块;其中,所述多个数据块分布于不同的存储节点;所述目标数据块为所述多个数据块中的任一个;多个数据块中每个数据块均用于存储所述目标对象的备份。
可选地,所述活动索引单元基于所述目标数据块所属节点的网络地址以及所述目标数据块的目标块地址生成所述目标对象地址信息,并基于为所述目标对象分配的对象标识符以及所述目标对象地址信息生成目标地址二元组,包括:所述活动索引单元基于所述多个数据块中每个数据块所属存储节点的网络地址以及每个数据块的块地址,生成每个数据块对应的对象地址信息;所述活动索引单元基于所述目标对象的所述目标标识符以及每个数据块对应的对象地址信息,生成所述目标地址二元组。
可选地,所述基于所述目标对象地址信息更新所述目标查找单元,包括:基于所述目标对象地址信息中包含的每个数据块对应的对象地址信息,更新多个查找单元中每个查找单元存储的对象地址信息;其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息将所述目标对象发送至所述目标节点;所述多个查找单元为分布于不同节点中完全相同的查找单元;所述目标查找单元为所述多个查找单元中的任一个。
可选地,所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元之后,所述方法还包括:所述目标查找单元在接收到所述客户端针对所述目标对象发送的对象修改请求的情况下,基于所述目标对象标识符确定所述目标对象地址信息,并将所述目标对象地址信息发送至所述客户端;其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息中的所述目标网络地址以及所述目标块地址,将修改后的待替换对象发送至所述目标节点中,并由所述目标节点根据所述目标块地址将所述目标块地址中存储的所述目标对象替换为所述待替换对象。
可选地,所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元之后,所述方法还包括:所述目标查找单元在接收到所述客户端针对所述目标对象发送的对象删除请求的情况下,基于所述目标对象地址信息中的所述目标网络地址将携带有所述目标块地址的对象删除请求转发至所述目标节点;所述目标节点在接收到携带有所述目标块地址的对象删除请求的情况下,基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量;所述目标节点基于所述目标块地址以及所述目标地址偏移量将所述目标对象从所述目标数据块中删除,并向所述客户端反馈对象删除信息。
第二方面,本申请还提供一种分布式存储系统,该系统包括:多个分片,一个分片由一个索引单元进行管理,一个索引单元构建一个查找单元;一个分片包括多个对象的对象地址信息、且所述多个对象分布式存储于所述分布式存储系统的多个存储节点中,所述分布式存储系统能够实现如上述第一方面中任一种所述对象查找方法的步骤。
第三方面,本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述第一方面中任一种所述对象查找方法的步骤。
第四方面,本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面中任一种所述对象查找方法的步骤。
第五方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一种所述对象查找方法的步骤。
本申请提供的对象查找方法、系统、电子设备及存储介质,在客户端获取目标对象时,首先获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;之后,从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。如此,不仅可以降低分布式存储系统对内存资源的占用、以及对存储节点的I/O性能要求,还能够极大地提高分布式存储系统的对象查找效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的对象查找方法的系统结构示意图之一;
图2是本申请提供的对象查找方法的流程示意图之一;
图3是本申请提供的存储对象的数据块的结构示意图;
图4是本申请提供的对象查找方法的系统结构示意图之二;
图5是本申请提供的对象查找流程示意图;
图6是本申请提供的对象放置流程示意图;
图7是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
以下针对本申请实施例所涉及的专业术语进行详细的描述:
分布式存储系统是一个以分布式方式存储和管理海量数据的系统。在分布式存储系统中,对象放置方法和查询方法是两个重要的方面。
对象放置方法(Object Placement Methods):
对象放置方法指的是如何将数据对象存储在分布式存储系统的节点上。下面是几种常见的对象放置方法:随机放置:将对象随机地分配给存储系统的节点。这种方法简单且具有良好的负载均衡,但查询时可能需要跨节点访问数据,导致性能较低。均匀放置:将对象均匀地分布在存储系统的节点上。这种方法可以提高查询的性能,但需要维护额外的元数据来跟踪对象的位置。哈希放置:使用对象的哈希值来确定对象应存储在哪个节点上。这种方法可以实现数据的高效定位,但对节点的增减操作比较敏感。副本放置:将对象的多个副本存储在不同的节点上,以提高数据的可靠性和容错性。这种方法可以通过在多个节点上并行访问副本来提高查询性能。
查询方法(Query Methods):
查询方法指的是在分布式存储系统中如何进行数据查询和检索。下面是几种常见的查询方法:基于键值(Key-Value)的查询:通过对象的键值进行查询,类似于字典或哈希表的查询方式。这种方法适用于需要快速访问指定键值的场景。范围查询(RangeQueries):查询一定范围内的对象,例如按时间范围查询日志数据。这种方法可以通过在多个节点上并行执行查询来提高性能。分布式查询:将查询任务分发给存储系统的多个节点并行执行,然后将结果合并返回。这种方法可以提高查询的吞吐量和响应时间。数据索引:通过构建索引结构来加速查询,例如使用B+树或哈希索引。索引可以提供高效的对象定位和访问。
上述对象放置方法和对象查找方法存在以下缺点:
对象放置方法的缺点:
随机放置:在查询时可能需要跨节点访问数据,导致性能较低,尤其是当数据的访问模式不均衡时。均匀放置:需要维护额外的元数据来跟踪对象的位置,增加了系统的复杂性和存储开销。哈希放置:对节点的增减操作比较敏感,当节点变动较频繁时,可能导致数据的重分布和数据访问的延迟。副本放置:存储多份副本增加了存储开销,对于容量较大的系统会带来较大的成本。
查询方法的缺点:
基于键值的查询:对于范围查询或复杂查询,效率较低。此外,如果键的分布不均衡,可能导致数据倾斜和性能瓶颈。范围查询:对于数据分布不均匀的情况下,查询性能可能会受到影响,因为需要跨越多个节点进行查询,而节点之间的通信开销较大。分布式查询:在多个节点并行执行查询的过程中,需要进一步处理和合并结果,这会增加系统的复杂性和通信开销。数据索引:构建和维护索引需要消耗额外的存储空间和计算资源,特别是在数据更新频繁的情况下。
针对相关技术中存在的上述技术问题,本申请实施例提供了一种对象查找方法,应用于分布式存储系统,如图1所示,该系统将对象进行分片(shard)管理,并为每个分片设置单独的索引单元和查找单元。其中,索引单元负责将对象添加到分片中,分片中的对象分布式存储于不同的存储节点中。分布式存储系统中有且仅有一个处于活动(active)状态的索引单元,负责向其管理的分片中添加对象,当该处于活动状态的索引单元管理的分片中无法再添加更多的对象时,便可以将该索引单元转换为非活动(inactive)状态的索引单元,即将该索引单元从内存中转移到磁盘空间中,以减少对内存资源的占用。
由索引单元的构建的查找单元分布式存储在各个储存节点的内存中,查找单元与局部索引相结合,可以大大节省数据映射与高效查找对内存资源的占用,查找单元能够根据查找对象全局唯一的对象标识符(Object Identifier,OID)返回对象位置,该对象位置包含存储该对象的存储节点的网际互连协议(Internet Protocol,IP)地址,以及该存储节点中存储该查找对象的数据块(block)的块地址。
本申请实施例提供的分布式存储系统,能够在不需要中心化元数据服务节点的情况下实现灵活的数据映射放置和查找功能。特别的,无目录元数据结构、且分散的查找单元能够在不存储关键字(key)的情况下查找对象,而关键字是主要的内存开销。查找单元具有很强的灵活性,因为对象可以存储在任意节点上。索引单元能够更新查找单元,在大多数情况下,只需要在内存中运行一个索引单元,其他处于非活动状态索引单元可以存储在磁盘空间中,因此,整个存储系统的资源消耗非常少。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的对象查找方法进行详细地说明。
本申请实施例提供的对象查找方法应用于分布式存储系统,该系统包括:多个分片,一个分片由一个索引单元进行管理,一个索引单元构建一个查找单元;一个分片包括多个对象的对象地址信息、且所述多个对象分布式存储于所述分布式存储系统的多个存储节点中。
如图2所示,本申请实施例提供的对象查找方法,可以包括下述步骤201和步骤202:
步骤201、获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息。
其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片。
示例性地,当客户端需要从分布式存储系统中获取目标对象时,需要向分布式存储系统发送针对目标对象的对象获取请求,该对象获取请求中携带有该目标对象的对象标识符。
示例性地,分布式存储系统能够根据该目标对象标识符确定该目标对象所属的目标分片,并通过该目标分片所对应的目标查找单元基于该目标对象标识符查找到该目标对象的存储地址,即目标对象地址信息。
需要说明的是,每个查找单元只能负责查找其对应的分片中的对象的存储地址,因此,在获取到目标对象的目标对象标识符之后,需要由该目标对象所属的目标分片所对应的目标查找单元来进行存储地址的查找。
步骤202、从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端。
其中,所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
示例性地,当通过目标查找单元查找到该目标对象的目标对象地址信息后,便可以基于该目标对象地址信息确定存储有该目标对象的存储节点(即上述目标节点)以及该目标节点中,具体存储该目标对象的数据块。
示例性地,基于上述目标对象地址信息,便可以获取到该目标对象,并将该目标对象发送至客户端。具体地,该目标对象可以由目标节点直接发送至客户端。
如此,便可以实现目标对象的快速查询和获取,并且,整个过程仅涉及到目标对象的对象标识符和地址信息,因此,本申请实施例提供的对象查找方法,对存储节点内存资源的占用很小。
可选地,在本申请实施例中,客户端可以根据目标对象的对象标识符中携带的所属分片的分片标识,以及由客户端维护的该分片标识与目标查找单元所属存储节点的网络地址之间的映射关系,直接将获取该目标对象的对象获取请求发送至目标查找单元。
具体地,上述步骤201中获取客户端发送的目标对象的目标对象标识符之前,本申请实施例提供的对象查找方法,还可以包括以下步骤203和步骤204:
步骤203、所述目标查找单元所在的存储节点在接收所述客户端发送的对象获取请求的情况下,基于所述对象获取请求中携带的所述目标对象标识符,确定所述目标对象所属的所述目标分片的分片标识。
其中,所述对象获取请求为:所述客户端基于目标映射关系向所述目标查找单元所在的存储节点发送的;所述目标映射关系为:所述目标分片的分片标识与所述目标查找单元所在节点的网络地址之间的映射关系。
示例性地,当客户端需要从分布式存储系统中获取目标对象时,可以根据该目标对象的对象标识符(即上述目标对象标识符)中提取出该目标对象所属分片(即上述目标分片)的分片标识(Identity document,ID),之后,根据客户端中维护上述目标映射关系,确定目标分片标识对应的目标查找节点所属存储节点的网络地址。
示例性地,客户端在获取到目标查找单元所在的存储节点的网络地址之后,便可以基于该网络地址直接向该目标查找单元发送对象获取请求。
步骤204、所述目标查找单元所在的存储节点基于所述目标分片的分片标识,确定与所述目标分片对应的所述目标查找单元,并由所述目标查找单元来响应所述对象获取请求。
示例性地,所述目标查找单元所在的存储节点在接收到客户端发送的节点获取请求之后,可以基于该对象获取请求中携带的目标对象的对象标识符中的分片标识,确定目标查找单元,并由目标查找单元来响应所述对象获取请求。
具体地,基于上述步骤203和步骤204,上述步骤201中获取客户端发送的目标对象的目标对象标识符的步骤,还可以包括以下步骤201a:
步骤201a、所述目标查找单元在接收到所述对象获取请求的情况下,对所述对象获取请求进行解析,从所述对象获取请求中提取出所述目标对象标识符。
可以理解的是,查找目标对象的存储地址,必须获取到该目标对象的对象标识符,因此,目标查找对象在接收到对象获取请求之后,需要从该对象获取请求中提取出目标对象的对象标识符,即上述目标对象标识符。
示例性地,在获取到目标对象的对象标识符之后,便可以基于该对象标识符查找到该目标对象的存储地址,即上述目标对象地址信息。
具体地,上述步骤201中通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息的步骤,还可以包括以下步骤201b:
步骤201b、所述目标查找单元从多个对象地址信息中确定与所述目标对象标识符相匹配的目标对象地址信息。
其中,所述目标对象地址信息包括:所述目标节点的目标网络地址,存储有所述目标对象的目标数据块的目标块地址。
示例性地,目标查找单元中存储有目标分片内所有对象的对象地址信息,目标查找单元可以基于目标分片内任一对象的对象标识符,查找到该对象的对象地址信息。
示例性地,上述目标对象地址信息包括:存储有目标对象的目标节点的目标网络地址,以及目标节点中具体存储目标对象的目标数据块的目标块地址。基于该目标网络地址,可以确定目标节点,基于该目标块地址,可以从目标节点中确定该目标对象的具体存储位置,并获取该目标对象。
需要说明的是,本申请实施例中,存储节点的数据块的块大小为4兆字节(MB),每个数据块可以存储一个或者多个对象。若一个对象大于4MB,则可以将该对象拆分为多个小对象。在向磁盘中写入对象时,会持续将对象写入到一个数据块中,直至该数据块被写满。每个数据块均包含一个首部,该首部中包含所存储对象的对象标识符和每个对象的地址偏移量,且对象从数据块的末尾开始存储。
具体地,上述步骤202,可以包括以下步骤202a和步骤202b:
步骤202a、所述目标查找单元基于所述目标块地址对所述对象获取请求进行调整,并基于所述目标网络地址将携带有所述目标块地址的所述对象获取请求转发至所述目标节点。
示例性地,目标查找单元在查找到目标对象的目标对象地址信息之后,便可以基于该目标对象地址中的目标网络地址确定存储有目标对象的目标节点,并将携带有目标块地址的对象获取请求转发至该目标节点。
步骤202b、所述目标节点在接收到携带有所述目标块地址的所述对象获取请求的情况下,基于所述目标块地址获取所述目标对象,并将所述目标对象发送至所述客户端。
示例性地,目标节点在接收到目标查找单元转发的对象获取请求之后,便可以基于该对象获取请求中携带的目标块地址以及目标对象标识符,从目标数据块中提取出该目标对象,并由目标节点响应于该对象获取请求,将目标对象直接发送至客户端。
可以理解的是,该对象获取请求中还携带有客户端的网络地址,因此,目标节点可以在获取到目标对象之后,基于该客户端的网络地址,将目标对象发送至客户端。
示例性地,在本申请实施例中,存储节点中的一个数据块中可以存储一个或者多个对象,基于此,在存储节点从数据块中提取对象时,可以包括以下两种处理方式:
处理方式1:
在处理方式1中,上述目标数据块中存储有一个对象,或者,该目标数据块中存储有多个对象、且所述目标对象为所述目标数据块中读取顺序第一的对象,此时,可以直接基于该对象的地址偏移量从数据块中提取出该对象。
具体地,上述步骤202b中基于所述目标块地址获取所述目标对象的步骤,可以包括以下步骤202b1和步骤202b2:
步骤202b1、所述目标节点基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量。
步骤202b2、基于所述目标块地址以及所述目标地址偏移量从所述目标数据块中提取所述目标对象。
示例性地,当目标数据块中仅存储有一个对象、或者,目标数据块中存储有多个对象、但目标对象为该目标数据块中读取顺序第一的对象时,可以直接根据目标数据块的块地址以及该目标对象的地址偏移量提取出该目标对象。
举例说明,如图3中(A)所示,该数据块中仅存储有一个对象,此时,可以直接根据数据块的块地址以及对象的地址偏移量提取出该对象。需要说明的是,数据块中未存储对象的存储空间,可以使用0值进行填充。或者,如图3中(B)所示,该数据块中存储有多个对象,但客户端所需的对象1为读取顺序第一的对象,此时,也可以直接根据数据块的块地址以及对象的地址偏移量提取出该对象。
处理方式2:
在处理方式2中,上述目标数据块中存储有多个对象,且目标对象不为该目标数据块中读取顺序第一的对象,此时,可以直接基于该对象的地址偏移量从数据块中提取出该对象。
具体地,上述步骤202b中基于所述目标块地址获取所述目标对象的步骤,可以包括以下步骤202b3和步骤202b4:
步骤202b3、所述目标节点基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量,以及所述目标数据块存储的多个对象中读取顺序在所述目标对象之前的参考对象的地址偏移量。
步骤202b4、基于所述目标块地址以及所述参考对象的地址偏移量,确定所述目标数据块中存储所述目标对象的起始地址,并根据所述起始地址以及所述目标地址偏移量从所述目标数据块中提取所述目标对象。
示例性地,当目标数据块内存储有多个对象,且客户端所需的目标对象不为该目标数据块中读取顺序第一的对象时,可以基于该目标对象的读取顺序,获取该读取顺序在该目标对象之前的其他对象的地址偏移量,来计算存储所述目标对象的起始地址,并基于该目标对象的地址偏移量提取出该目标对象。
举例说明,如图3中(B)所示,当客户端需要获取数据块中存储的对象3时,需要存储节点需要根据对象1的地址偏移量和对象2的地址偏移量以及数据块的块地址来计算出对象3的起始地址。之后,基于该起始地址以及对象3的地址偏移量,便可以提取出对象3。
在一种可能的实现方式中,为了增加分布式存储系统的容灾能力,上述目标映射关系包括:所述目标分片的分片标识与多个查找单元所在节点的网络地址之间的映射关系;所述多个查找单元为分布于不同节点中完全相同的查找单元;所述目标查找单元为所述多个查找单元中的任一个。
示例性地, 基于图1,如图4所示,一个对象可以存储到3个存储节点中,且一个分片可以对应三个相同的查找单元,每个查找单元均记录有对象1的一个物理存储位置。举例说明,如图4所示,对象1分别存储在存储节点1、存储节点2和存储节点3中,查找单元1记录存储节点1的IP地址以及该存储节点1中存储有对象1的数据块的块地址,查找单元2记录存储节点2的IP地址以及该存储节点2中存储有对象1的数据块的块地址;查找单元3记录存储节点3的IP地址以及该存储节点3中存储有对象1的数据块的块地址。当客户端需要获取对象1时,可以向上述三个查找单元中的任一个查找单元发送对象查找请求。
示例性地,如图5所示,为本申请实施例提供的对象查找方法的详细流程示意图。首先,客户端发送针对对象4的对象获取请求给对象4所属分片所对应的查找单元。查找单元基于对象4的对象标识符确定该对象的loc(即上述对象地址信息),之后,查找单元基于该loc将对象获取请求转发至存储有该对象4的存储节点1。存储节点1基于loc中的块地址从对应的数据块中提取出对象4,并将对象4直接发送到客户端。
需要说明的是,目标查找单元运行于存储节点的内存中,以便实现数据的快速访问,提高客户端获取目标对象的效率。目标对象的对象地址信息可以存储在目标查找单元中,也可以存储在目标分片中,目标查找单元可以从任何途径获取目标对象的对象地址信息。
可选地,在本申请实施例中,客户端在获取对象之前,还需要将对象放置在分布式存储系统中,即本申请实施例还提供了一种对象放置方法。
示例性地,所述分布式存储系统包括一个处于活动状态的活动索引单元以及多个处于非活动状态的索引单元。处于活动状态的索引单元负责处理新放置到存储系统中的对象的元数据信息,处于非活动状态的索引单元只需要在大量对象被重新映射放置时才需要更新。本申请实施例中,将对象的放置和查找分离为两个独立的单元(即上述索引单元和查找单元),不仅能够提高分布式对象存储系统集群的可伸缩性和查找高效率,还能够避免中心化分布式存储元数据节点的性能瓶颈问题。
示例性地,本申请提供的对象查找方法的核心思想在于对查找单元和索引单元结构进行分片,以实现低内存开销和高可扩展性。将对象进行分片管理并将分片内的对象分布式存储在不同的存储节点上,使得对象的存储位置不会影响索引单元和查找单元的构建,可以保持对象数据的映射位置自适应以及高灵活性。
示例性地,在本申请实施例中,每个索引单元负责一个包含固定数量的分片,对象按照时间序列顺序分配给索引单元,当客户端放置对象时,由索引单元为每个对象分配一个全局位移的对象标识符OID。区别与相关技术中所使用的对象标识符,本申请实施例中的对象标识符的前缀为对象所属分片的分片标识(即分片ID),分片标识可以视为一个粗粒度的时间戳。基于此,客户端可以根据对象标识符直接确定对象所属的分片标识,而不需要在内存中保留一个额外的数据结构进行查询,可以极大地降低存储节点的内存开销,降低对存储节点I/O性能的要求。
示例性地,上述步骤201之前,本申请实施例提供的对象查找方法,还可以包括以下步骤301至步骤303:
步骤301、所述活动索引单元接收所述客户端发送的针对所述目标对象的对象放置请求,将所述目标对象添加至所述目标分片中,并为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的所述目标数据块。
示例性地,处于活动状态的索引单元(即上述活动索引单元)在接收到客户端发送的对象放置请求之后,可以为该对象分配一个全局唯一的对象标识符,以及为该对象分配一个物理存储地址,生成对象的地址二元组,并将该地址二元组发送给客户端。
示例性地,考虑到各个存储节点的负载均衡,在为对象分配存储空间时,需要结合各个存储节点的磁盘空间、网络带宽、内存使用率和中央处理器(Central ProcessingUnit, CPU)使用率,优先将对象存储到负载较低存储节点中。每个存储节点上需要划分出特定大小的存储空间,并对其进行分块,每个数据块的大小为4MB,每个数据块用于存储一个或者多个对象,各个存储节点上均有一个位图bitmap来表示存储节点上每个数据块是否被分配。
示例性地,处于活动状态的索引单元可以基于存储节点上的位图来跟踪每个存储节点的可用存储容量,并在客户端放置对象时,将对象划分到可用的数据块中。
步骤302、所述活动索引单元基于所述目标数据块所属节点的网络地址以及所述目标数据块的目标块地址生成所述目标对象地址信息,并基于为所述目标对象分配的对象标识符以及所述目标对象地址信息生成目标地址二元组。
示例性地,上述地址二元组为对象标识符以及地址的二元组,即OID-Location二元组,以进行表示。其中,i为对象的对象标识符,/>包括存储该对象的存储节点的网络地址以及该存储节点中具体存储该对象的数据块的块地址。
步骤303、所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元。
其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息将所述目标对象发送至所述目标节点。
示例性地,客户端在接收到该目标地址二元组之后,便可以基于该地址二元组中的目标对象地址信息(即上述)将目标对象发送至对应的存储节点中。同时,活动索引单元还可以基于生成的目标地址二元组更新查找单元。
示例性地,如图6所示,为本申请实施例提供的对象查找方法所涉及的客户端将对象放置到分布式存储系统的完整流程示意图。如图6所示,当客户端需要将对象4放置到分布式存储系统中时,可以分布式存储系统发送对象放置请求,将对象4通过处于活动状态的索引单元添加到该活动单元管理的分片中。具体地,分布式存储系统在接收到客户端发送的对象放置请求后,可以将该对象放置交由处于活动状态的索引单元来进行处理。索引单元接收到对象放置请求后为该对象4分配对象标识符,以及物理存储空间,生成对象4的地址二元组,并将该地址二元组发送至客户端。同时,基于该地址二元组更新由索引单元构建的查找单元。
示例性地,如图6所示,客户端在接收到索引单元发送的对象4的地址二元组之后,基于地址二元组中的loc(即上述对象地址信息)将对象4放置到存储节点1中。具体地,客户端可以将对象4发送到对象地址信息指示的存储节点1中,并由储存节点1基于对象地址信息中的块地址将对象4存储到对应的数据块中。
在一种可能的实现方式中,索引单元可以将地址二元组发送至查找单元,以便查找单元能够更新查找单元中对象的地址二元组。
具体地,上述步骤303中基于所述目标对象地址信息更新所述目标查找单元的步骤,可以包括以下步骤303a:
步骤303a、所述目标查找单元基于所述目标对象地址信息更新所述目标查找单元中的对象地址信息列表。
其中,所述对象地址信息列表包括:至少一个对象地址信息。
示例性地,上述活动索引单元可以将目标对象的目标地址二元组发送给目标查找单元,目标查找单元在接收到该目标地址二元组之后,便可以更新其出处的对象地址信息列表。
示例性地,上述步骤303之后,本申请实施例提供的对象查找方法,还可以包括以下步骤304:
步骤304、所述目标节点在接收到所述客户端发送的所述目标对象的情况下,基于所述目标对象标识符以及所述目标对象地址信息中的目标块地址,将所述目标对象存储至所述目标数据块中,并在所述目标数据块的首部生成所述目标对象在所述目标数据块中的所述目标地址偏移量。
其中,所述目标对象为所述客户端基于所述目标网络地址发送至所述目标节点的;所述目标节点通过所述客户端或者所述活动索引单元获取到所述目标对象标识符以及所述目标块地址。
示例性地,目标节点在接收到目标对象后,便可以基于目标数据块的目标块地址将目标对象存储到目标数据块中,并在目标数据块的首部存储该目标对象的对象标识符以及地址偏移量。
示例性地,当活动索引单元管理的目标分片中无法再添加更多的对象时,便可以将该活动索引单元由活动状态转换为非活动状态,并将其从内存中转移到磁盘空间中。
示例性地,上述步骤303之后,本申请实施例提供的对象查找方法,还可以包括以下步骤305:
步骤305、在所述目标分片无法再添加更多对象的情况下,将所述活动索引单元的状态调整为非活动状态,并构建新的索引单元作为所述分布式存储系统中唯一处于活动状态的索引单元。
其中,处于活动状态的索引单元所管理的数据存储于所在节点的内存中;处于非活动状态的索引单元所管理的数据存储于所在节点的磁盘空间中。
示例性地,当目标分片不能再添加新的对象时,管理该目标分片的索引单元被切换为非活动状态,并将其存储到存储节点的磁盘空间中。此时,查找单元被认为是不可变的,因此在内存中不再需要再存储索引单元来对查找单元进行更新。非活动状态的索引单元只在很少的情况下使用,新的索引单元开始接收新的对象。
在一种可能的实现方式中,分布式存储系统还需要具有一定的容错能力,因此,可以将一个对象以及对象的备份存储到不同的存储节点中,并通过对应数量的查找单元来管理,一个查找单元管理一个对象。
具体地,上述步骤301中为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的所述目标数据块的步骤,可以包括以下步骤301a:
步骤301a、所述活动索引单元为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的多个数据块。
其中,所述多个数据块分布于不同的存储节点;所述目标数据块为所述多个数据块中的任一个;多个数据块中每个数据块均用于存储所述目标对象的备份。
举例说明,如图4所示,索引单元可以构建多个查找单元,同时,将对象1的每个备份都存储到一个存储节点中,每个查找单元管理一个存储节点中的对象1。即用户可以通过查找单元1至3中的任一个来获取对象1。
具体地,基于上述步骤301a,上述步骤302,还可以包括以下步骤302a1和步骤302a2:
步骤302a1、所述活动索引单元基于所述多个数据块中每个数据块所属存储节点的网络地址以及每个数据块的块地址,生成每个数据块对应的对象地址信息。
步骤302a2、所述活动索引单元基于所述目标对象的所述目标标识符以及每个数据块对应的对象地址信息,生成所述目标地址二元组。
示例性地,活动索引单元可以为目标对象分配多个存储空间,且多个存储空间位于不同的存储节点内,并通过相同数量的查找单元来进行管理。最后,将目标对象的多个备份分别存储到上述多个存储空间中,每个存储空间存储一个完整的目标对象的备份。目标对象的每个备份均有其对应的对象地址信息,即上述目标地址二元组中包括每个备份的对象地址信息,形式如下所示:
/>
示例性地,客户端可以基于该目标地址二元组,从中选择任一个对象地址信息(即loc)对应的查找单元来获取目标对象。
具体地,基于上述步骤302a1和步骤302a2,上述步骤303中基于所述目标对象地址信息更新所述目标查找单元,可以包括以下步303a:
步骤303a、基于所述目标对象地址信息中包含的每个数据块对应的对象地址信息,更新多个查找单元中每个查找单元存储的对象地址信息。
其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息将所述目标对象发送至所述目标节点;所述多个查找单元为分布于不同节点中完全相同的查找单元;所述目标查找单元为所述多个查找单元中的任一个。
示例性地,上述活动索引单元在生成包含有多个对象地址信息的地址二元组之后,还需要基于多个对象地址信息,分别更新每个对象地址信息对应的查找单元。
可选地,在本申请实施例中,不仅提供了对象的放置和查找策略,还提供了对象的删除和修改策略。
示例性地,上述步骤303之后,本申请实施例提供的对象查找方法,还可以包括以下步骤401:
步骤401、所述目标查找单元在接收到所述客户端针对所述目标对象发送的对象修改请求的情况下,基于所述目标对象标识符确定所述目标对象地址信息,并将所述目标对象地址信息发送至所述客户端。
其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息中的所述目标网络地址以及所述目标块地址,将修改后的待替换对象发送至所述目标节点中,并由所述目标节点根据所述目标块地址将所述目标块地址中存储的所述目标对象替换为所述待替换对象。
示例性地,在本申请实施例中,针对目标对象的查找、删除以及修改,均不需要与索引单元进行通信。目标查找单元在接收到客户端发送的针对目标对象的对象修改请求之后,便可以根据对象修改请求中携带的目标对象标识确定目标对象地址信息,并将该目标对象地址信息发送至客户端。
示例性地,客户端在接收到该目标对象地址信息后,便可以直接与目标节点进行通信,上传最新的目标对象来替换原有的目标对象。
需要说明的是,当目标节点在接收到修改后的目标对象时,可以基于块地址找到对应的目标数据块,并根据目标数据块中目标对象的地址偏移量将存储的目标对象删除,并将修改后的目标对象存储到原目标对象的存储空间,并在首部记录新的地址偏移量。
示例性地,上述步骤303之后,本申请实施例提供的对象查找方法,还可以包括以下步骤402至步骤404:
步骤402、所述目标查找单元在接收到所述客户端针对所述目标对象发送的对象删除请求的情况下,基于所述目标对象地址信息中的所述目标网络地址将携带有所述目标块地址的对象删除请求转发至所述目标节点。
步骤403、所述目标节点在接收到携带有所述目标块地址的对象删除请求的情况下,基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量。
步骤404、所述目标节点基于所述目标块地址以及所述目标地址偏移量将所述目标对象从所述目标数据块中删除,并向所述客户端反馈对象删除信息。
示例性地,当目标查找对象接收到客户端发送的针对目标对象的对象删除请求时,首先也是需要获取该目标对象的目标对象地址信息,并基于目标对象地址信息中的目标网络地址确定目标节点。之后,将携带有目标对象地址信息中目标块地址的对象删除请求转发至目标节点。
示例性地,目标节点在接收到携带有所述目标块地址的对象删除请求的情况下,确定目标对象的存储位置,并基于目标对象的存储位置将目标对象删除。同时,还需要通知客户端,以便客户端能够停止维护上述目标映射关系。
需要说明的是,本申请实施例提供的对象查找方法具有以下优点:
1、具有对象映射放置存储自适应性,支持根据应用程序对数据容错、负载平衡、将对象放置到分布式存储系统的任意节点上。2、内存资源占用成本低,本申请具有最小化元数据存储资源占用开销,降低分布式存储数据存储的成本。3、高效查找低延迟。需要高效的执行对象的放置put/获取get/修改modify/删除delete操作。
本申请实施例提供的对象查找方法,能够满足不同的数据应用以及不同的数据放置策略对存储系统的数据放置有不同的要求,同时能够解决如下场景需求:
1、数据容错。用户的应用程序要求某些数据的副本数据位于不同的故障域以提高分布式存储系统的健壮性。
2、并发性。在并行计算应用程序中可能需要将属于一个或多个类型的对象存储在不同的存储服务节点上,以提高客户端访问的并发性。
3、负载平衡。在分布式存储系统中,最终的功能是将数据放置在不同的存储节点上,使任意一个节点都不会因为热数据的请求过大造成积压,如果负载不均衡,慢速设备将成为分布式存储系统整体性能的瓶颈。
本申请实施例提供的对象查找方法,在客户端获取目标对象时,首先获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;之后,从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。如此,不仅可以降低分布式存储系统对内存资源的占用、以及对存储节点的I/O性能要求,还能够极大地提高分布式存储系统的对象查找效率。
需要说明的是,本申请实施例中,上述各个方法附图所示的。对象查找方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的对象查找方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行对象查找方法,该方法包括:获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的对象查找方法,该方法包括:获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的对象查找方法,该方法包括:获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
再一方面,本申请还提供了一种分布式存储系统,该系统包括:多个分片,一个分片由一个索引单元进行管理,一个索引单元构建一个查找单元;一个分片包括多个对象的对象地址信息、且所述多个对象分布式存储于所述分布式存储系统的多个存储节点中,所述分布式存储系统能够实现如上述第一方面中任一种所述对象查找方法的步骤,该方法包括:获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (20)

1.一种对象查找方法,其特征在于,应用于分布式存储系统,所述分布式存储系统包括:多个分片,一个分片由一个索引单元进行管理,一个索引单元构建一个查找单元;一个分片包括多个对象的对象地址信息、且所述多个对象分布式存储于所述分布式存储系统的多个存储节点中,所述方法包括:
获取客户端发送的目标对象的目标对象标识符,并通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息;
从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端;
其中,所述目标对象标识符是由管理目标分片的目标索引单元分配的;所述目标分片为所述目标对象所属的分片;所述目标对象标识符包含所述目标分片的分片标识;所述目标查找单元为:由所述目标索引单元构建的查找单元;所述目标分片为所述目标索引单元管理的分片;所述目标节点为所述分布式存储系统中存储有所述目标对象的存储节点;所述目标数据块为所述目标节点中存储所述目标对象的数据块。
2.根据权利要求1所述的方法,其特征在于,所述获取客户端发送的目标对象的目标对象标识符之前,所述方法还包括:
所述目标查找单元所在的存储节点在接收所述客户端发送的对象获取请求的情况下,基于所述对象获取请求中携带的所述目标对象标识符,确定所述目标对象所属的所述目标分片的分片标识;
所述目标查找单元所在的存储节点基于所述目标分片的分片标识,确定与所述目标分片对应的所述目标查找单元,并由所述目标查找单元来响应所述对象获取请求;
其中,所述对象获取请求为:所述客户端基于目标映射关系向所述目标查找单元所在的存储节点发送的;所述目标映射关系为:所述目标分片的分片标识与所述目标查找单元所在节点的网络地址之间的映射关系。
3.根据权利要求2所述的方法,其特征在于,所述获取客户端发送的目标对象的目标对象标识符,包括:
所述目标查找单元在接收到所述对象获取请求的情况下,对所述对象获取请求进行解析,从所述对象获取请求中提取出所述目标对象标识符。
4.根据权利要求2所述的方法,其特征在于,所述目标映射关系包括:所述目标分片的分片标识与多个查找单元所在节点的网络地址之间的映射关系;所述多个查找单元为分布于不同节点中完全相同的查找单元;所述目标查找单元为所述多个查找单元中的任一个。
5.根据权利要求2或3所述的方法,其特征在于,所述通过目标查找单元获取与所述目标对象标识符相匹配的目标对象地址信息,包括:
所述目标查找单元从多个对象地址信息中确定与所述目标对象标识符相匹配的目标对象地址信息;
其中,所述目标对象地址信息包括:所述目标节点的目标网络地址,存储有所述目标对象的目标数据块的目标块地址。
6.根据权利要求5所述的方法,其特征在于,所述从所述目标对象地址信息指示的目标节点的目标数据块中获取到所述目标对象,并将所述目标对象发送至所述客户端,包括:
所述目标查找单元基于所述目标块地址对所述对象获取请求进行调整,并基于所述目标网络地址将携带有所述目标块地址的所述对象获取请求转发至所述目标节点;
所述目标节点在接收到携带有所述目标块地址的所述对象获取请求的情况下,基于所述目标块地址获取所述目标对象,并将所述目标对象发送至所述客户端。
7.根据权利要求6所述的方法,其特征在于,所述目标数据块中存储有一个对象,或者,所述目标数据块中存储有多个对象、且所述目标对象为所述目标数据块中读取顺序第一的对象;
所述基于所述目标块地址获取所述目标对象,包括:
所述目标节点基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量;
基于所述目标块地址以及所述目标地址偏移量从所述目标数据块中提取所述目标对象。
8.根据权利要求6所述的方法,其特征在于,所述目标数据块中存储有多个对象、且所述目标对象不为所述目标数据块中读取顺序第一的对象;
所述基于所述目标块地址获取所述目标对象,包括:
所述目标节点基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量,以及所述目标数据块存储的多个对象中读取顺序在所述目标对象之前的参考对象的地址偏移量;
基于所述目标块地址以及所述参考对象的地址偏移量,确定所述目标数据块中存储所述目标对象的起始地址,并根据所述起始地址以及所述目标地址偏移量从所述目标数据块中提取所述目标对象。
9.根据权利要求1所述的方法,其特征在于,所述分布式存储系统包括一个处于活动状态的活动索引单元以及多个处于非活动状态的索引单元;
所述获取客户端发送的目标对象的目标对象标识符之前,所述方法还包括:
所述活动索引单元接收所述客户端发送的针对所述目标对象的对象放置请求,将所述目标对象添加至所述目标分片中,并为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的所述目标数据块;
所述活动索引单元基于所述目标数据块所属节点的网络地址以及所述目标数据块的目标块地址生成所述目标对象地址信息,并基于为所述目标对象分配的对象标识符以及所述目标对象地址信息生成目标地址二元组;
所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元;
其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息将所述目标对象发送至所述目标节点。
10.根据权利要求9所述的方法,其特征在于,所述活动索引单元将所述目标地址二元组发送至所述客户端之后,所述方法还包括:
所述目标节点在接收到所述客户端发送的所述目标对象的情况下,基于所述目标对象标识符以及所述目标对象地址信息中的目标块地址,将所述目标对象存储至所述目标数据块中,并在所述目标数据块的首部生成所述目标对象在所述目标数据块中的目标地址偏移量;
其中,所述目标对象为所述客户端基于所述目标对象地址信息中的目标网络地址发送至所述目标节点的;所述目标节点通过所述客户端或者所述活动索引单元获取到所述目标对象标识符以及所述目标块地址。
11.根据权利要求9所述的方法,其特征在于,所述基于所述目标对象地址信息更新所述目标查找单元,包括:
所述目标查找单元基于所述目标对象地址信息更新所述目标查找单元中的对象地址信息列表;
其中,所述对象地址信息列表包括:至少一个对象地址信息。
12.根据权利要求9所述的方法,其特征在于,所述活动索引单元接收所述客户端发送的针对所述目标对象的对象放置请求,将所述目标对象添加至所述目标分片中之后,所述方法还包括:
在所述目标分片无法再添加更多对象的情况下,将所述活动索引单元的状态调整为非活动状态,并构建新的索引单元作为所述分布式存储系统中唯一处于活动状态的索引单元;
其中,处于活动状态的索引单元所管理的数据存储于所在节点的内存中;处于非活动状态的索引单元所管理的数据存储于所在节点的磁盘空间中。
13.根据权利要求10所述的方法,其特征在于,所述活动索引单元为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的所述目标数据块,包括:
所述活动索引单元为所述目标对象分配对象标识符以及为所述目标对象分配用于存储所述目标对象的多个数据块;
其中,所述多个数据块分布于不同的存储节点;所述目标数据块为所述多个数据块中的任一个;多个数据块中每个数据块均用于存储所述目标对象的备份。
14.根据权利要求13所述的方法,其特征在于,所述活动索引单元基于所述目标数据块所属节点的网络地址以及所述目标数据块的目标块地址生成所述目标对象地址信息,并基于为所述目标对象分配的对象标识符以及所述目标对象地址信息生成目标地址二元组,包括:
所述活动索引单元基于所述多个数据块中每个数据块所属存储节点的网络地址以及每个数据块的块地址,生成每个数据块对应的对象地址信息;
所述活动索引单元基于所述目标对象的所述目标对象标识符以及每个数据块对应的对象地址信息,生成所述目标地址二元组。
15.根据权利要求14所述的方法,其特征在于,所述基于所述目标对象地址信息更新所述目标查找单元,包括:
基于所述目标对象地址信息中包含的每个数据块对应的对象地址信息,更新多个查找单元中每个查找单元存储的对象地址信息;
其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息将所述目标对象发送至所述目标节点;所述多个查找单元为分布于不同节点中完全相同的查找单元;所述目标查找单元为所述多个查找单元中的任一个。
16.根据权利要求9所述的方法,其特征在于,所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元之后,所述方法还包括:
所述目标查找单元在接收到所述客户端针对所述目标对象发送的对象修改请求的情况下,基于所述目标对象标识符确定所述目标对象地址信息,并将所述目标对象地址信息发送至所述客户端;
其中,所述客户端在接收到所述目标对象地址信息的情况下,基于所述目标对象地址信息中的目标网络地址以及目标块地址,将修改后的待替换对象发送至所述目标节点中,并由所述目标节点根据所述目标块地址将所述目标块地址中存储的所述目标对象替换为所述待替换对象。
17.根据权利要求9所述的方法,其特征在于,所述活动索引单元将所述目标地址二元组发送至所述客户端,并基于所述目标对象地址信息更新所述目标查找单元之后,所述方法还包括:
所述目标查找单元在接收到所述客户端针对所述目标对象发送的对象删除请求的情况下,基于所述目标对象地址信息中的目标网络地址将携带有所述目标块地址的对象删除请求转发至所述目标节点;
所述目标节点在接收到携带有所述目标块地址的对象删除请求的情况下,基于所述目标块地址确定所述目标数据块,并从所述目标数据块的首部获取与所述目标对象标识相对应的目标地址偏移量;
所述目标节点基于所述目标块地址以及所述目标地址偏移量将所述目标对象从所述目标数据块中删除,并向所述客户端反馈对象删除信息。
18.一种分布式存储系统,其特征在于,所述分布式存储系统包括:多个分片,一个分片由一个索引单元进行管理,一个索引单元构建一个查找单元;一个分片包括多个对象的对象地址信息、且所述多个对象分布式存储于所述分布式存储系统的多个存储节点中,所述分布式存储系统能够实现如权利要求1至17中任一项所述对象查找方法的步骤。
19.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至17任一项所述对象查找方法的步骤。
20.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述对象查找方法的步骤。
CN202311339284.2A 2023-10-17 2023-10-17 对象查找方法、系统、电子设备及存储介质 Active CN117075823B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311339284.2A CN117075823B (zh) 2023-10-17 2023-10-17 对象查找方法、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311339284.2A CN117075823B (zh) 2023-10-17 2023-10-17 对象查找方法、系统、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117075823A true CN117075823A (zh) 2023-11-17
CN117075823B CN117075823B (zh) 2024-02-02

Family

ID=88704680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311339284.2A Active CN117075823B (zh) 2023-10-17 2023-10-17 对象查找方法、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117075823B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870202A (zh) * 2012-12-10 2014-06-18 上海优刻得信息科技有限公司 一种块设备的分布式存储方法和系统
CN110569302A (zh) * 2019-08-16 2019-12-13 苏宁云计算有限公司 一种基于lucene的分布式集群的物理隔离的方法及装置
CN111352577A (zh) * 2018-12-24 2020-06-30 杭州海康威视系统技术有限公司 一种对象存储方法及装置
US20200250163A1 (en) * 2019-01-31 2020-08-06 Thoughtspot, Inc. Index Sharding
CN114675776A (zh) * 2020-12-24 2022-06-28 北京金山云网络技术有限公司 资源存储方法和装置、存储介质和电子设备
CN115129789A (zh) * 2022-07-27 2022-09-30 济南浪潮数据技术有限公司 一种分布式对象存储系统的桶索引存储方法、装置及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870202A (zh) * 2012-12-10 2014-06-18 上海优刻得信息科技有限公司 一种块设备的分布式存储方法和系统
CN111352577A (zh) * 2018-12-24 2020-06-30 杭州海康威视系统技术有限公司 一种对象存储方法及装置
US20200250163A1 (en) * 2019-01-31 2020-08-06 Thoughtspot, Inc. Index Sharding
CN110569302A (zh) * 2019-08-16 2019-12-13 苏宁云计算有限公司 一种基于lucene的分布式集群的物理隔离的方法及装置
CN114675776A (zh) * 2020-12-24 2022-06-28 北京金山云网络技术有限公司 资源存储方法和装置、存储介质和电子设备
CN115129789A (zh) * 2022-07-27 2022-09-30 济南浪潮数据技术有限公司 一种分布式对象存储系统的桶索引存储方法、装置及介质

Also Published As

Publication number Publication date
CN117075823B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
US11153380B2 (en) Continuous backup of data in a distributed data store
US11301154B2 (en) Distributed storage method and device
US10437721B2 (en) Efficient garbage collection for a log-structured data store
US10853242B2 (en) Deduplication and garbage collection across logical databases
US10275184B2 (en) Framework for volatile memory query execution in a multi node cluster
US10534768B2 (en) Optimized log storage for asynchronous log updates
JP5500257B2 (ja) ストレージシステム
US11442961B2 (en) Active transaction list synchronization method and apparatus
CN106294190B (zh) 一种存储空间管理方法及装置
US11080253B1 (en) Dynamic splitting of contentious index data pages
US10725666B2 (en) Memory-based on-demand data page generation
US7689764B1 (en) Network routing of data based on content thereof
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
US10908834B2 (en) Load balancing for scalable storage system
US20160364407A1 (en) Method and Device for Responding to Request, and Distributed File System
CN110908589B (zh) 数据文件的处理方法、装置、系统和存储介质
US9870386B1 (en) Reducing I/O operations for on-demand demand data page generation
US10909143B1 (en) Shared pages for database copies
US10503737B1 (en) Bloom filter partitioning
US20180276267A1 (en) Methods and system for efficiently performing eventual and transactional edits on distributed metadata in an object storage system
CN116150160A (zh) 数据库集群处理节点的调整方法、装置及存储介质
US20220342888A1 (en) Object tagging
CN110618790A (zh) 基于重复数据删除的雾存储数据去冗余方法
US12026177B2 (en) Dynamic adaptive partition splitting
CN117075823B (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
GR01 Patent grant
GR01 Patent grant