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

文档序号:9523919阅读:来源:国知局
发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一和实施例二。
[0084]请参阅图4,图4是本发明实施例提供的一种对象存储装置的结构示意图,如图4所示,包括:获取单元41、第一写入单元42和第二写入单元43,其中:
[0085]获取单元41,用于获取待存储对象的元数据。
[0086]本实施例中,待存储对象包括元数据和数据,其中,上述元数据可以用于描述数据属性的信息,而数据则是被元数据描述的数据。例如:上述待存储对象为KV对象,上述元数据可以是KV对象中的键(Key),上述数据可以是KV对象中的值(Value)。
[0087]第一写入单元42,用于向主节点发送携带所述元数据的写入请求,由所述主节点根据所述写入请求将所述元数据写入本地,并由所述主节点向至少一个备节点发送携带所述元数据的写入请求,以使所述至少一个备节点将所述元数据写入本地。
[0088]上述主节点可以是分布式存储系统中RSM的主节点,而上述至少一个备节点可以是RSM的备节点,且可以是一个或者多个备节点。当主节点接收到上述写入请求后,会将上述元数据写入本地,即主节点将元数据存储至主节点中。且当主节点写入成功时,会向上述至少一个备节点发送的上述写入请求,上述备节点接收到上述写入请求后,同样会将元数据写入本地,即备节点将元数据存储到该备节点中。
[0089]获取单元41还用于获取所述待存储对象的数据。
[0090]第二写入单元43,用于向至少一个存储节点发送携带有所述数据的写入请求,以使所述至少一个存储节点将所述数据写入本地。
[0091]第二写入单元43可以是向上述至少一个存储节点发送同样的写入请求,各存储节点接收到该写入请求后,会将上述数据写入至本地,即各存储节点将上述数据存储至该存储节点中。
[0092]需要说明的是,上述主节点和至少一个备节点可以属于同一个存储池,该存储池中每个节点可以理解为一个单独的存储设备,或者理解为同一个存储设备中不同的存储器。同理,上述至少一个存储节点可以属于同一个存储池,该存储池中每个节点可以理解为一个单独的存储设备,或者理解为同一个存储设备中不同的存储器。当然,上述主节点、至少一个备节点和存储节点可以属于同一个存储池,此处不作限定。另外,关于上述主节点、备节点和存储节点这三者可以是相同属于的节点,本实施例以不同的名称进行区分仅是为了方便描述。
[0093]本实施例中,上述装置可以由分布式存储系统中的能够进行存储策略决定的任意设备,例如:服务器、计算机、平板电脑、手机、电子阅读器、遥控器、笔记本电脑、车载设备、网络电视、可穿戴设备等。
[0094]本实施例中,获取待存储对象的元数据,并向主节点发送携带所述元数据的写入请求,由所述主节点根据所述写入请求将所述元数据写入本地,并由所述主节点向至少一个备节点发送携带所述元数据的写入请求,以使所述至少一个备节点将所述元数据写入本地;获取所述待存储对象的数据,并向至少一个存储节点发送携带有所述数据的写入请求,以使所述至少一个存储节点将所述数据写入本地。这样可以实现只有存储对象的元数据是从主节点到备节点的顺序写的,而存储对象的数据则是直接写至存储节点的,从而相比现有技术,本发明实施例可以减少写操作的时延。
[0095]请参阅图5,图5是本发明实施例提供的另一种对象存储装置的结构示意图,如图5所示,包括:获取单元51、第一写入单元52和第二写入单元53,其中:
[0096]获取单元51,用于获取待存储对象的元数据。
[0097]本实施例中,上述获取待存储对象的元数据可以是业务层下发待存储对象的元数据到D0P层。
[0098]第一写入单元52,用于向主节点发送携带所述元数据的写入请求,由所述主节点根据所述写入请求将所述元数据写入本地,并由所述主节点向至少一个备节点发送携带所述元数据的写入请求,以使所述至少一个备节点将所述元数据写入本地。
[0099]上述向主节点发送携带所述元数据的写入请求可以是D0P调用其KV接口,并根据路由算法找到RSM的主节点的KVS,该KVS层提供KV接口供D0P层调用,以便持久化数据,D0P先向主节点写上述元数据,写成功后,主节点再向其它备节点写上述元数据。
[0100]本实施例中,所述装置还可以包括:
[0101]添加单元54,用于在生成所述待存储对象的元数据时,在所述元数据中添加标记信息.
[0102]获取单元51可以用于获取待存储对象的添加所述标记信息的元数据;
[0103]第一写入单元52可以用于向主节点发送携带所述添加所述标记信息的元数据的写入请求。
[0104]其中,上述标记信息在存储系中与上述元数据--对应,另外,本实施例中,不同的存储对象的元数据添加的标记信息不同。例如:在生成上述存储对象的元数据时将当前的时间戳作为该元数据的标记信息。
[0105]这样可以实现约束写数据时不会有覆盖写,这样可以保证写元数据时不会有覆盖写,即不会重复写同一个key,也就不会有同key的并发写。另外,由于不会有覆盖写,这样还可以减少I/O次数,减少系统时延。
[0106]获取单元51还用于获取所述待存储对象的数据。
[0107]第二写入单元53,用于向至少一个存储节点发送携带有所述数据的写入请求,以使所述至少一个存储节点将所述数据写入本地。
[0108]本实施例中,如图6所示,上述装置还可以包括:
[0109]第一接收单元55,用于接收所述至少一个存储节点中每个存储节点发送的第一写入结果,其中,所述第一写入结果用于表示所述数据写入是否成功;
[0110]第一判断单元56,用于判断接收到的表示写入成功的第一写入结果的数量是否大于或者等于预设阈值时,若是,则确定所述待存储对象的数据写入成功,若否,则确定所述待存储对象的数据写入失败。
[0111]这样可以实现当写入成功的存储节点数大于或者等于上述阈值时,就可以确定待存储对象的数据写入成功。
[0112]该实施方式中,上述预设阈值可以是理解为W,上述至少一个存储节点的节点数可以理解为N,这样可以实现根据NRW原则确定上述待存储对象的数据是否写入成功。具体的上述N和W的关系可以是预先设定好。
[0113]另外,上述实施方式中,还可以实现对待存储对象的数据进行最终一次性存储。
[0114]本实施例中,上述装置还可以包括:
[0115]第二接收单元57,用于接收所述主节点发送的用于表示所述元数据写入是否成功的第二写入结果,以及接收所述主节点发送的第三写入结果,其中,所述第三写入结果包括所述至少一个备节点中每个备节点发送的用于表示所述元数据写入是否成功的写入结果;
[0116]第二判断单元58,用于判断接收的所述第二写入结果和所述第三写入结果中是否存在表示所述元数据写入失败的写入结果,若是,则确定所述待存储对象的元数据写入失败,若否,则确定所述待存储对象的元数据写入成功。
[0117]该实施方式中,由于只有所有数据都写入成功时,才确定上述待存储对照的元数据写入成功,当存在任意节点写入失败时,则确定上述待存储对象的元数据写入失败。这样可以实现对上述待存储对象的元数据实现强一致性存储。
[0118]通过上述两种实现方式可以实现对待存储对象的元数据实现强一致性存储,而对待存储对象的数据实现最终一致性存储。主要是因为在实际应用中,元数据更新操作多,对一致性要求高,数据量相对较少;而数据无更新操作,数据量大,对一致性要求相对较低。而对存储对象的数据进行上述方式的存储可以减少写操作的时延。
[0119]本实施例中,第二写入单元53可以用于确定所述数据为无需更新操作的数据时,向至少一个存储节点发送携带有所述数据的写入请求。
[0120]这样可以实现只对无需更新操作的数据发送给上述至少一个存储节点进行写入。其中,上述确定数据是否无需更新操作可以是判断该存储对象的数据是否满足预先特性,若是,则确定为无需更新操作的数据;或者可以是判断发送该数据的客户端是否为预设客户端,若是,则确定为无需更新操作的数据。
[0121]本实施例中,在图4所示的实施例的基础上增加了多种可选的实施方式,且都可以实现减少写操作的时延。
[0122]请参阅图7,图7是本发明实施例提供的另一种对象存储装置的结构示意图,如图7所示,包括:处理器71、网络接口 72、存储器73和通信总线74,其中,所述通信总线74用于实现所述处理器71、网络接口 72和存储器73之间连接通信,所述处理器71执行所述存储器73中存储的程序用于实现以下方法:
[0123]
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1