CN103095687B - 元数据处理方法及装置 - Google Patents
元数据处理方法及装置 Download PDFInfo
- Publication number
- CN103095687B CN103095687B CN201210554481.1A CN201210554481A CN103095687B CN 103095687 B CN103095687 B CN 103095687B CN 201210554481 A CN201210554481 A CN 201210554481A CN 103095687 B CN103095687 B CN 103095687B
- Authority
- CN
- China
- Prior art keywords
- client
- metadata
- data server
- modify instruction
- object identity
- 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.)
- Active
Links
Abstract
本发明提供一种元数据处理方法及装置,其中元数据处理方法包括接收写请求,写请求中携带有对象标识;根据写请求,生成与对象标识对应的至少一条修改指令,修改指令包括数据标识和与数据标识对应的目标值,数据标识为与对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;将修改指令发送给数据标识对应的客户端及数据服务器,以供客户端和数据服务器分别根据修改指令,将数据标识对应的元数据修改为目标值。从而使得客户端和数据服务器中所存储的元数据能够得到同步的更新,保证了分布式系统中对数据进行存储的一致性,避免了由于多个客户端同时发送写请求而出现写冲突的情况,有效地保证了分布式系统提供元数据服务的性能。
Description
技术领域
本发明实施例涉及网络技术和计算机技术,尤其涉及一种元数据处理方法及装置。
背景技术
分布式系统提供元数据服务的方式主要包括两种,分别为中心式元数据服务和对等式元数据服务。
中心式元数据服务,包括元数据集群和数据集群。其中,元数据集群由分别用于存储元数据的多个元数据服务器组成,数据集群由分别用于存储数据的多个数据服务器组成。在中心式元数据服务中,元数据集群通常由其中一个元数据服务器作为中心节点与客户端进行通信,对外提供服务。在元数据被修改后,该中心节点对元数据集群中的其他元数据服务器中的元数据进行更新。
但是,分布式系统在采用中心式元数据服务的方式时,由于各客户端对元数据进行修改或访问的请求,均需要路由到元数据集群的中心节点,使得该中心节点不仅需要对外提供对元数据的修改和访问的服务,还需要将元数据的变动同步到元数据集群中的其他元数据服务器,对于单一节点的过分依赖,会导致元数据服务的性能受到该中心节点性能的限制。
分布式系统在采用对等式元数据服务的方法时,元数据与数据均存储在多个数据服务器组成的数据集群中,数据集群中不存在中心节点,客户端可以直接修改或访问存储在各数据服务器中的元数据,从而克服了元数据服务的性能受到中心节点性能限制的问题。
但是,由于多个客户端均可以对各数据服务器进行读或写操作,而当多个客户端并发写时,会出现写冲突的情况。在这样的情况下,数据服务器和客户端之间会发送大量的重试信息,导致在进行并发写时,数据服务器提供元数据服务的性能较低。
发明内容
本发明的第一个方面是提供一种元数据处理方法包括:
接收写请求,所述写请求中携带有对象标识;
根据所述写请求,生成与所述对象标识对应的至少一条修改指令,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;
将所述修改指令发送给所述数据标识对应的客户端及数据服务器,以供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值。
结合第一个方面的元数据处理方法,在第一种可能的实现方式中,所述根据所述写请求,生成与所述对象标识对应的至少一条修改指令之后,所述方法还包括:
将所述至少一条修改指令发送至用于存储修改指令的数据服务器;
相应地,所述方法还包括:
在将所述至少一条修改指令分别发送给所述数据标识对应的客户端及数据服务器之后,向所述用于存储修改指令的数据服务器发送删除消息,以指示所述用于存储修改指令的数据服务器删除所述至少一条修改指令。
结合第一个方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:
从所述用于存储修改指令的数据服务器中获取未被删除的修改指令;
将所述未被删除的修改指令发送给所述未被删除的修改指令中的数据标识对应的客户端及数据服务器。
结合第一个方面、第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述对象标识为文件标识或虚拟磁盘标识。
本发明第二个方面是提供一种元数据处理方法,包括:
接收读请求,所述读请求中携带有对象标识;
若在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据,则根据所述读请求,生成与所述对象标识对应的至少一条访问指令,所述访问指令包括与所述对象标识对应的元数据的数据标识;
将所述访问指令发送给所述数据标识对应的数据服务器;
接收所述数据服务器根据所述数据标识返回的目标元数据。
结合第二个方面的元数据处理方法,在第一种可能的实现方式中,所述读请求中还携带有客户端标识;
相应地,所述接收所述数据服务器根据所述数据标识返回的目标元数据之后,所述方法还包括:
将所述目标元数据发送给所述客户端标识对应的客户端,以供所述客户端将所述目标元数据保存为与所述对象标识对应的元数据。
结合第二个方面或第一种可能的实现方式,在第二种可能的实现方式中,所述对象标识为文件标识或虚拟磁盘标识。
本发明第三个方面是提供一种客户端,包括:
接收单元,用于接收写请求,所述写请求中携带有对象标识;
处理单元,用于根据所述写请求,生成与所述对象标识对应的至少一条修改指令,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;
发送单元,用于将所述修改指令发送给所述数据标识对应的客户端及数据服务器,以供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值。
结合第三个方面提供的客户端,在第一种可能的实现方式中,所述处理单元还用于:
在根据所述写请求,生成与所述对象标识对应的至少一条修改指令之后,将所述至少一条修改指令发送至用于存储修改指令的数据服务器;
相应地,所述发送单元还用于:
在将所述至少一条修改指令分别发送给所述数据标识对应的客户端及数据服务器之后,向所述用于存储修改指令的数据服务器发送删除消息,以指示所述用于存储修改指令的数据服务器删除所述至少一条修改指令。
结合第三个方面的第一种可能的实现方式,在第二种可能的实现方式中,所述客户端还包括:
获取单元,用于从所述用于存储修改指令的数据服务器中获取未被删除的修改指令;
相应地,所述发送单元还用于:
将所述未被删除的修改指令发送给所述未被删除的修改指令中的数据标识对应的客户端及数据服务器。
结合第三个方面、第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述接收单元接收到的所述写请求中的所述对象标识为文件标识或虚拟磁盘标识。
本发明第四个方面是提供一种客户端,包括:
接收单元,用于接收读请求,所述读请求中携带有对象标识;
处理单元,当在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据时,根据所述读请求,生成与所述对象标识对应的至少一条访问指令,所述访问指令包括与所述对象标识对应的元数据的数据标识;
发送单元,用于将所述访问指令发送给所述数据标识对应的数据服务器;
相应地,所述接收单元还用于,接收所述数据服务器根据所述数据标识返回的目标元数据。
结合第四个方面提供的客户端,在第一种可能的实现方式中,所述接收单元接收到的所述读请求中还携带有客户端标识;
相应地,所述发送单元还用于:
在接收到所述数据服务器根据所述数据标识返回的目标元数据之后,将所述目标元数据发送给所述客户端标识对应的客户端,以供所述客户端将所述目标元数据保存为与所述对象标识对应的元数据。
结合第四个方面或第一种可能的实现方式,在第二种可能的实现方式中,所述接收单元接收到的所述读请求中的所述对象标识为文件标识或虚拟磁盘标识。
本发明实施例提供的元数据处理方法及装置,根据写请求生成与对象标识对应的至少一条修改指令,在该修改指令中包括需要修改的元数据的数据标识以及对该元数据进行修改的目标值,将各条修改指令分别发送给存储对应的元数据的客户端和数据服务器,从而使得客户端和数据服务器中所存储的元数据能够得到同步的更新,保证了分布式系统中对数据进行存储的一致性,此外,由于各客户端的写请求均需要通过作为主控客户端的客户端,发送给数据集群中的数据服务器,避免了由于多个客户端同时发送写请求而出现写冲突的情况,有效地保证了分布式系统提供元数据服务的性能。
附图说明
图1为本发明实施例提供的元数据处理方法的流程图;
图2为本发明实施例提供的另一元数据处理方法的流程图;
图3为本发明实施例提供的又一元数据处理方法的流程图;
图4为本发明实施例提供的又一元数据处理方法的流程图;
图5为本发明实施例提供的客户端的结构示意图;
图6为本发明实施例提供的另一客户端的结构示意图
图7为本发明实施例提供的又一客户端的结构示意图;
图8为本发明实施例提供的又一客户端的结构示意图;
图9为本发明实施例提供的又一客户端的结构示意图。
具体实施方式
本发明各实施例提供的分布式系统包括中心集群、数据集群以及至少一个客户端。
其中,中心集群由一个或多个中心节点组成,中心节点可以为服务器。中心节点不用于存储元数据,而是用于当客户端为多个时,从其中选择一个客户端作为主控客户端。当中心节点为多个时,其中一个中心节点为主控中心节点,其他中心节点作为主控中心节点的备份中心节点,以便于在主控中心节点发生故障时,可以由备份中心节点完成该主控中心节点的工作。以下所称的中心节点即表示该主控中心节点。
数据集群由一个或多个数据服务器组成,各数据服务器中存储有对象的元数据和/或数据。
客户端为用于供用户对数据集群中所存储的对象进行操作的设备,客户端可以为个人计算机或服务器等设备,可以在客户端中预置相应的系统,以便于用户在客户端上对对象进行操作和控制。
当分布式系统中的客户端为多个时,中心集群将多个客户端中的一个客户端设置为主控客户端,各客户端需要与数据集群进行通信时,均需要经过该主控客户端,由该主控客户端与数据集群中的数据服务器进行通信。
具体的,用户通过客户端对分布式系统中的对象进行读操作和写操作的方法如下。
图1为本发明实施例提供的元数据处理方法的流程图,如图1所示,该方法包括:
101、接收写请求。其中,所述写请求中携带有对象标识。
具体的,用户通过客户端对分布式系统进行操作时,包括以下两种情况。一种情况为用户所使用的客户端为主控客户端,则该主控客户端接收的写请求是用户所发送的;另一种情况为用户所使用的客户端不是主控客户端,则该客户端在接收到用户发送的写请求之后,需要将该写请求发送给主控客户端,则该主控客户端接收到的写请求是其他客户端所发送的。
无论主控客户端接收到的写请求是用户发送的,还是其他客户端发送的,在写请求中均携带有对象标识。对象在数据集群中以元数据和数据的形式,分布式地存储在一个或多个数据服务器中。对象标识是该对象在面向用户侧的标识。
102、根据所述写请求,生成与所述对象标识对应的至少一条修改指令。其中,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识。
具体的,主控客户端中预先存储有对象标识与元数据的数据标识的对应关系,一个对象标识可以与一个或多个元数据标识是对应的。因此,主控客户端在接收到写请求之后,可以根据写请求中的对象标识查找到与该对象标识对应的元数据的数据标识。并且,在主控客户端根据接收到的写请求,可以获知需要对对象中的哪些元数据进行修改,以及修改的目标值,从而,主控客户端根据写请求能够生成与该对象标识对应的一条或多条修改指令。
在生成的每条修改指令中,不仅包括需要修改的元数据的数据标识,还需要包括对该元数据进行修改的目标值。从而,接收到该修改指令的数据服务器能够根据修改指令,将相应的元数据修改为目标值。
103、将所述修改指令发送给所述数据标识对应的客户端及数据服务器。执行步骤103是为了供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值。
具体的,在主控客户端中不仅存储有对象标识与元数据的数据标识的对应关系,还存储有元数据的数据标识与客户端的对应关系,以及元数据的数据标识与数据服务器的对应关系。也就是说,主控客户端根据数据标识可以查找到哪个元数据是存储在哪个客户端和哪个数据服务器中的。
相应地,主控客户端将一条或多条修改指令分别发送给对应的客户端和数据服务器。从而,不仅数据服务器能够根据修改指令将相应的元数据修改为目标值,存储有该元数据的客户端也能够相应地将该元数据修改为目标值,保证了客户端与数据服务器中所存储的该元数据具有一致性。
本发明实施例提供的元数据处理方法,根据写请求生成与对象标识对应的至少一条修改指令,在该修改指令中包括需要修改的元数据的数据标识以及对该元数据进行修改的目标值,将各条修改指令分别发送给存储对应的元数据的客户端和数据服务器,从而使得客户端和数据服务器中所存储的元数据能够得到同步的更新,保证了分布式系统中对数据进行存储的一致性,此外,由于各客户端的写请求均需要通过作为主控客户端的客户端,发送给数据集群中的数据服务器,避免了由于多个客户端同时发送写请求而出现写冲突的情况,有效地保证了分布式系统提供元数据服务的性能。
图2为本发明实施例提供的另一元数据处理方法的流程图,如图2所示,该方法包括:
201、接收写请求。
具体的,可以参见步骤101中所述的实现方式。
进一步地,所述对象标识为文件标识或虚拟磁盘标识。
在数据集群中存储的对象可以为文件,还可以为虚拟磁盘。相应地,当对象为文件时,对象标识为文件标识,元数据即为文件的元数据;当对象为虚拟磁盘时,对象标识为虚拟磁盘标识,元数据即为虚拟磁盘的元数据。
需要说明的是,文件和虚拟磁盘仅为存储在数据集群中的两种对象形式,可选的对象形式并不仅限于此。对于可以存储在分布式系统中的其他形式的对象的元数据,同样可以采用本发明各实施例中所述的元数据处理方法和客户端进行处理。
202、根据所述写请求,生成与所述对象标识对应的至少一条修改指令。
具体的,可以参见步骤102中所述的实现方式。
203、将所述至少一条修改指令发送至用于存储修改指令的数据服务器。
具体的,主控客户端在生成了至少一条修改指令之后,还需要将这些修改指令发送给用于存储修改指令的数据服务器。
数据服务器存储修改指令的方式可以与存储其他数据的方式类似,也就是说,将修改指令作为一部分特殊的数据存储在数据服务器中。
进一步地,主控客户端生成的至少一条修改指令可以为事务日志。
优选的,可以为事务日志中的重做(redo)日志。
需要说明的是,可选的修改指令的形式并不仅限于此。
204、将所述至少一条修改指令分别发送给所述数据标识对应的客户端及数据服务器。
具体的,可以参见步骤103中所述的实现方式。
205、向所述用于存储修改指令的数据服务器发送删除消息。执行步骤205是为了指示所述用于存储修改指令的数据服务器删除所述至少一条修改指令。
具体的,主控客户端在将各条修改指令分别发送给相应的客户端和数据服务器之后,向用于存储修改指令的数据服务器发送删除消息。用于存储修改指令的数据服务器在接收到删除消息之后,将相应的修改指令删除。
由于修改指令是与对象标识对应的,因此,当与对象标识对应的修改指令为多条时,该多条修改指令可以被认为是一组修改指令。用于存储修改指令的数据服务器将每组修改指令作为一个整体。
当主控客户端将每组修改指令中的各条修改指令,依次发送给对应的客户端和数据服务器之后,向用于存储修改指令的数据服务器发送删除消息,以指示该数据服务器将该组修改指令删除。
主控客户端将至少一条修改指令存储在数据服务器中,是为了提高元数据服务的性能。
若主控客户端发生故障,中心节点将从其他客户端中重新选择一个客户端作为新的主控客户端。
新的主控客户端需要从用于存储修改指令的数据服务器中,获取当前未被删除的修改指令。由于当一组修改指令全部执行完毕时,该数据服务器将根据主控客户端的指示,将这一组修改指令删除,因此,如果该数据服务器中存在未被删除的修改指令,则说明未被删除的修改指令中的一条或多条是尚未被执行的。
新的主控客户端将从所述用于存储修改指令的数据服务器中获取到未被删除的修改指令之后,将所述未被删除的修改指令发送给所述未被删除的修改指令中的数据标识对应的客户端及数据服务器。由于未被删除的修改指令中包括数据标识和目标值,因此,新的主控客户端将各条修改指令依次发送给修改指令中的数据标识对应的客户端和数据服务器,以使得接收到修改指令的客户端和数据服务器将数据标识对应的元数据修改为目标值。
同样的,当新的主控客户端将获取到的未被删除的修改指令发送给相应的客户端和数据服务器之后,向用于存储修改指令的数据服务器发送删除消息,以指示该数据服务器将执行完的修改指令删除。
主控客户端将所生成的修改指令,也存储在数据集群的数据服务器中,并且在主控客户端执行完各条修改指令之后,才指示存储修改指令的数据服务器将相应的修改指令删除,使得在一组修改指令全部执行完成之前,即使主控客户端发生故障,新的主控客户端仍能够获取到该组修改指令。通过由新的主控客户端将该组修改指令重新执行一遍,使得写请求所指示的需要对对象进行的修改能够全部被执行,并且保证了对元数据的修改在客户端和数据服务器中保持一致。
进一步地,在主控客户端发生故障时,中心节点从其他客户端中选出一个新的主控客户端之后,还向除该新的主控客户端之外的其他客户端发送消息,以指示这些客户端将其客户端标识,以及各自所存储的对象标识和数据标识的对应关系,发送给新的主控客户端。从而,新的主控客户端能够获知每个客户端中所存储的对象标识与数据标识的对应关系。以供新的主控客户端根据数据标识查找到对象标识,进而查找到数据标识对应的客户端。
图3为本发明实施例提供的又一元数据处理方法的流程图,如图3所示,该方法包括:
301、接收读请求。其中,所述读请求中携带有对象标识。
具体的,当用户所使用的客户端为除主控客户端以外的其他客户端时,该客户端在接收到用户发送的读请求时,首先根据读请求中所携带的对象标识,在其所存储的对象标识和元数据的对应关系中进行查找,若查找到与该对象标识对应的至少一个元数据,即表明该客户端中存储有该至少一个元数据。相应地,该客户端将查找到的各元数据返回给用户即可。
当用户所使用的客户端为主控客户端时,主控客户端根据接收到的读请求中的对象标识,在其所存储的对应标识和元数据的对应关系中进行查找,若查找到与该对象标识对应的至少一个元数据,即表明该主控客户端中存储有该至少一个元数据。相应地,该主控客户端将查找到的各元数据返回给用户。
当用户所使用的客户端为除客户端以外的其他客户端,且在其上未查找到与对象标识对应的元数据时,则将该读请求发送给主控客户端。
主控客户端在接收到该读请求之后,若能够在其上查找到与对象标识对应的各元数据,则将各元数据返回给该客户端。相应地,该客户端在接收到各元数据之后,将各元数据存储为与该对象标识对应的元数据。
但是,主控客户端在接收到该读请求之后,若未能够在其上查找到与该对象标识对应的各元数据,则需要从数据集群中读取这些元数据。
302、当在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据时,根据所述读请求,生成与所述对象标识对应的至少一条访问指令。其中,所述访问指令包括与所述对象标识对应的元数据的数据标识。
具体的,主控客户端中预先存储有对象标识与元数据的数据标识之间的对应关系。若主控客户端在其上未查找到与读请求中的对象标识对应的元数据,则根据该读请求,生成一条或多条与该对象标识对应的访问指令。
由于主控客户端根据接收到的读请求,可以获知需要访问对象中的哪些元数据,因此主控客户端能够根据读请求生成一条或多条访问指令。每条访问指令中包括需要访问的元数据的数据标识。需要访问的元数据的数据标识是与读请求中的对象标识对应的。
303、将所述访问指令发送给所述数据标识对应的数据服务器。
具体的,由于主控客户端中存储有数据标识与数据服务器的对应关系。因此,主控客户端在生成访问指令之后,根据访问指令中的数据标识,将访问指令发送给与该数据标识对应的数据服务器。
若主控客户端生成的访问指令为多条,则依次将每条访问指令发送给各数据标识对应的数据服务器。
304、接收所述数据服务器根据所述数据标识返回的目标元数据。
具体的,主控客户端在将访问指令发送给相应的数据服务器之后,即可等待该数据服务器返回相应的目标元数据。主控客户端接收到的目标元数据即为与访问指令中的数据标识对应的元数据。
本发明实施例提供的元数据处理方法,在主控客户端中未存储与读请求中的对象标识对应的元数据时,生成与该对象标识对应的一条或多条访问指令,并将各条访问指令发送给元数据的数据标识对应的数据服务器,以从数据服务器接收与数据标识对应的目标元数据。从而使得在客户端或主控客户端中均未存储相应的元数据时,才需要通过访问数据服务器获取相应的元数据,而当客户端和主控客户端上存储有相应的元数据,则可直接或间接地返回给用户,有效地提高了元数据服务的性能和效率。
图4为本发明实施例提供的又一元数据处理方法的流程图,如图4所示,该方法包括:
401、接收读请求。其中,所述读请求中携带有对象标识、客户端标识。
具体的,可以参见步骤301中所述的实现方式。
进一步地,所述对象标识为文件标识或虚拟磁盘标识。
在数据集群中存储的对象可以为文件,还可以为虚拟磁盘。相应地,当对象为文件时,对象标识为文件标识,元数据即为文件的元数据;当对象为虚拟磁盘时,对象标识为虚拟磁盘标识,元数据即为虚拟磁盘的元数据。
需要说明的是,文件和虚拟磁盘仅为存储在数据集群中的两种对象形式,可选的对象形式并不仅限于此。对于可以存储在分布式系统中的其他形式的对象的元数据,同样可以采用本发明各实施例中所述的元数据处理方法和客户端进行处理。
进一步地,当主控客户端接收到的读请求来自于其他客户端的情况下,在读请求中还可以携带客户端标识。以供主控客户端将在其上查找到的元数据,或者从数据服务器接收到的目标元数据发送给该客户端标识对应的客户端。并且,主控客户端还会存储该客户端标识与对象标识的对应关系,以供在进行写操作时,不仅将修改指令发送给数据标识对应的数据服务器,还根据数据标识与对象标识的对应关系,将修改指令发送给数据标识对应的客户端。
402、当在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据时,根据所述读请求,生成与所述对象标识对应的至少一条访问指令。
具体的,可以参见步骤302中所述的实现方式。
403、将所述访问指令发送给所述数据标识对应的数据服务器。
具体的,可以参见步骤303中所述的实现方式。
404、接收所述数据服务器根据所述数据标识返回的目标元数据。
具体的,可以参见步骤304中所述的实现方式。
405、将所述目标元数据发送给所述客户端标识对应的客户端,以供所述客户端将所述目标元数据保存为与所述对象标识对应的元数据。
具体的,主控客户端在从数据服务器接收到目标元数据之后,将目标元数据发送给客户端标识对应的客户端。接收到目标元数据的客户端将该目标元数据保存为与读请求中携带的对象标识对应的元数据。从而,当该客户端再次接收到携带有该对象标识的读请求中,即可从其所存储的对象标识与元数据的对应关系中查找到该元数据,进而直接将该元数据返回给用户,而无需将读请求发送给主控客户端,有效地提高了元数据服务的性能和效率。
在上述各实施例中,主控客户端与中心节点之间设置心跳机制。中心节点如果一直能够检测到主控客户端的心跳,则可判定该主控客户端处于正常的工作状态;中心节点如果在预设的时间长度内检测不到主控客户端的心跳,则判定该主控客户端发生故障,进而从其他的客户端中重新选择新的主控客户端。此外,主控客户端还可以通过直接向中心节点发送请求消息的方式,请求中心节点从其他的客户端中重新选择新的主控客户端。
进一步地,除主控客户端以外的其他客户端也可以与中心节点保持心跳。同样的,中心节点能够检测到心跳的客户端是处于正常工作状态的客户端;中心节点检测不到心跳的客户端可能处于故障的工作状态。当中心节点从各客户端中重新选择主控客户端时,优选地从可检测到心跳的客户端中进行选择。
进一步地,当主控客户端以外的其他客户端在从故障的工作状态恢复为正常的工作状态时,不仅需要与中心节点建立心跳,还需要将其客户端标识,及其所存储的对象标识与数据标识的对应关系发送给主控客户端,以供主控客户端更新该客户端的相关信息。
图5为本发明实施例提供的客户端的结构示意图,如图5所示,该客户端包括接收单元11、处理单元12和发送单元13。
接收单元11,用于接收写请求,所述写请求中携带有对象标识;
处理单元12,用于根据所述写请求,生成与所述对象标识对应的至少一条修改指令,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;
发送单元13,用于将所述修改指令发送给所述数据标识对应的客户端及数据服务器,以供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值。
进一步地,所述处理单元12还用于:
在根据所述写请求,生成与所述对象标识对应的至少一条修改指令之后,将所述至少一条修改指令发送至用于存储修改指令的数据服务器;
相应地,所述发送单元13还用于:
在将所述至少一条修改指令分别发送给所述数据标识对应的客户端及数据服务器之后,向所述用于存储修改指令的数据服务器发送删除消息,以指示所述用于存储修改指令的数据服务器删除所述至少一条修改指令。
图6为本发明实施例提供的另一客户端的结构示意图,如图6所示,该客户端还可以包括获取单元14。
获取单元14,用于从所述用于存储修改指令的数据服务器中获取未被删除的修改指令;
相应地,所述发送单元13还用于:
将所述未被删除的修改指令发送给所述未被删除的修改指令中的数据标识对应的客户端及数据服务器。
进一步地,所述接收单元11接收到的所述写请求中的所述对象标识为文件标识或虚拟磁盘标识。
具体的,本发明实施例提供的客户端进行元数据处理的方法,可以参见上述对应的方法实施例中所述的操作步骤,此处不再赘述。
本发明实施例提供的客户端,根据写请求生成与对象标识对应的至少一条修改指令,在该修改指令中包括需要修改的元数据的数据标识以及对该元数据进行修改的目标值,将各条修改指令分别发送给存储对应的元数据的客户端和数据服务器,从而使得客户端和数据服务器中所存储的元数据能够得到同步的更新,保证了分布式系统中对数据进行存储的一致性,此外,由于各客户端的写请求均需要通过作为主控客户端的客户端,发送给数据集群中的数据服务器,避免了由于多个客户端同时发送写请求而出现写冲突的情况,有效地保证了分布式系统提供元数据服务的性能。
图7为本发明实施例提供的又一客户端的结构示意图,如图7所示,该客户端包括接收单元21、处理单元22和发送单元23。
接收单元21,用于接收读请求,所述读请求中携带有对象标识;
处理单元22,当在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据时,根据所述读请求,生成与所述对象标识对应的至少一条访问指令,所述访问指令包括与所述对象标识对应的元数据的数据标识;
发送单元23,用于将所述访问指令发送给所述数据标识对应的数据服务器;
相应地,所述接收单元21还用于,接收所述数据服务器根据所述数据标识返回的目标元数据。
进一步地,所述接收单元21接收到的所述读请求中还携带有客户端标识;
相应地,所述发送单元23还用于:
在接收到所述数据服务器根据所述数据标识返回的目标元数据之后,将所述目标元数据发送给所述客户端标识对应的客户端,以供所述客户端将所述目标元数据保存为与所述对象标识对应的元数据。
进一步地,所述接收单元接收到的所述读请求中的所述对象标识为文件标识或虚拟磁盘标识。
具体的,本发明实施例提供的客户端进行元数据处理的方法,可以参见上述对应的方法实施例中所述的操作步骤,此处不再赘述。
本发明实施例提供的客户端,在未存储与读请求中的对象标识对应的元数据时,生成与该对象标识对应的一条或多条访问指令,并将各条访问指令发送给元数据的数据标识对应的数据服务器,以从数据服务器接收与数据标识对应的目标元数据。从而使得在客户端或主控客户端中均未存储相应的元数据时,才需要通过访问数据服务器获取相应的元数据,而当客户端和主控客户端上存储有相应的元数据,则可直接或间接地返回给用户,有效地提高了元数据服务的性能和效率。
图8为本发明实施例提供的又一客户端的结构示意图,如图8所示,该客户端包括:
处理器31、存储器32、总线33和通信接口34。处理器31、存储器32和通信接口34之间通过总线33连接并完成相互间的通信。
处理器31可能为单核或多核中央处理单元(Central Processing Unit,CPU),或者为特定集成电路(Application Specific Integrated Circuit,ASIC),或者为被配置成实施本发明实施例的一个或多个集成电路。
存储器32可以为高速RAM存储器,也可以为非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
存储器32用于存放程序321。具体的,程序321中可以包括程序代码,所述程序代码包括计算机操作指令。
通信接口34,用于接收写请求,所述写请求中携带有对象标识;
处理器31运行程序321,以执行:
根据所述写请求,生成与所述对象标识对应的至少一条修改指令,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;
将所述修改指令发送给所述数据标识对应的客户端及数据服务器,以供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值。
具体的,本发明实施例提供的客户端进行元数据处理的方法,可以参见上述对应的方法实施例中所述的操作步骤,此处不再赘述。
图9为本发明实施例提供的又一客户端的结构示意图,如图9所示,该
客户端包括:
处理器41、存储器42、总线43和通信接口44。处理器41、存储器42和通信接口44之间通过总线43连接并完成相互间的通信。
处理器41可能为单核或多核中央处理单元(Central Processing Unit,CPU),或者为特定集成电路(Application Specific Integrated Circuit,ASIC),或者为被配置成实施本发明实施例的一个或多个集成电路。
存储器42可以为高速RAM存储器,也可以为非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
存储器42用于存放程序421。具体的,程序421中可以包括程序代码,所述程序代码包括计算机操作指令。
通信接口44,用于接收读请求,所述读请求中携带有对象标识;
处理器41运行程序421,以执行:
若在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据,则根据所述读请求,生成与所述对象标识对应的至少一条访问指令,所述访问指令包括与所述对象标识对应的元数据的数据标识;
将所述访问指令发送给所述数据标识对应的数据服务器;
接收所述数据服务器根据所述数据标识返回的目标元数据。
具体的,本发明实施例提供的客户端进行元数据处理的方法,可以参见上述对应的方法实施例中所述的操作步骤,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种元数据处理方法,应用于分布式系统,所述分布式系统包括数据服务器及至少两个客户端,其特征在于,所述至少两个客户端包括主控客户端,所述主控客户端为所述至少两个客户端与所述数据服务器通信时需要经过的客户端;所述方法由所述主控客户端执行,所述方法包括:
接收写请求,所述写请求中携带有对象标识;
根据所述写请求,生成与所述对象标识对应的至少一条修改指令,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;
将所述修改指令发送给所述数据标识对应的客户端及数据服务器,以供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值;
其中,所述对象标识为文件标识或虚拟磁盘标识。
2.根据权利要求1所述的元数据处理方法,其特征在于,所述根据所述写请求,生成与所述对象标识对应的至少一条修改指令之后,所述方法还包括:
将所述至少一条修改指令发送至用于存储修改指令的数据服务器;
相应地,所述方法还包括:
在将所述至少一条修改指令分别发送给所述数据标识对应的客户端及数据服务器之后,向所述用于存储修改指令的数据服务器发送删除消息,以指示所述用于存储修改指令的数据服务器删除所述至少一条修改指令。
3.根据权利要求2所述的元数据处理方法,其特征在于,所述方法还包括:
从所述用于存储修改指令的数据服务器中获取未被删除的修改指令;
将所述未被删除的修改指令发送给所述未被删除的修改指令中的数据标识对应的客户端及数据服务器。
4.一种元数据处理方法,应用于分布式系统,所述分布式系统包括数据服务器及至少两个客户端,其特征在于,所述至少两个客户端包括主控客户端,所述主控客户端为所述至少两个客户端与所述数据服务器通信时需要经过的客户端;所述方法由所述主控客户端执行,所述方法包括:
接收读请求,所述读请求中携带有对象标识;
若在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据,则根据所述读请求,生成与所述对象标识对应的至少一条访问指令,所述访问指令包括与所述对象标识对应的元数据的数据标识;
将所述访问指令发送给所述数据标识对应的数据服务器;
接收所述数据服务器根据所述数据标识返回的目标元数据;
其中,所述对象标识为文件标识或虚拟磁盘标识。
5.根据权利要求4所述的元数据处理方法,其特征在于,所述读请求中还携带有客户端标识;
相应地,所述接收所述数据服务器根据所述数据标识返回的目标元数据之后,所述方法还包括:
将所述目标元数据发送给所述客户端标识对应的客户端,以供所述客户端将所述目标元数据保存为与所述对象标识对应的元数据。
6.一种元数据处理装置,应用于分布式系统,所述分布式系统包括数据服务器及至少两个客户端,其特征在于,所述至少两个客户端包括主控客户端,所述主控客户端为所述至少两个客户端与所述数据服务器通信时需要经过的客户端;所述装置为主控客户端,所述装置包括:
接收单元,用于接收写请求,所述写请求中携带有对象标识;
处理单元,用于根据所述写请求,生成与所述对象标识对应的至少一条修改指令,所述修改指令包括数据标识和与所述数据标识对应的目标值,所述数据标识为与所述对象标识对应的至少一个元数据中的需要进行修改的元数据的标识;
发送单元,用于将所述修改指令发送给所述数据标识对应的客户端及数据服务器,以供所述客户端和所述数据服务器分别根据所述修改指令,将所述数据标识对应的元数据修改为所述目标值;
其中,所述接收单元接收到的所述写请求中的所述对象标识为文件标识或虚拟磁盘标识。
7.根据权利要求6所述的装置,其特征在于,所述处理单元还用于:
在根据所述写请求,生成与所述对象标识对应的至少一条修改指令之后,将所述至少一条修改指令发送至用于存储修改指令的数据服务器;
相应地,所述发送单元还用于:
在将所述至少一条修改指令分别发送给所述数据标识对应的客户端及数据服务器之后,向所述用于存储修改指令的数据服务器发送删除消息,以指示所述用于存储修改指令的数据服务器删除所述至少一条修改指令。
8.根据权利要求7所述的装置,其特征在于,所述客户端还包括:
获取单元,用于从所述用于存储修改指令的数据服务器中获取未被删除的修改指令;
相应地,所述发送单元还用于:
将所述未被删除的修改指令发送给所述未被删除的修改指令中的数据标识对应的客户端及数据服务器。
9.一种元数据处理装置,应用于分布式系统,所述分布式系统包括数据服务器及至少两个客户端,其特征在于,所述至少两个客户端包括主控客户端,所述主控客户端为所述至少两个客户端与所述数据服务器通信时需要经过的客户端;所述装置为主控客户端,所述装置包括:
接收单元,用于接收读请求,所述读请求中携带有对象标识;
处理单元,当在所存储的对象标识与元数据的对应关系中,未查找到与所述对象标识对应的元数据时,根据所述读请求,生成与所述对象标识对应的至少一条访问指令,所述访问指令包括与所述对象标识对应的元数据的数据标识;
发送单元,用于将所述访问指令发送给所述数据标识对应的数据服务器;
相应地,所述接收单元还用于,接收所述数据服务器根据所述数据标识返回的目标元数据;
其中,所述接收单元接收到的所述读请求中的所述对象标识为文件标识或虚拟磁盘标识。
10.根据权利要求9所述的装置,其特征在于,所述接收单元接收到的所述读请求中还携带有客户端标识;
相应地,所述发送单元还用于:
在接收到所述数据服务器根据所述数据标识返回的目标元数据之后,将所述目标元数据发送给所述客户端标识对应的客户端,以供所述客户端将所述目标元数据保存为与所述对象标识对应的元数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210554481.1A CN103095687B (zh) | 2012-12-19 | 2012-12-19 | 元数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210554481.1A CN103095687B (zh) | 2012-12-19 | 2012-12-19 | 元数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103095687A CN103095687A (zh) | 2013-05-08 |
CN103095687B true CN103095687B (zh) | 2015-08-26 |
Family
ID=48207820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210554481.1A Active CN103095687B (zh) | 2012-12-19 | 2012-12-19 | 元数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103095687B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103875229B (zh) * | 2013-12-02 | 2017-04-26 | 华为技术有限公司 | 异步复制方法、装置与系统 |
CN104090897B (zh) | 2013-12-19 | 2016-05-04 | 深圳市腾讯计算机系统有限公司 | 访问元数据的方法、服务器及系统 |
US11755202B2 (en) | 2015-01-20 | 2023-09-12 | Ultrata, Llc | Managing meta-data in an object memory fabric |
WO2016118615A1 (en) | 2015-01-20 | 2016-07-28 | Ultrata Llc | Object memory data flow instruction execution |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
CN106293929B (zh) * | 2015-06-11 | 2020-10-27 | 联想(北京)有限公司 | 一种数据处理方法及第一电子设备 |
WO2017100281A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
WO2017100288A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc. | Memory fabric operations and coherency using fault tolerant objects |
CN105959420A (zh) * | 2016-07-15 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 多客户端元数据同步更新方法及系统 |
CN106131227A (zh) * | 2016-08-31 | 2016-11-16 | 浪潮(北京)电子信息产业有限公司 | 负载平衡方法、元数据服务器系统及负载平衡系统 |
CN106845259B (zh) * | 2017-02-28 | 2019-12-17 | 苏州浪潮智能科技有限公司 | 一种分布式文件读写权限设置方法 |
CN108595109B (zh) * | 2017-12-29 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种基于Ceph分布式存储系统的多客户端写的方法 |
CN108897822A (zh) * | 2018-06-21 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种数据更新方法、装置、设备及可读存储介质 |
CN110224988B (zh) * | 2019-05-10 | 2023-04-07 | 视联动力信息技术股份有限公司 | 一种图像数据的处理方法、系统及装置和存储介质 |
CN111339046B (zh) * | 2020-02-26 | 2023-09-19 | 中国工商银行股份有限公司 | 针对文件的数据写入、读取和删除方法及装置 |
CN113452730B (zh) * | 2020-03-25 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 对象读取管理方法、装置、电子设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存系统 |
CN101217571A (zh) * | 2008-01-18 | 2008-07-09 | 清华大学 | 用于多副本数据网格系统中的写/读文件操作的方法 |
CN101741911A (zh) * | 2009-12-18 | 2010-06-16 | 中兴通讯股份有限公司 | 基于多副本协同的写操作方法、系统及节点 |
CN102411637A (zh) * | 2011-12-30 | 2012-04-11 | 创新科软件技术(深圳)有限公司 | 分布式文件系统的元数据管理方法 |
CN102567445A (zh) * | 2011-10-25 | 2012-07-11 | 无锡城市云计算中心有限公司 | 一种分布式文件系统中保证元数据一致性的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965862B2 (en) * | 2010-09-17 | 2015-02-24 | Microsoft Corporation | Directory oplock |
-
2012
- 2012-12-19 CN CN201210554481.1A patent/CN103095687B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存系统 |
CN101217571A (zh) * | 2008-01-18 | 2008-07-09 | 清华大学 | 用于多副本数据网格系统中的写/读文件操作的方法 |
CN101741911A (zh) * | 2009-12-18 | 2010-06-16 | 中兴通讯股份有限公司 | 基于多副本协同的写操作方法、系统及节点 |
CN102567445A (zh) * | 2011-10-25 | 2012-07-11 | 无锡城市云计算中心有限公司 | 一种分布式文件系统中保证元数据一致性的方法 |
CN102411637A (zh) * | 2011-12-30 | 2012-04-11 | 创新科软件技术(深圳)有限公司 | 分布式文件系统的元数据管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103095687A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103095687B (zh) | 元数据处理方法及装置 | |
US8069224B2 (en) | Method, equipment and system for resource acquisition | |
CN102546782B (zh) | 一种分布式系统及其数据操作方法 | |
US9229950B2 (en) | Method and device for processing files of distributed file system | |
CN111182067B (zh) | 一种基于星际文件系统ipfs的数据写入方法及设备 | |
CN101217571B (zh) | 用于多副本数据网格系统中的写/读文件操作的方法 | |
CN111405019B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN106446159B (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
CN103152390B (zh) | 分布式存储系统的节点配置方法、装置、节点及系统 | |
CN102413156B (zh) | 一种分布式数据存储系统和方法 | |
CN104537076A (zh) | 一种文件读写方法及装置 | |
CN103986694A (zh) | 分布式计算机数据存储系统中多副本一致性的控制方法 | |
CN105677675B (zh) | 业务处理方法及装置 | |
CN103186554A (zh) | 分布式数据镜像方法及存储数据节点 | |
CN105138571A (zh) | 分布式文件系统及其存储海量小文件的方法 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN106452836B (zh) | 主节点设置方法及装置 | |
CN102983996A (zh) | 一种高可用集群资源管理的动态配置方法与系统 | |
CN102142032A (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN105278882A (zh) | 一种分布式文件系统的磁盘管理方法 | |
CN109508254A (zh) | 一种数据恢复方法及装置 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN104715044A (zh) | 一种分布式系统及其数据操作方法 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN105574008A (zh) | 应用于分布式文件系统的任务调度方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220601 Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041 Patentee after: Chengdu Huawei Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |