CN111352577A - 一种对象存储方法及装置 - Google Patents
一种对象存储方法及装置 Download PDFInfo
- Publication number
- CN111352577A CN111352577A CN201811580291.0A CN201811580291A CN111352577A CN 111352577 A CN111352577 A CN 111352577A CN 201811580291 A CN201811580291 A CN 201811580291A CN 111352577 A CN111352577 A CN 111352577A
- Authority
- CN
- China
- Prior art keywords
- storage node
- online
- online storage
- fragment
- size
- 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
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/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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]
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种对象存储方法及装置,应用于分布式存储系统的网关中,所述分布式存储系统还包括至少一个存储节点,所述方法包括:接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点,以此确保分布式存储系统中存储节点的容量达到均摊,达到了各在线存储节点负载均衡的效果。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种对象存储方法及装置。
背景技术
在存储技术领域中,主要包括三大存储方式,分别为文件(File)存储、块(Block)存储与对象存储(Object-based Storage)。其中,文件存储是一种将独立的数据整合为集中化管理的数据中心,以便于对不同主机和应用服务器进行访问的技术;块存储指的是在一个独立磁盘冗余阵列(RAID)集中,一个控制器加入一组磁盘驱动器,然后提供固定大小的RAID块作为逻辑单元号(LUN)的卷;对象存储是一种新的网络存储架构,对象包含数据,且每个对象都在一个被称作存储池的扁平地址空间的同一级别里。
在现有技术中,对象存储系统中通常由中心管理节点管理对象索引信息,当数据对象达到千万级别时,中心管理节点的数据库压力急剧上升,当中心管理节点岩机或者出现其它异常时,无法对外提供服务,使得系统的稳定无法保证。
发明内容
有鉴于此,本申请提供一种对象存储方法及装置。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请提供了一种对象存储方法,所述方法应用于分布式存储系统的网关中,所述分布式存储系统还包括至少一个存储节点,所述方法包括:
接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;
根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;
控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点。
优选地,所述根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,包括:
获取所述分布式存储系统中各在线存储节点的剩余存储空间;
针对每个在线存储节点,根据该在线存储节点的剩余存储空间以及所述分布式存储系统的总剩余空间计算该在线存储节点的剩余空间比例,并根据该在线存储节点的剩余空间比例以及所述对象大小K确定该在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述分布式存储系统的总剩余空间为各个在线存储节点的剩余存储空间之和。
优选地,所述获取所述分布式存储系统中各在线存储节点的剩余存储空间,包括:
获取各存储节点的状态信息,所述状态信息至少包括:在线标识、剩余存储空间,其中,当所述在线标识为第一值时表示所述存储节点在线,当所述在线标识为第二值时表示所述存储节点离线;
将所述状态信息中在线标识为第一值的各存储节点确定为在线存储节点;
从已获取的各在线存储节点的状态信息中获取各在线存储节点的剩余存储空间。
优选地,所述获取各存储节点的状态信息,包括:
对与所述分布式存储系统连接的Zookeeper集群进行监听,所述Zookeeper集群包括多个顺序节点,所述顺序节点与所述分布式存储系统中的存储节点一一对应,且存储对应的存储节点的状态信息;
当监听到所述顺序节点写入状态信息时,从该顺序节点中读取所述状态信息。
优选地,所述数据上传请求还包括所述对象标识ID对应的对象数据,
所述控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点,包括:
将所述对象数据按照各在线存储节点的所述对象分片大小进行切分;
针对各在线存储节点,将切分得到的与该在线存储节点的对象分片大小对应的对象分片存储至该在线存储节点中。
优选地,所述控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点,包括:
将各在线存储节点对应的对象分片大小发送至客户端,以由所述客户端将所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小进行切分,得到各在线存储节点对应的对象分片;
接收所述客户端上传的各在线存储节点对应的对象分片,并将所述对象分片存储至对应的在线存储节点中。
优选地,在控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点的步骤之后,所述方法还包括:
针对各个在线存储节点,获取所述在线存储节点存储所述对象分片的目标存储位置;
根据所述目标存储位置生成所述在线存储节点存储的对象分片的索引信息;
将所述索引信息发送至该在线存储节点中,以使得所述在线存储节点根据所述索引信息,在检测到针对存储的对象分片对应的对象数据的数据下载请求时,向所述网关返回该对象分片。
优选地,所述在线存储节点存储的对象分片的索引信息包括所述对象标识ID、所述对象大小K,所述在线存储节点存储对象分片的目标存储位置、对象分片大小、切片号、上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识;其中,所述切片号通过所述在线存储节点对应的顺序节点的顺序确定。
优选地,所述方法还包括:
接收客户端发送的数据下载请求,所述数据下载请求包括待下载的目标对象数据的目标对象标识;
从存储所述目标对象标识对应的对象分片的在线存储节点中下载所述对象分片;
按照所述切片号组合下载的对象分片得到目标对象数据,并将所述目标对象数据返回所述客户端。
第二方面,本申请提供了一种对象存储装置,所述装置应用于分布式存储系统的网关中,所述分布式存储系统还包括至少一个存储节点,所述装置包括:
数据上传请求接收模块,用于接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;
对象分片大小确定模块,用于根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;
对象存储模块,用于控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点。
优选地,所述对象分片大小确定模块包括:
剩余存储空间获取子模块,用于获取所述分布式存储系统中各在线存储节点的剩余存储空间;
剩余空间比例计算子模块,用于针对每个在线存储节点,根据该在线存储节点的剩余存储空间以及所述分布式存储系统的总剩余空间计算该在线存储节点的剩余空间比例;
对象分片大小确定子模块,用于根据该在线存储节点的剩余空间比例以及所述对象大小K确定该在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述分布式存储系统的总剩余空间为各个在线存储节点的剩余存储空间之和。
优选地,所述剩余存储空间获取子模块包括:
状态信息获取单元,用于获取各存储节点的状态信息,所述状态信息至少包括:在线标识、剩余存储空间,其中,当所述在线标识为第一值时表示所述存储节点在线,当所述在线标识为第二值时表示所述存储节点离线;
在线存储节点确定单元,用于将所述状态信息中在线标识为第一值的各存储节点确定为在线存储节点;
剩余存储空间获取单元,用于从已获取的各在线存储节点的状态信息中获取各在线存储节点的剩余存储空间。
优选地,所述状态信息获取单元具体用于:
对与所述分布式存储系统连接的Zookeeper集群进行监听,所述Zookeeper集群包括多个顺序节点,所述顺序节点与所述分布式存储系统中的存储节点一一对应,且存储对应的存储节点的状态信息;
当监听到所述顺序节点写入状态信息时,从该顺序节点中读取所述状态信息。
优选地,所述数据上传请求还包括所述对象标识ID对应的对象数据,
所述对象存储模块具体用于:
将所述对象数据按照各在线存储节点的所述对象分片大小进行切分;
针对各在线存储节点,将切分得到的与该在线存储节点的对象分片大小对应的对象分片存储至该在线存储节点中。
优选地,所述对象存储模块具体用于:
将各在线存储节点对应的对象分片大小发送至客户端,以由所述客户端将所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小进行切分,得到各在线存储节点对应的对象分片;
接收所述客户端上传的各在线存储节点对应的对象分片,并将所述对象分片存储至对应的在线存储节点中。
优选地,所述装置还包括:
目标存储位置确定模块,用于针对各个在线存储节点,获取所述在线存储节点存储所述对象分片的目标存储位置;
索引信息生成模块,用于根据所述目标存储位置生成所述在线存储节点存储的对象分片的索引信息;
索引信息发送模块,用于将所述索引信息发送至该在线存储节点中,以使得所述在线存储节点根据所述索引信息,在检测到针对存储的对象分片对应的对象数据的数据下载请求时,向所述网关返回该对象分片。
优选地,所述在线存储节点存储的对象分片的索引信息包括所述对象标识ID、所述对象大小K,所述在线存储节点存储对象分片的目标存储位置、对象分片大小、切片号、上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识;其中,所述切片号通过所述在线存储节点对应的顺序节点的顺序确定。
优选地,所述装置还包括:
下载请求接收模块,用于接收客户端发送的数据下载请求,所述数据下载请求包括待下载的目标对象数据的目标对象标识;
对象分片下载模块,用于从存储所述目标对象标识对应的对象分片的在线存储节点中下载所述对象分片;
对象分片组合模块,用于按照所述切片号组合下载的对象分片得到目标对象数据;
对象数据返回模块,用于将所述目标对象数据返回所述客户端。
本申请实施例提供的技术方案可以包括以下有益效果:
在本申请实施例中,由网关来处理客户端发送的请求,并根据分布式存储系统中各在线存储节点的剩余空间,按照负载均衡方式动态地计算各在线存储节点用于存储对象数据的对象分片大小,然后控制待存储的对象数据按照各在线存储节点的对象分片大小存储至各在线存储节点中,以此来确保分布式存储系统中存储节点的容量达到均摊,达到了各在线存储节点负载均衡的效果。
附图说明
图1是本申请一示例性实施例示出的一种对象存储方法实施例的步骤流程图;
图2是本申请一示例性实施例示出的分布式存储系统架构图;
图3是本申请另一示例性实施例示出的一种对象存储方法实施例的步骤流程图;
图4是本申请又一示例性实施例示出的一种对象存储方法实施例的步骤流程图;
图5是本申请的装置所在设备的一种硬件结构图;
图6是本申请一示例性实施例示出的一种对象存储装置实施例的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参考图1,示出了本申请一示例性实施例示出的一种对象存储方法实施例的步骤流程图,本申请实施例可以应用于分布式存储系统的网关中。
其中,对象是存储数据的基本单元,也被称为对象存储的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一个键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时也可以在元信息中存储一些自定义的信息。
在本申请实施例中,分布式存储系统可以为去中心化的分布式对象云存储系统(后简称存储系统)。如图2的分布式存储系统架构图所示,本申请实施例中的存储系统可以包括至少一个存储节点(即图2中的对象存储节点)以及网关(即图2中的协议网关节点)。存储系统可以与Zookeeper集群以及LVS(Linux Virtual Server,虚拟服务器)集群进行连接通信,通过Zookeeper集群同步存储节点的相关信息,通过LVS集群实现客户端请求的负载均衡。
具体的,LVS由2部分程序组成,包括IPVS(ip Virtual Server)和IPVSADM,其中,IPVS是一段工作在内核空间的代码,是真正生效实现调度的代码。IPVSADM是另外一段工作在用户空间的代码,负责为IPVS内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)。
在一种实现方式中,通过LVS集群实现客户端请求的负载均衡的过程可以包括如下步骤:
1.当用户向前端负载均衡调度器(Director Server)发起请求时,调度器将请求发往至内核空间;
2.目的地址转换PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往输入INPUT链;
3.IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往源地址转换POSTROUTING链
4.POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的真实服务器中。
Zookeeper是Apache开源组织下的一个工程,旨在提供一个简单、可依赖、高性能的分布式应用程序通过的协同服务,包括命名服务、配置管理服务、同步和组服务。Zookeeper由两部分组成,分别是Zookeeper服务器和客户端,Zookeeper服务器采用集群的形式。客户端在连接Zookeeper服务集群时,客户端会按照一定的随机算法连接到其中一个服务器上。
Zookeeper的数据模型采用类似于文件系统的树结构,树上每个节点称为ZNode,而每个节点都可能有一个或多个子节点,每个节点都可以保存数据。需要注意的是,Zookeeper的设计目标不算传统的数据库存储或者大数据对象存储,而是协同数据的存储。因此ZNode存储的数据相对来说是较小的。
Zookeeper的ZNode有三种类型,一种是临时性的(ephemeral),即在创建者与Zookeeper服务器会话断开后,ZNode节点即被删除;另一种则是永久性的(persistent),即只有调用删除节点的API时,该节点才会被删除;还有一种是顺序(sequential)节点,顺序节点可以是持久的或临时的。当一个新的ZNode被创建为一个顺序节点时,ZooKeeper通过将10位的序列号附加到原始名称来设置ZNode的路径。例如,如果将具有路径/myapp的ZNode创建为顺序节点,则ZooKeeper会将路径更改为/myapp0000000001,并将下一个序列号设置为0000000002。如果两个顺序节点是同时创建的,那么ZooKeeper不会对每个ZNode使用相同的数字,顺序节点在锁定和同步中起重要作用。
当服务器上的ZNode节点的数据发生变化时,如创建、更新、删除节点等,客户端通过设置观察者监听数据的变化,得到数据变化的通知,在收到通知后,客户端可以做相应的处理,从而实现特定的功能。
当存储系统连接到Zookeeper集群上时,存储节点在启动后,首先判断Zookeeper中父节点/Cloud Stroage是否存在,不存在则创建父节点/Cloud Stroage,并在父节点下以网卡地址创建唯一的Zookeeper永久顺序节点,并将存储节点的相关信息定期写入创建的ZNode顺序节点中。在Zookeeper中,根据Zookeeper顺序节点的序列号可以生成循环链表,链表中相邻的存储节点之间相互建立心跳,当某台存储节点心跳超时时,建立互相链接的节点通知集群中其他节点,集群中所有正常的节点均摊异常节点上的业务,同时重新生成新的循环链表建立新的链接关系。
网关在启动后负责实时监听顺序节点中数据的变化(使用获取节点数据的操作,并注册一个节点数据观察者watcher),当顺序节点的数据发生变化时,通知网关监听的数据发生变化。
基于上述的分布式存储系统,本申请实施例具体可以包括如下步骤:
步骤101,接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;
在具体实现中,客户端上传的数据上传请求经过LVS集群负载均衡后,发送至网关,网关主要负责处理客户端的请求。
网关接收到数据上传请求后,可以从该请求中获取待上传的对象数据的对象大小K,以用于后续的切片分割。
在实际中,数据上传请求中除了包含对象大小K以外,还可以包括待上传的对象数据的对象标识(object key)ID,该对象标识ID用于唯一标识该对象数据。
步骤102,根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;
网关接收到客户端的数据上传请求以后,可以进一步获取各在线存储节点的剩余空间信息,并按照负载均衡方式确定各在线存储节点中用于存储该对象标识ID对应的对象数据的对象分片大小。
在本申请实施例的一种优选实施例中,步骤102进一步可以包括如下子步骤:
子步骤S11,获取所述分布式存储系统中各在线存储节点的剩余存储空间;
在本申请实施例的一种优选实施例中,子步骤S11进一步可以包括如下子步骤:
子步骤S111,获取各存储节点的状态信息;
网关可以获取分布式存储系统中各存储节点的状态信息,以便于对各存储节点进行调度。
作为一种示例,存储节点的状态信息至少可以包括如下信息:在线标识、总存储空间、剩余存储空间,其中,当在线标识为第一值(例如数值1)时表示该存储节点在线,当在线标识为第二值(例如数值0)时表示该存储节点离线。
在一种实施方式中,网关获取各存储节点的状态信息的步骤,进一步可以包括如下子步骤:
对与所述分布式存储系统连接的Zookeeper集群进行监听,所述Zookeeper集群包括多个顺序节点,所述顺序节点与所述分布式存储系统中的存储节点一一对应,且存储对应的存储节点的状态信息;当监听到所述顺序节点写入状态信息时,从该顺序节点中读取所述状态信息。
具体的,网关采用监听(Watcher)方式来实时监听各存储节点创建的顺序节点的数据变化,当检测到顺序节点中写入状态信息时,则可以从该顺序节点中读取该状态信息。
子步骤S112,将所述状态信息中在线标识为第一值的各存储节点确定为在线存储节点;
子步骤S113,从已获取的各在线存储节点的状态信息中获取各在线存储节点的剩余存储空间。
网关获得各存储节点的状态信息以后,会对获得的各存储节点的状态信息进行汇总,生成状态列表。例如,假设存储节点包括存储节点1-5,网关对其状态信息进行统计后可以得到如下表1的状态列表:
表1
随后,网关可以将状态列表中在线标识为数值1的存储节点作为在线存储节点,例如在表1中,将存储节点1、3、5作为在线存储节点,并从表1中各在线存储节点的状态信息中获得各在线存储节点的剩余存储空间,分别为27000、31500、13500。
子步骤S12,针对每个在线存储节点,根据该在线存储节点的剩余存储空间以及所述分布式存储系统的总剩余空间计算该在线存储节点的剩余空间比例,并根据该在线存储节点的剩余空间比例以及所述对象大小K确定该在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述分布式存储系统的总剩余空间为各个在线存储节点的剩余存储空间之和。
具体的,得到各在线存储节点的剩余存储空间以后,可以汇总所有在线存储节点的剩余存储空间,得到分布式存储系统的总剩余空间,然后计算各在线存储节点的剩余存储空间与该总剩余存储空间的比例,得到该在线存储节点的剩余空间比例。
例如,在表1的例子中,
在线存储节点1的剩余空间比例=27000/(27000+31500+13500)=37.5%;
在线存储节点3的剩余空间比例=31500/(27000+31500+13500)=43.75%;
在线存储节点5的剩余空间比例=13500/(27000+31500+13500)=18.75%。
得到各个在线存储节点的剩余空间比例以后,可以将该剩余空间比例作为该在线存储节点用于存储对象数据的对象分片大小的分片比例,计算该分片比例与待上传的对象数据的对象大小K的乘积,可以得到该在线存储节点用于存储对象数据的对象分片大小。
例如,假设对象大小K为150MB,则在表1的例子中,
在线存储节点1对应的对象分片大小=150MB*37.5%=56.25MB;
在线存储节点3对应的对象分片大小=150MB*43.75%=65.625MB;
在线存储节点5对应的对象分片大小=150MB*18.75%=28.125MB。
在本申请实施例中,可以根据各在线存储节点的剩余存储空间,进行动态的切片计算,使得存储节点集群中各在线存储节点的容量达到均摊。
步骤103,控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点。
当确定各在线存储节点用于存储的对象分片大小以后,可以控制该待存储的对象数据按照各在线存储节点用于存储的对象分片大小,将对象数据存储进行切分得到各对象分片,并将对象分片存储至对应的在线存储节点中。
例如,在上述表1的例子中,可以将对象大小K为150MB的对象数据切分成对象分片大小为56.25MB的对象分片1、对象分片大小为65.625MB的对象分片2以及对象分片大小为28.125MB的对象分片3。然后将对象分片1存储至在线存储节点1中,将对象分片2存储至在线存储节点3中,将对象分片3存储至在线存储节点5中。
在本申请实施例的一种优选实施例中,数据上传请求还可以包括对象标识ID对应的对象数据,则步骤103进一步可以包括如下子步骤:
子步骤S21,将所述对象数据按照各在线存储节点的所述对象分片大小进行切分;
子步骤S22,针对各在线存储节点,将切分得到的与该在线存储节点的对象分片大小对应的对象分片存储至该在线存储节点中。
在具体实现中,客户端上传的数据上传请求中可以包括对象数据,则网关在确定各在线存储节点对应的对象分片大小以后,可以直接根据各在线存储节点对应的对象分片大小将对象数据进行切分,得到与各对象分片大小对应的对象分片,并将各对象分片存储至对应的在线存储节点中。
在本申请实施例的另一种优选实施例中,当数据上传请求不包括对象标识ID对应的对象数据时,则步骤103进一步可以包括如下子步骤:
子步骤S31,将各在线存储节点对应的对象分片大小发送至客户端,以由所述客户端将所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小进行切分,得到各在线存储节点对应的对象分片;
子步骤S32,接收所述客户端上传的各在线存储节点对应的对象分片,并将所述对象分片存储至对应的在线存储节点中。
具体的,网关在确定各在线存储节点对应的对象分片大小以后,可以将各在线存储节点的标识以及对应的对象分片大小发送至客户端。则客户端可以按照各在线存储节点对应的对象分片大小将要上传的对象数据切分成对应大小的对象分片,并将该对象分片携带对应的在线存储节点的标识上传至网关中。
网关接收到各对象分片以后,按照各自携带的在线存储节点的标识将该对象分片存储至对应的在线存储节点中。
在本申请实施例中,由网关来处理客户端发送的请求,并根据分布式存储系统中各在线存储节点的剩余空间,按照负载均衡方式动态地计算各在线存储节点用于存储对象数据的对象分片大小,然后控制待存储的对象数据按照各在线存储节点的对象分片大小存储至各在线存储节点中,以此来确保分布式存储系统中存储节点的容量达到均摊,达到了各在线存储节点负载均衡的效果。
参考图3,示出了本申请另一示例性实施例示出的一种对象存储方法实施例的步骤流程图,本申请实施例在图1实施例的基础上,图3的实施例着重在于说明对象分片的索引生成的过程,在步骤103之后,本申请实施例还可以包括如下步骤:
步骤104,针对各个在线存储节点,获取所述在线存储节点存储所述对象分片的目标存储位置;
在实际中,当网关将各对象分片存储至各在线存储节点以后,可以接收各在线存储节点返回的数据写入是否成功的响应,并将该响应发送至客户端中。当该响应为写入成功的响应时,则网关可以获取各对象分片在对应的在线存储节点的目标存储位置,其中,该目标存储位置可以包括在线存储节点的标识、存储卷标识、存储块标识、存储段标识等。当该响应为写入失败的响应时,则网关需要继续向该在线存储节点发送对应的对象分片或者重新确定该对象分片对应的存储节点,直到该对象分片写入成功为止。
步骤105,根据所述目标存储位置生成所述在线存储节点存储的对象分片的索引信息;
当确定各对象分片的目标存储位置以后,可以结合该目标存储位置以及该对象分片的其他分片信息,生成该对象分片的索引信息。
作为一种示例,对象分片的索引信息可以包括但不限于如下信息:所属的对象标识ID、对象大小K,该对象分片的目标存储位置、对象分片大小、切片号、上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识,等等。
其中,上述切片号可以通过该对象分片所处的在线存储节点对应的顺序节点的顺序确定。例如,在上述例子中,在线存储节点1、3、5对应的顺序节点的排序分别为:20000000001>50000000010>60000000005,则在线存储节点1、3、5存储的对象分片的切片号分别为1,2,3,切片号的排序为:1>2>3。
根据各对象分片的切片号,可以确定该对象分片的上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识。例如,若在线存储节点1的切片号为1,则其没有上一切片号,下一切片号为2,对应在线存储节点3;上述在线存储节点3的切片号为2,其上一切片号为1,对应在线存储节点1,下一切片号为3,对应在线存储节点5;在线存储节点5的切片号为3,其上一切片号为2,对应在线存储节点3,没有下一切片号。
在本实施例中,当确定各在线存储节点存储的对象分片的索引信息以后,可以采用下表2的索引模板来组织该对象分片的各索引信息:
表2
例如,参照上例,在线存储节点1、3、5存储的对象分片的索引信息分别如表3、表4和表5所示,表3、表4和表5最终生成了对象索引链:
步骤106,将所述索引信息发送至该在线存储节点中,以使得所述在线存储节点根据所述索引信息,在检测到针对存储的对象分片对应的对象数据的数据下载请求时,向所述网关返回该对象分片。
网关得到各对象分片对应的索引信息以后,可以将该索引信息发送至存储该对象分片的在线存储节点中,则在线存储节点可以通过图2中的数据库来存储对应的索引信息。其中,该索引信息可以用于供存储节点判断对应的对象分片是否被请求下载,并在被请求下载时返回该对象分片。
在实现时,网关还可以将各对象分片对应的索引信息发送至客户端,以由该客户端在进行数据下载时直接按照各索引信息进行数据请求。
在本申请实施例中,网关还可以向各在线存储节点发送其存储的对象分片的索引信息,以由各在线存储节点管理各自的对象分片的索引信息,实现索引信息的分布式存储,无需中心管理节点的参与,提高了分布式存储系统的稳定性。
参考图4,示出了本申请又一示例性实施例示出的一种对象存储方法实施例的步骤流程图,本申请实施例在图3实施例的基础上,图4的实施例着重在于说明数据下载的过程,在步骤106之后,本申请实施例还可以包括如下步骤:
步骤107,接收客户端发送的数据下载请求,所述数据下载请求包括待下载的目标对象数据的目标对象标识;
步骤108,从存储所述目标对象标识对应的对象分片的在线存储节点中下载所述对象分片;
具体的,当网关接收到客户端发送的数据下载请求时,可以从该数据下载请求中获取待下载的目标对象数据的目标对象标识,然后确定存储该目标对象标识对应的对象分片的在线存储节点。
在一种实施方式中,网关可以采用如下方式确定存储该目标对象标识对应的对象分片的在线存储节点:
向分布式存储系统中的所有存储节点广播包含该目标对象标识的查询请求,并根据各存储节点返回的查询响应信息确定该目标对象标识对应的在线存储节点。
具体的,各存储节点接收到网关广播的查询请求以后,在自身存储的索引信息中查找该目标对象标识,如果查找成功,则该存储节点返回查询成功消息至网关。否则,如果查找失败,则存储节点返回查询失败消息至网关。
网关接收到所有存储节点返回的查询响应信息以后,从返回查询成功消息的存储节点中下载该目标对象标识对应的对象分片。
步骤109,按照所述切片号组合下载的对象分片得到目标对象数据,并将所述目标对象数据返回所述客户端。
当网关接收到目标对象标识对应的对象分片以后,可以按照接收到的各对象分片的切片号的先后顺序,将接收到的对象分片进行组合,得到目标对象数据,并将该目标对象数据返回客户端。
当然,网关也可以不进行对象分片的组合,而是直接将接收的对象分片以及各对象分片的切片号组合返回客户端,由客户端按照切片号进行对象分片的组合,本申请实施例对此不作限制。
在本申请实施例中,当网关接收到客户端的数据下载请求以后,分别从不同的在线存储节点获得对象分片,从而实现了对象下载网络负载均摊到不同存储节点中,避免了从一个服务器中取数据导致的服务器压力过大的情况。
与前述方法的实施例相对应,本申请还提供了对象存储装置的实施例。
本申请的对象存储装置实施例可以应用在网关中。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请的装置所在设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该装置的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,示出了本申请一示例性实施例示出的一种对象存储装置实施例的结构框图,所述装置应用于分布式存储系统的网关中,所述分布式存储系统还包括至少一个存储节点,本申请实施例具体可以包括如下模块:
数据上传请求接收模块601,用于接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;
对象分片大小确定模块602,用于根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;
对象存储模块603,用于控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点。
在本申请实施例的一种优选实施例中,所述对象分片大小确定模块602进一步可以包括如下子模块:
剩余存储空间获取子模块,用于获取所述分布式存储系统中各在线存储节点的剩余存储空间;
剩余空间比例计算子模块,用于针对每个在线存储节点,根据该在线存储节点的剩余存储空间以及所述分布式存储系统的总剩余空间计算该在线存储节点的剩余空间比例;
对象分片大小确定子模块,用于根据该在线存储节点的剩余空间比例以及所述对象大小K确定该在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述分布式存储系统的总剩余空间为各个在线存储节点的剩余存储空间之和。
在本申请实施例的一种优选实施例中,所述剩余存储空间获取子模块可以包括如下单元:
状态信息获取单元,用于获取各存储节点的状态信息,所述状态信息至少包括:在线标识、剩余存储空间,其中,当所述在线标识为第一值时表示所述存储节点在线,当所述在线标识为第二值时表示所述存储节点离线;
在线存储节点确定单元,用于将所述状态信息中在线标识为第一值的各存储节点确定为在线存储节点;
剩余存储空间获取单元,用于从已获取的各在线存储节点的状态信息中获取各在线存储节点的剩余存储空间。
在本申请实施例的一种优选实施例中,所述状态信息获取单元具体用于:
对与所述分布式存储系统连接的Zookeeper集群进行监听,所述Zookeeper集群包括多个顺序节点,所述顺序节点与所述分布式存储系统中的存储节点一一对应,且存储对应的存储节点的状态信息;
当监听到所述顺序节点写入状态信息时,从该顺序节点中读取所述状态信息。
在本申请实施例的一种优选实施例中,所述数据上传请求还包括所述对象标识ID对应的对象数据,
所述对象存储模块603具体用于:
将所述对象数据按照各在线存储节点的所述对象分片大小进行切分;
针对各在线存储节点,将切分得到的与该在线存储节点的对象分片大小对应的对象分片存储至该在线存储节点中。
在本申请实施例的另一种优选实施例中,所述对象存储模块603具体用于:
将各在线存储节点对应的对象分片大小发送至客户端,以由所述客户端将所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小进行切分,得到各在线存储节点对应的对象分片;
接收所述客户端上传的各在线存储节点对应的对象分片,并将所述对象分片存储至对应的在线存储节点中。
在本申请实施例的一种优选实施例中,所述装置还可以包括如下模块:
目标存储位置确定模块,用于针对各个在线存储节点,获取所述在线存储节点存储所述对象分片的目标存储位置;
索引信息生成模块,用于根据所述目标存储位置生成所述在线存储节点存储的对象分片的索引信息;
索引信息发送模块,用于将所述索引信息发送至该在线存储节点中,以使得所述在线存储节点根据所述索引信息,在检测到针对存储的对象分片对应的对象数据的数据下载请求时,向所述网关返回该对象分片。
在本申请实施例的一种优选实施例中,所述在线存储节点存储的对象分片的索引信息包括所述对象标识ID、所述对象大小K,所述在线存储节点存储对象分片的目标存储位置、对象分片大小、切片号、上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识;其中,所述切片号通过所述在线存储节点对应的顺序节点的顺序确定。
在本申请实施例的一种优选实施例中,所述装置还可以包括如下模块:
下载请求接收模块,用于接收客户端发送的数据下载请求,所述数据下载请求包括待下载的目标对象数据的目标对象标识;
对象分片下载模块,用于从存储所述目标对象标识对应的对象分片的在线存储节点中下载所述对象分片;
对象分片组合模块,用于按照所述切片号组合下载的对象分片得到目标对象数据;
对象数据返回模块,用于将所述目标对象数据返回所述客户端。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述方法实施例的步骤。
本申请实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法实施例的步骤。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如车载终端、移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (18)
1.一种对象存储方法,其特征在于,所述方法应用于分布式存储系统的网关中,所述分布式存储系统还包括至少一个存储节点,所述方法包括:
接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;
根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;
控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点。
2.根据权利要求1所述的方法,其特征在于,所述根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,包括:
获取所述分布式存储系统中各在线存储节点的剩余存储空间;
针对每个在线存储节点,根据该在线存储节点的剩余存储空间以及所述分布式存储系统的总剩余空间计算该在线存储节点的剩余空间比例,并根据该在线存储节点的剩余空间比例以及所述对象大小K确定该在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述分布式存储系统的总剩余空间为各个在线存储节点的剩余存储空间之和。
3.根据权利要求2所述的方法,其特征在于,所述获取所述分布式存储系统中各在线存储节点的剩余存储空间,包括:
获取各存储节点的状态信息,所述状态信息至少包括:在线标识、剩余存储空间,其中,当所述在线标识为第一值时表示所述存储节点在线,当所述在线标识为第二值时表示所述存储节点离线;
将所述状态信息中在线标识为第一值的各存储节点确定为在线存储节点;
从已获取的各在线存储节点的状态信息中获取各在线存储节点的剩余存储空间。
4.根据权利要求3所述的方法,其特征在于,所述获取各存储节点的状态信息,包括:
对与所述分布式存储系统连接的Zookeeper集群进行监听,所述Zookeeper集群包括多个顺序节点,所述顺序节点与所述分布式存储系统中的存储节点一一对应,且存储对应的存储节点的状态信息;
当监听到所述顺序节点写入状态信息时,从该顺序节点中读取所述状态信息。
5.根据权利要求1所述的方法,其特征在于,所述数据上传请求还包括所述对象标识ID对应的对象数据,
所述控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点,包括:
将所述对象数据按照各在线存储节点的所述对象分片大小进行切分;
针对各在线存储节点,将切分得到的与该在线存储节点的对象分片大小对应的对象分片存储至该在线存储节点中。
6.根据权利要求1所述的方法,其特征在于,所述控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点,包括:
将各在线存储节点对应的对象分片大小发送至客户端,以由所述客户端将所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小进行切分,得到各在线存储节点对应的对象分片;
接收所述客户端上传的各在线存储节点对应的对象分片,并将所述对象分片存储至对应的在线存储节点中。
7.根据权利要求5或6所述的方法,其特征在于,在控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点的步骤之后,所述方法还包括:
针对各个在线存储节点,获取所述在线存储节点存储所述对象分片的目标存储位置;
根据所述目标存储位置生成所述在线存储节点存储的对象分片的索引信息;
将所述索引信息发送至该在线存储节点中,以使得所述在线存储节点根据所述索引信息,在检测到针对存储的对象分片对应的对象数据的数据下载请求时,向所述网关返回该对象分片。
8.根据权利要求7所述的方法,其特征在于,所述在线存储节点存储的对象分片的索引信息包括所述对象标识ID、所述对象大小K,所述在线存储节点存储对象分片的目标存储位置、对象分片大小、切片号、上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识;其中,所述切片号通过所述在线存储节点对应的顺序节点的顺序确定。
9.根据权利要求8所述的方法,其特征在于,还包括:
接收客户端发送的数据下载请求,所述数据下载请求包括待下载的目标对象数据的目标对象标识;
从存储所述目标对象标识对应的对象分片的在线存储节点中下载所述对象分片;
按照所述切片号组合下载的对象分片得到目标对象数据,并将所述目标对象数据返回所述客户端。
10.一种对象存储装置,其特征在于,所述装置应用于分布式存储系统的网关中,所述分布式存储系统还包括至少一个存储节点,所述装置包括:
数据上传请求接收模块,用于接收客户端上传的数据上传请求,所述数据上传请求包括对象标识ID和对象大小K;
对象分片大小确定模块,用于根据所述对象大小K和所述分布式存储系统中各在线存储节点的剩余存储空间,按照负载均衡方式确定各在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述在线存储节点中的所述对象分片大小之和为所述对象大小K;
对象存储模块,用于控制待存储的所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小存储至各在线存储节点。
11.根据权利要求10所述的装置,其特征在于,所述对象分片大小确定模块包括:
剩余存储空间获取子模块,用于获取所述分布式存储系统中各在线存储节点的剩余存储空间;
剩余空间比例计算子模块,用于针对每个在线存储节点,根据该在线存储节点的剩余存储空间以及所述分布式存储系统的总剩余空间计算该在线存储节点的剩余空间比例;
对象分片大小确定子模块,用于根据该在线存储节点的剩余空间比例以及所述对象大小K确定该在线存储节点中用于存储所述对象标识ID对应的对象数据的对象分片大小,其中,所述分布式存储系统的总剩余空间为各个在线存储节点的剩余存储空间之和。
12.根据权利要求11所述的装置,其特征在于,所述剩余存储空间获取子模块包括:
状态信息获取单元,用于获取各存储节点的状态信息,所述状态信息至少包括:在线标识、剩余存储空间,其中,当所述在线标识为第一值时表示所述存储节点在线,当所述在线标识为第二值时表示所述存储节点离线;
在线存储节点确定单元,用于将所述状态信息中在线标识为第一值的各存储节点确定为在线存储节点;
剩余存储空间获取单元,用于从已获取的各在线存储节点的状态信息中获取各在线存储节点的剩余存储空间。
13.根据权利要求12所述的装置,其特征在于,所述状态信息获取单元具体用于:
对与所述分布式存储系统连接的Zookeeper集群进行监听,所述Zookeeper集群包括多个顺序节点,所述顺序节点与所述分布式存储系统中的存储节点一一对应,且存储对应的存储节点的状态信息;
当监听到所述顺序节点写入状态信息时,从该顺序节点中读取所述状态信息。
14.根据权利要求10所述的装置,其特征在于,所述数据上传请求还包括所述对象标识ID对应的对象数据,
所述对象存储模块具体用于:
将所述对象数据按照各在线存储节点的所述对象分片大小进行切分;
针对各在线存储节点,将切分得到的与该在线存储节点的对象分片大小对应的对象分片存储至该在线存储节点中。
15.根据权利要求10所述的装置,其特征在于,所述对象存储模块具体用于:
将各在线存储节点对应的对象分片大小发送至客户端,以由所述客户端将所述对象标识ID对应的对象数据按照各在线存储节点的所述对象分片大小进行切分,得到各在线存储节点对应的对象分片;
接收所述客户端上传的各在线存储节点对应的对象分片,并将所述对象分片存储至对应的在线存储节点中。
16.根据权利要求14或15所述的装置,其特征在于,所述装置还包括:
目标存储位置确定模块,用于针对各个在线存储节点,获取所述在线存储节点存储所述对象分片的目标存储位置;
索引信息生成模块,用于根据所述目标存储位置生成所述在线存储节点存储的对象分片的索引信息;
索引信息发送模块,用于将所述索引信息发送至该在线存储节点中,以使得所述在线存储节点根据所述索引信息,在检测到针对存储的对象分片对应的对象数据的数据下载请求时,向所述网关返回该对象分片。
17.根据权利要求16所述的装置,其特征在于,所述在线存储节点存储的对象分片的索引信息包括所述对象标识ID、所述对象大小K,所述在线存储节点存储对象分片的目标存储位置、对象分片大小、切片号、上一切片号对应的在线存储节点的标识以及下一切片号对应的在线存储节点的标识;其中,所述切片号通过所述在线存储节点对应的顺序节点的顺序确定。
18.根据权利要求17所述的装置,其特征在于,还包括:
下载请求接收模块,用于接收客户端发送的数据下载请求,所述数据下载请求包括待下载的目标对象数据的目标对象标识;
对象分片下载模块,用于从存储所述目标对象标识对应的对象分片的在线存储节点中下载所述对象分片;
对象分片组合模块,用于按照所述切片号组合下载的对象分片得到目标对象数据;
对象数据返回模块,用于将所述目标对象数据返回所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811580291.0A CN111352577B (zh) | 2018-12-24 | 2018-12-24 | 一种对象存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811580291.0A CN111352577B (zh) | 2018-12-24 | 2018-12-24 | 一种对象存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352577A true CN111352577A (zh) | 2020-06-30 |
CN111352577B CN111352577B (zh) | 2023-03-14 |
Family
ID=71195498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811580291.0A Active CN111352577B (zh) | 2018-12-24 | 2018-12-24 | 一种对象存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352577B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256351A (zh) * | 2020-10-26 | 2021-01-22 | 卫宁健康科技集团股份有限公司 | Feign组件的实现方法、微服务调用方法及装置 |
CN113656683A (zh) * | 2021-07-12 | 2021-11-16 | 北京旷视科技有限公司 | 订阅数据推送方法、装置、系统、电子设备及存储介质 |
CN115857837A (zh) * | 2023-02-27 | 2023-03-28 | 中国华能集团清洁能源技术研究院有限公司 | 一种大数据环境下的数据分布方法、装置、设备及介质 |
WO2023155703A1 (zh) * | 2022-02-18 | 2023-08-24 | 华为技术有限公司 | 一种工作负载特征提取方法及装置 |
CN116932555A (zh) * | 2023-08-14 | 2023-10-24 | 合芯科技有限公司 | 一种目标对象切片位置确定方法、装置、设备及存储介质 |
CN117075823A (zh) * | 2023-10-17 | 2023-11-17 | 苏州元脑智能科技有限公司 | 对象查找方法、系统、电子设备及存储介质 |
CN117688106A (zh) * | 2024-02-04 | 2024-03-12 | 广东东华发思特软件有限公司 | 一种高效分布式数据存储与检索系统、方法及存储介质 |
CN117725258A (zh) * | 2023-12-19 | 2024-03-19 | 北京中电兴发科技有限公司 | 基于空间和时间均衡安防视频存储规划和定位读写的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009157437A (ja) * | 2007-12-25 | 2009-07-16 | Dainippon Printing Co Ltd | 分散記憶システム |
CN102387179A (zh) * | 2010-09-02 | 2012-03-21 | 联想(北京)有限公司 | 分布式文件系统及其结点、存储方法和存储控制方法 |
CN104519111A (zh) * | 2013-10-08 | 2015-04-15 | 纬创资通股份有限公司 | 控制系统及整合多个网络储存空间的方法 |
CN105100146A (zh) * | 2014-05-07 | 2015-11-25 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置及系统 |
CN105554121A (zh) * | 2015-12-18 | 2016-05-04 | 深圳中兴网信科技有限公司 | 实现分布式缓存系统负载均衡的方法及系统 |
-
2018
- 2018-12-24 CN CN201811580291.0A patent/CN111352577B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009157437A (ja) * | 2007-12-25 | 2009-07-16 | Dainippon Printing Co Ltd | 分散記憶システム |
CN102387179A (zh) * | 2010-09-02 | 2012-03-21 | 联想(北京)有限公司 | 分布式文件系统及其结点、存储方法和存储控制方法 |
CN104519111A (zh) * | 2013-10-08 | 2015-04-15 | 纬创资通股份有限公司 | 控制系统及整合多个网络储存空间的方法 |
CN105100146A (zh) * | 2014-05-07 | 2015-11-25 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置及系统 |
CN105554121A (zh) * | 2015-12-18 | 2016-05-04 | 深圳中兴网信科技有限公司 | 实现分布式缓存系统负载均衡的方法及系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256351A (zh) * | 2020-10-26 | 2021-01-22 | 卫宁健康科技集团股份有限公司 | Feign组件的实现方法、微服务调用方法及装置 |
CN112256351B (zh) * | 2020-10-26 | 2023-11-17 | 卫宁健康科技集团股份有限公司 | Feign组件的实现方法、微服务调用方法及装置 |
CN113656683A (zh) * | 2021-07-12 | 2021-11-16 | 北京旷视科技有限公司 | 订阅数据推送方法、装置、系统、电子设备及存储介质 |
WO2023155703A1 (zh) * | 2022-02-18 | 2023-08-24 | 华为技术有限公司 | 一种工作负载特征提取方法及装置 |
CN115857837A (zh) * | 2023-02-27 | 2023-03-28 | 中国华能集团清洁能源技术研究院有限公司 | 一种大数据环境下的数据分布方法、装置、设备及介质 |
CN116932555A (zh) * | 2023-08-14 | 2023-10-24 | 合芯科技有限公司 | 一种目标对象切片位置确定方法、装置、设备及存储介质 |
CN116932555B (zh) * | 2023-08-14 | 2024-04-30 | 合芯科技有限公司 | 一种目标对象切片位置确定方法、装置、设备及存储介质 |
CN117075823A (zh) * | 2023-10-17 | 2023-11-17 | 苏州元脑智能科技有限公司 | 对象查找方法、系统、电子设备及存储介质 |
CN117075823B (zh) * | 2023-10-17 | 2024-02-02 | 苏州元脑智能科技有限公司 | 对象查找方法、系统、电子设备及存储介质 |
CN117725258A (zh) * | 2023-12-19 | 2024-03-19 | 北京中电兴发科技有限公司 | 基于空间和时间均衡安防视频存储规划和定位读写的方法 |
CN117688106A (zh) * | 2024-02-04 | 2024-03-12 | 广东东华发思特软件有限公司 | 一种高效分布式数据存储与检索系统、方法及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111352577B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352577B (zh) | 一种对象存储方法及装置 | |
US11354039B2 (en) | Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system | |
CN107819828B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
US10637916B2 (en) | Method and device for storage resource allocation for video cloud storage | |
EP2414928B1 (en) | Data redistribution in data replication systems | |
US9430321B2 (en) | Reconstructing data stored across archival data storage devices | |
US9436571B2 (en) | Estimating data storage device lifespan | |
US9424156B2 (en) | Identifying a potential failure event for a data storage device | |
US10628050B2 (en) | Data processing method and apparatus | |
US9557938B2 (en) | Data retrieval based on storage device activation schedules | |
US9436524B2 (en) | Managing archival storage | |
US20180314604A1 (en) | Caching of backup chunks | |
US11461053B2 (en) | Data storage system with separate interfaces for bulk data ingestion and data access | |
US10749921B2 (en) | Techniques for warming up a node in a distributed data store | |
US20150331617A1 (en) | Pipeline planning for low latency storage system | |
US9766677B2 (en) | Cascading startup power draws of enclosures across a network | |
US9430152B2 (en) | Data device grouping across data storage device enclosures for synchronized data maintenance | |
CN109271379A (zh) | 一种数据清理方法及装置 | |
CN117749807A (zh) | 资源获取方法、装置、电子设备及存储介质 | |
CN117424907A (zh) | 文件获取方法、装置、节点设备和计算机可读存储介质 | |
CN111984461A (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 |