一种对象存储方法和装置的制造方法_2

文档序号:9523919阅读:来源:国知局
属性的信息,而数据则是被元数据描述的数据。例如:上述待存储对象为键值(Key-Value,KV)对象,上述元数据可以是KV对象中的键(Key),上述数据可以是KV对象中的值(Value)ο
[0050]另外,上述主节点可以是分布式存储系统中RSM的主节点,而上述至少一个备节点可以是RSM的备节点,且可以是一个或者多个备节点。当主节点接收到上述写入请求后,会将上述元数据写入本地,即主节点将元数据存储至主节点中。且当主节点写入成功时,会向上述至少一个备节点发送的上述写入请求,上述备节点接收到上述写入请求后,同样会将元数据写入本地,即备节点将元数据存储到该备节点中。
[0051]102、获取所述待存储对象的数据,并向至少一个存储节点发送携带有所述数据的写入请求,以使所述至少一个存储节点将所述数据写入本地。
[0052]需要说明的是,步骤101和步骤102执行的时间顺序可以不作限定,其中,附图以先执行步骤101再执行步骤102进行举例说明。
[0053]步骤102可以是向上述至少一个存储节点发送同样的写入请求,各存储节点接收到该写入请求后,会将上述数据写入至本地,即各存储节点将上述数据存储至该存储节点中。
[0054]需要说明的是,上述主节点和至少一个备节点可以属于同一个存储池,该存储池中每个节点可以理解为一个单独的存储设备,或者理解为同一个存储设备中不同的存储器。同理,上述至少一个存储节点可以属于同一个存储池,该存储池中每个节点可以理解为一个单独的存储设备,或者理解为同一个存储设备中不同的存储器。当然,上述主节点、至少一个备节点和存储节点可以属于同一个存储池,此处不作限定。另外,关于上述主节点、备节点和存储节点这三者可以是相同属于的节点,本实施例以不同的名称进行区分仅是为了方便描述。
[0055]本实施例中,上述方法可以由分布式存储系统中的能够进行存储策略决定的任意设备,例如:服务器、计算机、平板电脑、手机、电子阅读器、遥控器、笔记本电脑、车载设备、网络电视、可穿戴设备等。
[0056]本实施例中,获取待存储对象的元数据,并向主节点发送携带所述元数据的写入请求,由所述主节点根据所述写入请求将所述元数据写入本地,并由所述主节点向至少一个备节点发送携带所述元数据的写入请求,以使所述至少一个备节点将所述元数据写入本地;获取所述待存储对象的数据,并向至少一个存储节点发送携带有所述数据的写入请求,以使所述至少一个存储节点将所述数据写入本地。这样可以实现只有存储对象的元数据是从主节点到备节点的顺序写的,而存储对象的数据则是直接写至存储节点的,从而相比现有技术,本发明实施例可以减少写操作的时延。
[0057]请参阅图2,图2是本发明实施例提供的另一种对象存储方法的流程示意图,如图2所示,包括以下步骤:
[0058]201、获取待存储对象的元数据,并向主节点发送携带所述元数据的写入请求,由所述主节点根据所述写入请求将所述元数据写入本地,并由所述主节点向至少一个备节点发送携带所述元数据的写入请求,以使所述至少一个备节点将所述元数据写入本地。
[0059]本实施例中,上述获取待存储对象的元数据可以是业务层下发待存储对象的元数据到分布式对象池(Distributed Object Pool,D0P)层。上述向主节点发送携带所述元数据的写入请求可以是D0P调用其KV接口,并根据路由算法找到RSM的主节点的KV存储池(Key-Value Sotre, KVS),该KVS层提供KV接口供D0P层调用,以便持久化数据,D0P先向主节点写上述元数据,写成功后,主节点再向其它备节点写上述元数据。
[0060]另外,本实施例中,上述方法还可以包括如下步骤:
[0061]在生成所述待存储对象的元数据时,在所述元数据中添加标记信息。
[0062]其中,上述标记信息在存储系中与上述元数据--对应,另外,本实施例中,不同的存储对象的元数据添加的标记信息不同。例如:在生成上述存储对象的元数据时将当前的时间戳作为该元数据的标记信息。
[0063]上述获取待存储对象的元数据,并向主节点发送携带所述元数据的写入请求的步骤,可以包括:
[0064]获取待存储对象的添加所述标记信息的元数据,并向主节点发送携带所述添加所述标记信息的元数据的写入请求。
[0065]这样可以实现约束写数据时不会有覆盖写,这样可以保证写元数据时不会有覆盖写,即不会重复写同一个key,也就不会有同key的并发写。另外,由于不会有覆盖写,这样还可以减少I/O次数,减少系统时延。
[0066]202、获取所述待存储对象的数据,并向至少一个存储节点发送携带有所述数据的写入请求,以使所述至少一个存储节点将所述数据写入本地。
[0067]本实施例中,上述方法还可以包括如下步骤:
[0068]203、接收所述至少一个存储节点中每个存储节点发送的第一写入结果,其中,所述第一写入结果用于表示所述数据写入是否成功;
[0069]204、判断接收到的表示写入成功的第一写入结果的数量是否大于或者等于预设阈值时,若是,则确定所述待存储对象的数据写入成功,若否,则确定所述待存储对象的数据写入失败。
[0070]这样可以实现当写入成功的存储节点数大于或者等于上述阈值时,就可以确定待存储对象的数据写入成功。
[0071]该实施方式中,上述预设阈值可以是理解为W,上述至少一个存储节点的节点数可以理解为N,这样可以实现根据NRW原则确定上述待存储对象的数据是否写入成功。具体的上述N和W的关系可以是预先设定好。
[0072]另外,上述实施方式中,还可以实现对待存储对象的数据进行最终一次性存储。
[0073]本实施例中,上述方法还可以包括如下步骤:
[0074]205、接收所述主节点发送的用于表示所述元数据写入是否成功的第二写入结果,以及接收所述主节点发送的第三写入结果,其中,所述第三写入结果包括所述至少一个备节点中每个备节点发送的用于表示所述元数据写入是否成功的写入结果;
[0075]206、判断接收的所述第二写入结果和所述第三写入结果中是否存在表示所述元数据写入失败的写入结果,若是,则确定所述待存储对象的元数据写入失败,若否,则确定所述待存储对象的元数据写入成功。
[0076]该实施方式中,由于只有所有数据都写入成功时,才确定上述待存储对照的元数据写入成功,当存在任意节点写入失败时,则确定上述待存储对象的元数据写入失败。这样可以实现对上述待存储对象的元数据实现强一致性存储。
[0077]通过上述两种实现方式可以实现对待存储对象的元数据实现强一致性存储,而对待存储对象的数据实现最终一致性存储。主要是因为在实际应用中,元数据更新操作多,对一致性要求高,数据量相对较少;而数据无更新操作,数据量大,对一致性要求相对较低。而对存储对象的数据进行上述方式的存储可以减少写操作的时延。
[0078]本实施例中,上述获取所述待存储对象的数据,并向至少一个存储节点发送携带有所述数据的写入请求的步骤,可以包括:
[0079]获取所述待存储对象的数据,并确定所述数据为无需更新操作的数据时,向至少一个存储节点发送携带有所述数据的写入请求。
[0080]这样可以实现只对无需更新操作的数据发送给上述至少一个存储节点进行写入。其中,上述确定数据是否无需更新操作可以是判断该存储对象的数据是否满足预先特性,若是,则确定为无需更新操作的数据;或者可以是判断发送该数据的客户端是否为预设客户端,若是,则确定为无需更新操作的数据。
[0081]另外,本实施例中,具体可以是如图3所示,对象存储系统31可以包括对象存储逻辑311、第一逻辑312、第二逻辑313、第一存储池314和第二存储池315,其中,上述对象存储逻辑311用于决策待存储对象的元数据和数据,当进行数据存储时,将数据下发给第一逻辑312,第一逻辑312使用上述介绍的对数据的写入方式将数据写入至第一存储池314 ;当进行元数据存储时,将元数据下发给第二逻辑313,第二逻辑313使用上述介绍的对元数据的写入方式将数据写入至第二存储池315。这样可以实现对待存储对象的元数据和数据采集不同的逻辑进行存储。另外,上述第一逻辑312对数据进行存储的逻辑可以理解为Quorum逻辑,上述第二逻辑312对元数据进行存储的逻辑可以理解为RSM逻辑。
[0082]本实施例中,在图1所示的实施例的基础上增加了多种可选的实施方式,且都可以实现减少写操作的时延。
[0083]下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至二实现的方法,为了便于说明,仅示出了与本
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1