CN107704462B - 资源的元数据维护方法、设备及存储装置 - Google Patents
资源的元数据维护方法、设备及存储装置 Download PDFInfo
- Publication number
- CN107704462B CN107704462B CN201610642192.5A CN201610642192A CN107704462B CN 107704462 B CN107704462 B CN 107704462B CN 201610642192 A CN201610642192 A CN 201610642192A CN 107704462 B CN107704462 B CN 107704462B
- Authority
- CN
- China
- Prior art keywords
- resource
- log
- same
- attribute
- routing information
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请的目的是提供一种资源的元数据维护方法、设备及存储装置,通过把资源的元数据切分为主从节点,在主节点对资源的路由信息进行记录和维护,实现资源命名全局唯一,在从节点对资源属性进行维护,实现资源的元数据高可用,本申请适用于使用集群提供存储服务的分布式存储***中,实现在资源在多地域下,既要保证资源命名全局唯一,又要保证资源的元数据高可用。另外,通过创建或删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,能够根据日志检查删除残余的主节点上的在异常场景下生成的残余的路由信息。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种资源的元数据维护方法、设备及存储装置。
背景技术
在云存储***中,通常都需要保证资源命名全局唯一性,这个一般是通过把资源的元数据保存在一个公共节点上来实现,在公共节点上通过事务来保证。但这种结构下如果公共节点不能正常服务,所有访问元数据的请求都会受到影响,严重影响***的可用性。另外,不同地域的通信质量无法保证,甚至会完全不可服务,而公共节点又只能部署在一个地域,这个时候其他地域对公共节点的访问请求无法保证,可用性会比较差。这个时候常用的手段是把资源的元数据按地域切分。
目前把元数据按地域切分都是去掉全局节点,把每个地域当做一个完全独立的***,各个地域分别保存各自的元数据,各个地域之间完全隔离。而对于资源命名的全局唯一性,一般是通过在资源名字里面附上地域的信息来保证全局唯一性或者使用一个全局唯一的字符串来表示。这种方式的资源命名只能保证某个地域内唯一,如果要在全局内访问,需要附加上地域信息或者使用一个很长的别名。这个时候,一个资源有两个名字,容易让用户混淆,并且会容易出错,易用性很差。
发明内容
本申请的一个目的是提供一种资源的元数据维护方法、设备及存储装置,能够解决资源的元数据可用性差,或资源命名全局不唯一的问题。
根据本申请的一个方面,提供了一种资源的元数据维护方法,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
资源的路由信息在主节点进行维护,资源属性在所述资源属性的位置信息对应的从节点进行维护,所述资源的路由信息包括全局唯一的资源名称和资源属性的位置信息。
进一步的,上述方法中,所述资源的路由信息还包括创建或删除资源的时间戳;
资源的路由信息在主节点进行维护,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护。进一步的,上述方法中,根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
创建或删除资源时,在主节点更新所述创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
根据创建或删除资源的时间戳与所述日志,在主节点删除所述创建和删除资源时残余的路由信息。
进一步的,上述方法中,创建资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若不存在,在主节点创建所述资源的路由信息,并同时持久化一条日志,所述资源的路由信息包括所述资源名称、所述资源属性的位置信息和所述创建或删除资源的时间戳;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在之后,还包括:
若存在,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同,
若不同,返回资源创建失败。
进一步的,上述方法中,所述资源的路由信息还包括用户,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,还包括:
若相同,判断所述请求是否由同一用户发起,
若是,则在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
请求删除资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若存在,在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据资源的路由信息在从节点删除所述资源属性,若所述资源属性删除失败,返回资源删除失败;若删除成功,返回资源删除成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,根据创建或删除资源的时间戳与所述日志,在主节点删除所述创建和删除资源时残余的路由信息,包括:
扫描超过预设时间后依然存在的日志;
根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
进一步的,上述方法中,根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
在主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则删除该日志。
进一步的,上述方法中,在主节点查询相同资源名称的路由信息是否存在之后,还包括:
若存在,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则删除该日志。
进一步的,上述方法中,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,在对应的从节点上查询是否存在相同资源名称的资源属性,
若存在,则删除该日志。
进一步的,上述方法中,在对应的从节点上查询是否存在相同资源名称的资源属性之后,还包括:
若不存在,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则删除该日志和路由信息。
进一步的,上述方法中,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,则删除该日志。
进一步的,上述方法中,在从节点对资源属性进行维护,还包括:
当在从节点的创建或删除资源属性成功之后,将创建或删除资源的创建或删除资源的时间戳保存到从节点上所述资源属性中;
当从节点又接收到对同一资源的创建或删除的属性的请求时,判断当前请求的资源的创建或删除资源的时间戳是否大于从节点上保存的所述资源属性中的时间戳,
若是,在从节点上处理该请求;
若否,在从节点上忽略该请求。
根据本申请的另一面,还提供一种资源的元数据维护方法,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
主节点获取创建资源的路由信息的请求,查询资源的路由信息在主节点是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳;
若不存在,主节点创建所述资源的路由信息,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建所述资源属性的请求,所述日志包括与所述资源的路由信息相同的资源名称和时间戳;
从节点根据接收到的创建所述资源属性的请求创建所述资源属性,若所述资源属性创建失败,向主节点返回资源创建失败。
进一步的,上述方法中,从节点根据接收到的创建所述资源属性的请求创建所述资源属性之后,还包括:
若创建成功,向主节点返回资源创建成功的反馈;
主节点根据所述资源创建成功的反馈,将所述资源的路由信息中的所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,主节点查询所述资源的路由信息在主节点是否存在之后,还包括:
若存在,所述主节点判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建的资源属性的位置信息不同,
若不同,所述主节点向所述从节点返回资源创建失败。
进一步的,上述方法中,所述资源的路由信息还包括用户,
主节点判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,还包括:
若相同,主节点判断所述创建资源属性的请求是否由同一用户发起,
若是,则主节点更新所述创建或删除资源的时间戳,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建资源属性的请求;
从节点根据所述创建资源属性的请求创建所述资源属性,若所述资源属性创建失败,向所述主节点返回资源创建失败。
进一步的,上述方法中,从节点根据所述创建资源属性的请求创建所述资源属性之后,还包括:
若创建成功,向所述主节点返回资源创建成功后,所述主节点将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,若相同,则删除该条日志之后,包括:
所述主节点扫描超过预设时间后依然存在的日志;
所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
进一步的,上述方法中,所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则主节点删除该日志。
进一步的,上述方法中,主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,还包括:
若存在,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则所述主节点删除该日志。
进一步的,上述方法中,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,主节点根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询,
若存在,则所述从节点向所述主节点发送资源属性存在的反馈,所述主节点根据所述资源属性存在的反馈删除该日志。
进一步的,上述方法中,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,还包括:
若不存在,所述从节点向所述主节点发送资源属性不存在的反馈,所述主节点根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则所述主节点删除该日志和路由信息。
进一步的,上述方法中,所述主节点再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,则所述主节点删除该日志。
根据本申请的另一面,还提供一种资源的元数据维护方法,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
主节点获取删除资源的路由信息的请求,根据所述删除资源的路由信息的请求查询所述资源的路由信息是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳,
若存在,主节点更新所述创建或删除资源的时间戳,并同时持久化一条日志后,向从节点发起删除资源属性的请求;
所述从节点根据接收到的所述删除资源属性的请求删除所述资源属性,若所述资源属性删除失败,向所述主节点返回资源删除失败。
进一步的,上述方法中,所述从节点根据接收到的所述删除资源属性的请求删除所述资源属性之后,还包括:
若删除成功,向所述主节点返回资源删除成功,并将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,若相同,则删除该条日志之后,包括:
所述主节点扫描超过预设时间后依然存在的日志;
所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
进一步的,上述方法中,所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则主节点删除该日志。
进一步的,上述方法中,主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,还包括:
若存在,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则所述主节点删除该日志。
进一步的,上述方法中,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,主节点根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询,
若存在,则所述从节点向所述主节点发送资源属性存在的反馈,所述主节点根据所述资源属性存在的反馈删除该日志。
进一步的,上述方法中,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,还包括:
若不存在,所述从节点向所述主节点发送资源属性不存在的反馈,所述主节点根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则所述主节点删除该日志和路由信息。
进一步的,上述方法中,所述主节点再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,则所述主节点删除该日志。
根据本申请的另一方面,还提供了一种资源的元数据维护设备,所述资源的元数据包括资源的路由信息和资源属性,该设备包括:
维护装置,用于将资源的路由信息在主节点进行维护,所述资源的路由信息包括全局唯一的资源名称和资源属性的位置信息;将资源属性在所述资源属性的位置信息对应的从节点进行维护。
进一步的,上述设备中,所述资源的路由信息还包括创建或删除资源的时间戳,所述维护装置,用于根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护。
进一步的,上述设备中,所述维护装置,包括:
创建维护装置,用于在创建资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
删除维护装置,用于在删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
扫描装置,用于根据创建或删除资源的时间戳与所述日志,在主节点删除所述创建和删除资源时残余的路由信息。
进一步的,上述设备中,所述创建维护装置,用于请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若不存在,在主节点创建所述资源的路由信息,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述设备中,创建维护装置,还用于请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在之后,
若存在,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同,
若不同,返回资源创建失败。
进一步的,上述设备中,所述资源的路由信息还包括用户,创建维护装置,还用于在判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,若相同,判断所述请求是否由同一用户发起,
若是,则在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述设备中,所述删除维护装置,用于请求删除资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若存在,在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据资源的路由信息在从节点删除所述资源属性,若所述资源属性删除失败,返回资源删除失败;若删除成功,返回资源删除成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述设备中,所述扫描装置,用于扫描超过预设时间后依然存在的日志;
根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
进一步的,上述设备中,所述扫描装置,用于在主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则删除该日志。
进一步的,上述设备中,所述扫描装置,还用于在主节点查询相同资源名称的路由信息是否存在之后,
若存在,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则删除该日志。
进一步的,上述设备中,所述扫描装置,还用于判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,
若相同,在对应的从节点上查询是否存在相同资源名称的资源属性,
若存在,则删除该日志。
进一步的,上述设备中,所述扫描装置,还用于在对应的从节点上查询是否存在相同资源名称的资源属性之后,
若不存在,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则删除该日志和路由信息。
进一步的,上述设备中,所述扫描装置,还用于再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,
若不相同,则删除该日志。
进一步的,上述设备中,所述维护装置,还用于当在从节点的创建或删除资源属性成功之后,将创建或删除资源的创建或删除资源的时间戳保存到从节点上所述资源属性中;
当从节点又接收到对同一资源的创建或删除的属性的请求时,判断当前请求的资源的创建或删除资源的时间戳是否大于从节点上保存的所述资源属性中的时间戳,
若是,在从节点上处理该请求;
若否,在从节点上忽略该请求。
根据本申请的另一面,还提供一种资源的元数据维护设备,其中,所述资源的元数据包括资源的路由信息和资源属性,该设备包括:
主节点,用于获取创建资源的路由信息的请求,查询资源的路由信息在主节点是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳;若不存在,创建所述资源的路由信息,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建所述资源属性的请求,所述日志包括与所述资源的路由信息相同的资源名称和时间戳;
从节点,用于根据接收到的创建所述资源属性的请求创建所述资源属性,若所述资源属性创建失败,向主节点返回资源创建失败。
优选的,上述设备中,所述从节点,还用于在根据接收到的创建所述资源属性的请求创建所述资源属性之后,若创建成功,向主节点返回资源创建成功的反馈;
所述主节点,还用于根据所述资源创建成功的反馈,将所述资源的路由信息中的所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
优选的,上述设备中,所述主节点,还用于在查询所述资源的路由信息在主节点是否存在之后,若存在,所述主节点判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建的资源属性的位置信息不同,若不同,向所述从节点返回资源创建失败。
优选的,上述设备中,所述资源的路由信息还包括用户,
所述主节点,还用于判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,若相同,判断所述创建资源属性的请求是否由同一用户发起,若是,则更新所述创建或删除资源的时间戳,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建资源属性的请求;
所述从节点,还用于根据所述创建资源属性的请求创建所述资源属性,若所述资源属性创建失败,向所述主节点返回资源创建失败。
优选的,上述设备中,所述从节点,还用于在根据所述创建资源属性的请求创建所述资源属性之后,若创建成功,向所述主节点返回资源创建成功后,
所述主节点,还用于将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
优选的,上述设备中,所述主节点还用于在若相同,则删除该条日志之后,扫描超过预设时间后依然存在的日志;根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
优选的,上述设备中,所述主节点,还用于查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,若不存在,则主节点删除该日志。
优选的,上述设备中,所述主节点,还用于在查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,若不相同,则删除该日志。
优选的,上述设备中,所述主节点,还用于在判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若相同,根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求;
所述从节点,还用于根据所述查询是否存在相同资源名称的资源属性的请求进行查询,若存在,则向所述主节点发送资源属性存在的反馈;
所述主节点,还用于根据所述资源属性存在的反馈删除该日志。
优选的,上述设备中,所述从节点还用于在根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,若不存在,向所述主节点发送资源属性不存在的反馈;
所述主节点,还用于根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;若相同,则删除该日志和路由信息。
优选的,上述设备中,所述主节点,还用于在再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若不相同,则删除该日志。
根据本申请的另一面,还提供一种资源的元数据维护设备,所述资源的元数据包括资源的路由信息和资源属性,该设备包括:
主节点,用于获取删除资源的路由信息的请求,根据所述删除资源的路由信息的请求查询所述资源的路由信息是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳,若存在,更新所述创建或删除资源的时间戳,并同时持久化一条日志后,向从节点发起删除资源属性的请求;
所述从节点,用于根据接收到的所述删除资源属性的请求删除所述资源属性,若所述资源属性删除失败,向所述主节点返回资源删除失败。
优选的,上述设备中,所述从节点,还用于在根据接收到的所述删除资源属性的请求删除所述资源属性之后,若删除成功,向所述主节点返回资源删除成功,并将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
优选的,上述设备中,所述主节点,还用于在若相同,则删除该条日志之后,扫描超过预设时间后依然存在的日志;根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
优选的,上述设备中,所述主节点,还用于在根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,若不存在,则删除该日志。
优选的,上述设备中,主节点,还用于在查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,若存在,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,若不相同,则删除该日志。
优选的,上述设备中,所述主节点,还用于在判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若相同,根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求;
所述从节点,还用于根据所述查询是否存在相同资源名称的资源属性的请求进行查询,若存在,则所述从节点向所述主节点发送资源属性存在的反馈;
所述主节点,还用于根据所述资源属性存在的反馈删除该日志。
优选的,上述设备中,所述从节点,还用于在根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,若不存在,向所述主节点发送资源属性不存在的反馈;
所述主节点,还用于根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;若相同,则删除该日志和路由信息。
优选的,上述设备中,所述主节点,还用于在再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若不相同,则删除该日志。
根据本申请的另一面,还提供一种资源的元数据存储装置,所述资源的元数据包括资源的路由信息和资源属性,其中,所述装置包括:
主节点,用于存储所述资源的路由信息,所述资源的路由信息包括全局唯一的资源名称和资源属性的位置信息;从节点,用于存储所述资源属性。
优选的,上述装置中,所述资源的路由信息还包括创建或删除资源的时间戳。
优选的,上述装置中,所述主节点还包括日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳。
与现有技术相比,本申请通过把资源的元数据切分为主从节点,在主节点对资源的路由信息进行记录和维护,实现资源命名全局唯一,在从节点对资源属性进行维护,实现资源的元数据高可用,本申请适用于使用集群提供存储服务的分布式存储***中,实现在资源在多地域下,既要保证资源命名全局唯一,又要保证资源的元数据高可用。另外,通过创建或删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,能够根据日志检查删除残余的主节点上的在异常场景下生成的残余的路由信息。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出本申请中一优选的实施例的资源的元数据结构图;
图2示出本申请中资源的元数据维护方法一优选的实施例的流程图;
图3示出本申请中资源的元数据维护方法另一优选的实施例的流程图;
图4示出本申请中资源的元数据维护方法又一优选的实施例的流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
根据本申请的一个方面,提供一种资源的元数据维护方法,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
步骤S1,资源的路由信息在主节点进行维护,资源属性在所述资源属性的位置信息对应的从节点进行维护,其中,所述资源的路由信息包括资源名称(bucket)和资源属性(bucket meta)所在的从节点,所述资源的元数据包括资源的路由信息和属性。具体的,从节点是按地理位置划分的区域/地域(region),每个地域的节点称为从节点,主节点(公共节点)是所有地域的公共节点,用于保存资源所属的地域,即资源所在的从节点,路由信息用于记录资源所属的地域,用于主节点查询对应的从节点,所述资源的路由信息(bucketroute)包括资源名称(bucket)和资源属性(meta)所在的从节点。读写资源属性(bucketmeta)只需要访问从节点,创建和删除资源的请求需要同时访问主节点和从节点。在此,通过把资源的元数据切分为主从节点,在主节点对资源的路由信息进行记录和维护,实现资源命名全局唯一,在从节点对资源属性进行维护,实现资源的元数据高可用,本申请适用于使用集群提供存储服务的分布式存储***中,实现在资源在多地域下,既要保证资源命名全局唯一,又要保证资源的元数据高可用。
本申请的资源的元数据维护方法一优选的实施例中,所述资源的路由信息还包括创建或删除资源的时间戳,资源的路由信息在主节点进行维护,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护,便于后续根据时间戳删除异常的路由信息,进一步保证资源命名的全局唯一。
本申请的资源的元数据维护方法一优选的实施例中,步骤S1,根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
步骤S11,创建资源时,在主节点更新资源的创建或删除资源的时间戳(mtime),同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
步骤S12,删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护。在此,对每一次创建和删除操作,都会在主节点更新创建或删除资源的时间戳(mtime)的同时,持久化一条对应相同时间戳的操作日志(oplog),用于后续根据日志检查删除残余的主节点上的在异常场景下生成的残余的路由信息,每一次持久化一条日志时,日志中的时间戳与此次创建或删除资源时更新的日志的时间戳保持一致。例如,如图1所示,路由信息的格式可设置为(bucket,region,mtime),对应的日志的格式可设置为(bucket,region,mtime)。
创建资源分为三步,创建资源的请求要发送到主节点上:
第一步:
为了保证资源命名全局唯一,查询请求创建的资源的路由信息是否存在,根据结果分为三种情况:第一种情况,路由信息(bucket route)存在,但路由信息中的区域/地域(region)和此次请求的区域/地域(region)不同,或者路由信息中用户(user)和此次请求的用户(user)不同;第二种情况,bucket route存在,并且bucket route中的region和此次请求的region相同,并且已经存在的bucket route中记录的用户与此次请求的用户为同一用户;第三种情况,bucket route不存在。对于第一种情况,直接返回失败,对于第二种情况,更新bucket route信息中的时间戳为最新,对于第三种情况,新增一个bucket route信息。更新和新增bucket route时需要同时持久化一条oplog,oplog中保存的时间戳和此次更新或新增的bucket route中时间戳相同。另外,新增或更新bucket route和持久化oplog需要在同一个事务内,从而保证新增或更新bucket route与同时持久化的oplog的原子性,即要么新增或更新与持久化都成功,要么都不成功。
第二步:
对于第二和第三种情况,需要向对应的从节点发起创建操作请求。
第三步:
对于第二和第三种情况,如果对应的从节点返回失败,返回用户失败。如果对应的从节点返回成功,返回用户成功,然后比较bucket route中时间戳和第一步中持久化的oplog里面的时间戳是否相同,如果相同,删除oplog。
如图2所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S11,创建资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,包括:
步骤S111,请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若不存在,步骤S112,在主节点创建所述资源的路由信息,并同时持久化一条日志;
步骤S113,根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,步骤S114,返回资源创建失败;若创建成功,步骤S115,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,步骤S116,则删除该条日志。在此,本实施例是针对上述创建资源的第三种情况,bucket route不存在,则新增一个bucket route信息。若创建或删除资源的时间戳与相同资源名称的日志中的时间戳相同,说明主从节点均创建成功,该bucket route不是异常的bucket route,其对应的oplog不需要再保留,则应该将其对应的oplog删除。本实施例中,由于资源不存在,在主节点更新资源的创建或删除资源的时间戳为在主节点创建路信息中的时间戳,是一种特殊的时间戳更新。
如图2所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S111,请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在之后,还包括:
若存在,步骤S117,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同,
若不同,步骤S118,返回资源创建失败。在此,本实施例是针对上创建资源的第一种情况,路由信息(bucket route)存在,但路由信息中的区域/地域(region)和此次请求的区域/地域(region)不同,这种情况说明bucket route已经存在,如果已经存在的bucketroute中的region为北京,而此次请求的region为上海,则说明bucket route已经被占用,不能再作为上海的bucket route,而这个已经存在bucket route可能是已经由北京从节点创建成功,正在使用的bucket route,也有可能是由北京从节点未创建成功,不在使用的bucket route,后续需要将其删除后,才能供其它从节点创建使用的bucket route。
本申请的资源的元数据维护方法一优选的实施例中,所述资源的路由信息还包括用户。在此,所述资源的路由信息还包括资源所属的用户(user),即表示所述资源是由哪个用户请求创建的,便于后续审核创建请求是否由同一用户发起,进一步保证资源的全局唯一性。在此,路由信息的格式可设置为(bucket,region,mtime,user)。
如图2所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S117,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,还包括:
若相同,步骤S119,判断所述请求是否由同一用户发起,
若是,步骤S1191,则在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
步骤1192,根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,步骤S1193,返回资源创建失败;若创建成功,步骤S1194,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,步骤S1195,则删除该条日志。具体的,本实施例是针对上述创建资源中的第二种情况,bucket route存在,并且bucket route中的region和此次请求的region相同,并且已经存在的bucket route中记录的用户与此次请求的用户为同一用户,那么进行同一用户对同一资源进行重复创建的处理;另外,如果是不同用户,则与上述第一种情况的处理方法相同,直接返回创建失败。
和创建bucket相同,删除bucket请求需要发送到主节点上,基本包括如下三步:
第一步:
主节点判断bucket route是否存在,如果bucket route存在,更新bucket route的时间戳为最新时间,同时持久化一条oplog,oplog格式和创建bucket时相同;
第二步:
向对应的从节点发起删除bucket meta的请求;
第三步:
主节点收到从节点的处理结果后,如果请求失败,返回用户失败;如果请求成功,返回用户成功,然后删除bucket route和第一步持久化的oplog。
如图3所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S12,删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
步骤S121,请求删除资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若存在,步骤S122,在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
步骤S123,根据资源的路由信息在从节点删除所述资源属性,若所述资源属性删除失败,步骤S124,返回资源删除失败;若删除成功,步骤S125,返回资源删除成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,步骤S126,则删除该条日志。在此,资源删除成功后,由于bucket meta已经删除成功,对应的bucketroute和oplog已经没有用了,所以将其删除,防止bucket meta删除后,对应的bucketroute被不必要的继续占用。另外,为了判断bucket route是否被更新过,如果没有更新过,则创建或删除资源的时间戳与相同资源名称的日志中的时间戳相同,删除bucket route和oplog,如果bucket route已经更新,创建或删除资源的时间戳与相同资源名称的日志中的时间戳不相同,则只删除oplog。
记录oplog,是用于删除创建和删除bucket时残余的bucket route,例如是针对创建bucket route成功,但创建对应的meta没有成功的情况,或者是,删除meta成功,但删除对应的bucket route没有成功的情况。通过后台线程扫描超过设定时间后依然存在的oplog,可以定期释放被不必要占用的bucket route,即回收被多占用的bucket route。oplog处理:
首先查看对应的bucket route是否存在,分为两种情况:bucket route不存在或者bucket route存在并且bucket route中的时间戳和oplog保存的时间戳不相同,直接删除oplog;bucket route存在并且时间戳和oplog中保存的时间戳相同,则去对应的从节点查询bucket meta是否存在:
如果从节点上bucket meta存在,删除oplog;如果从节点上bucket meta不存在,比较oplog中的时间戳是否和bucket route中的时间戳相同,如果相同,删除bucket route和oplog,如果不相同,只删除oplog。
本申请的资源的元数据维护方法一优选的实施例中,步骤S11、步骤S12创建或删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志之后,还包括:
步骤S13,扫描超过预设时间后依然存在的日志;
步骤S14,根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,从而确保主从节点资源最终一致。在此,所有日志(Oplog)只记录了创建和删除时的路由信息,即只记录的是所有路由信息中的增量内容,这里只扫描日志可以提高扫描速度,快速找到异常的路由信息。
如图4所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S14,根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
步骤S141,在主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,步骤S142,则删除该日志。在此,当bucket route不存在,没有必要去从节点做检查了,直接删除oplog就可以。
本申请的资源的元数据维护方法一优选的实施例中,步骤S141,在主节点查询相同资源名称的路由信息是否存在之后,还包括:
若存在,步骤S143,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,步骤S144,则删除该日志。在此,由于oplog保存的时间戳与bucketroute中的当前时间戳不相同,那么这条不同时间戳的oplog就没有必要保留了,因为会存在一条bucket route中的当前时间戳相同的oplog,只有相同时间戳的oplog才能用于检查删除对应相时时间戳的bucket route。
如图4所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S143,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,步骤S145,在对应的从节点上查询是否存在相同资源名称的资源属性,
若存在,步骤S146,则删除该日志。在此,如果从节点上bucket meta存在,说明对应的bucket route不是异常的bucket route,对应的oplog没有必要再保留,应该删除该oplog。
如图4所示,本申请的资源的元数据维护方法一优选的实施例中,在对应的从节点上查询是否存在相同资源名称的资源属性之后,还包括:
若不存在,步骤S147,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,步骤S148,则删除该日志和路由信息。在此,因为有可能在两次比较之间,bucket route的时间戳被修改的情况,所以这里需要再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,以保证准确删除日志和路由信息。当对应的从节点上不存在相同资源名称的资源属性,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳相同,说明bucket route是异常的bucketroute,将bucket route和oplog同时删除。
如图4所示,本申请的资源的元数据维护方法一优选的实施例中,步骤S147,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,步骤S149,则删除该日志。在此,由于oplog保存的时间戳与bucketroute中的时间戳不相同,那么这条不同时间戳的oplog就没有必要保留了,因为会存在一条bucket route中的时间戳相同的oplog,只有相同时间戳的oplog才能用于检查删除对应相时时间戳的bucket route,只有时间戳相同,才能保证不会误删除。
本申请的资源的元数据维护方法一优选的实施例中,步骤S1中,在从节点对资源属性进行维护,还包括:
当在从节点的创建或删除资源属性成功之后,将创建或删除资源的创建或删除资源的时间戳保存到从节点上所述资源属性中;
当从节点又接收到对同一资源的创建或删除的属性的请求时,判断当前请求的资源的创建或删除资源的时间戳是否大于从节点上保存的所述资源属性中的时间戳,
若是,在从节点上处理该请求;
若否,在从节点上忽略该请求。在此,本实施例是针对创建和删除bucket的并发处理要求,创建或者删除资源的请求会带着对应的当时创建或删除资源的时间戳去从节点做操作,用这个时间戳和从节点上的保存在属性中的时间戳做比较,只有请求的时间戳大于从节点上保存的时间戳时,才会处理这个请求,否则忽略该请求。请求处理完成后,把处理完的请求的时间戳更新保存到从节点的资源属性上。通过从节点上保存的bucket route的时间戳信息保证并发请求的顺序执行,主节点上后接收到的请求的时间戳为前一次记录的bucket route的时间戳加1后或当前时间戳的较大值,以保证后接收到请求的时间戳较大,例如,先接收到的请求的时间戳为10:00,则后接收的请求的时间戳为10:01,或为后接收的请求的时间戳为比10:00更大的值,另外,主节点的请求执行顺序按接收到的请求顺序来执行,例如,主节点在10:00收到一条创建bucket route的请求,主节点对应bucket route的时间戳为10:00,主节点在10:01收到一条删除该bucket的请求,主节点对应更新bucketroute的时间戳为10:01,若从节点先收到了10:01删除该bucket route的meta的请求,则由于删除创建请求的时间戳10:01大于从节点上保存的bucket route的时间戳,则执行删除meta操作,由于没找到对应的meta,返回删除成功,在从点上更新保存的所述资源bucketroute的时间戳为10:01,之后,从节点又收到了创建该10:00bucket route的meta的请求,由于创建删除请求的时间戳10:00小于对应从节点上更新保存的bucket route的时间戳10:01,如果在删除meta后再创建meta会出错,所以通过在从节点通过判断时间戳的大小,来确定创建或删除meta的请求是否被执行,忽略该小于更新保存的bucket route的时间戳10:01的请求,判断的规则是,若从节点上收到的请求的时间戳大于从节点上保存的bucketroute的时间戳时,执行该请求,若从节点上收到的请求的时间戳小于从节点上保存的bucket route的时间戳时,则不执行该请求。
另外,读写资源属性(bucket meta)时,更新和读取bucket meta只需要更新或读取对应从节点,如果可以直接发送到从节点的读写请求被误发到主节点,则主节点从bucket route表中得到bucket属于的从节点,然后直接将读写请求转发到对应的从节点进行处理。
根据本申请的另一面,还提供一种资源的元数据维护设备,该设备包括:
维护装置100,用于资源的路由信息在主节点进行维护,资源属性在所述资源属性的位置信息对应的从节点进行维护所述资源的路由信息包括资源名称和资源属性的位置信息,所述资源的元数据包括资源的路由信息和属性。具体的,从节点是按地理位置划分的区域/地域(region),每个地域的节点称为从节点,主节点(公共节点)是所有地域的公共节点,用于保存资源所属的地域,即资源所在的从节点,路由信息用于记录资源所属的地域,用于主节点查询对应的从节点,所述资源的路由信息(bucket route)包括资源名称(bucket)和资源属性(meta)所在的从节点。读写资源属性(bucket meta)只需要访问从节点,创建和删除资源的请求需要同时访问主节点和从节点。在此,通过把资源的元数据切分为主从节点,在主节点对资源的路由信息进行记录和维护,实现资源命名全局唯一,在从节点对资源属性进行维护,实现资源的元数据高可用,本申请适用于使用集群提供存储服务的分布式存储***中,实现在资源在多地域下,既要保证资源命名全局唯一,又要保证资源的元数据高可用。
本申请的资源的元数据维护设备一优选的实施例中,所述资源的路由信息还包括创建或删除资源的时间戳,便于后续根据时间戳删除异常的路由信息,进一步保证资源命名的全局唯一。
本申请的资源的元数据维护设备一优选的实施例中,所述维护装置100,包括:
创建维护装置1,用于在创建资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳;
删除维护装置2,用于在删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳。在此,对每一次创建和删除操作,都会在主节点更新创建或删除资源的时间戳(mtime)的同时,持久化一条对应相同时间戳的操作日志(oplog),用于后续根据日志检查删除残余的主节点上的在异常场景下生成的残余的路由信息,每一次持久化一条日志时,日志中的时间戳与此次创建或删除资源时更新的日志的时间戳保持一致。例如,如图1所示,路由信息的格式可设置为(bucket,region,mtime),对应的日志的格式可设置为(bucket,region,mtime)。
创建资源分为三步,创建资源的请求要发送到主节点上:
第一步:
为了保证资源命名全局唯一,查询请求创建的资源的路由信息是否存在,根据结果分为三种情况:第一种情况,路由信息(bucket route)存在,但路由信息中的区域/地域(region)和此次请求的区域/地域(region)不同,或者路由信息中用户(user)和此次请求的用户(user)不同;第二种情况,bucket route存在,并且bucket route中的region和此次请求的region相同,并且已经存在的bucket route中记录的用户与此次请求的用户为同一用户;第三种情况,bucket route不存在。对于第一种情况,直接返回失败,对于第二种情况,更新bucket route信息中的时间戳为最新,对于第三种情况,新增一个bucket route信息。更新和新增bucket route时需要同时持久化一条oplog,oplog中保存的时间戳和此次更新或新增的bucket route中时间戳相同。另外,新增或更新bucket route和持久化oplog需要在同一个事务内,从而保证新增或更新bucket route与同时持久化的oplog的原子性,即要么新增或更新与持久化都成功,要么都不成功。
第二步:
对于第二和第三种情况,需要向对应的从节点发起创建操作请求。
第三步:
对于第二和第三种情况,如果对应的从节点返回失败,返回用户失败。如果对应的从节点返回成功,返回用户成功,然后比较bucket route中时间戳和第一步中持久化的oplog里面的时间戳是否相同,如果相同,删除oplog。
本申请的资源的元数据维护设备一优选的实施例中,所述创建维护装置1,用于请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若不存在,在主节点创建所述资源的路由信息,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。在此,本实施例是针对上述创建资源的第三种情况,bucket route不存在,则新增一个bucketroute信息。若创建或删除资源的时间戳与相同资源名称的日志中的时间戳相同,说明主从节点均创建成功,该bucket route不是异常的bucket route,其对应的oplog不需要再保留,则应该将其对应的oplog删除。本实施例中,由于资源不存在,在主节点更新资源的创建或删除资源的时间戳为在主节点创建路信息中的时间戳,是一种特殊的时间戳更新。
本申请的资源的元数据维护设备一优选的实施例中,创建维护装置1,还用于请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在之后,
若存在,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同,
若不同,返回资源创建失败。在此,本实施例是针对上创建资源的第一种情况,路由信息(bucket route)存在,但路由信息中的区域/地域(region)和此次请求的区域/地域(region)不同,这种情况说明bucket route已经存在,如果已经存在的bucket route中的region为北京,而此次请求的region为上海,则说明bucket route已经被占用,不能再作为上海的bucket route,而这个已经存在bucket route可能是已经由北京从节点创建成功,正在使用的bucket route,也有可能是由北京从节点未创建成功,不在使用的bucketroute,后续需要将其删除后,才能供其它从节点创建使用的bucket route。
本申请的资源的元数据维护设备一优选的实施例中,所述资源的路由信息还包括用户。在此,所述资源的路由信息还包括资源所属的用户(user),即表示所述资源是由哪个用户请求创建的,便于后续审核创建请求是否由同一用户发起,进一步保证资源的全局唯一性。在此,路由信息的格式可设置为(bucket,region,mtime,user)。
本申请的资源的元数据维护设备一优选的实施例中,创建维护装置1,还用于判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,若相同,判断所述请求是否由同一用户发起,
若是,则在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。具体的,本实施例是针对上述创建资源中的第二种情况,bucket route存在,并且bucket route中的region和此次请求的region相同,并且已经存在的bucket route中记录的用户与此次请求的用户为同一用户,那么进行同一用户对同一资源进行重复创建的处理;另外,如果是不同用户,则与上述第一种情况的处理方法相同,直接返回创建失败。
和创建bucket相同,删除bucket请求需要发送到主节点上,基本包括如下三步:
第一步:
主节点判断bucket route是否存在,如果bucket route存在,更新bucket route的时间戳为最新时间,同时持久化一条oplog,oplog格式和创建bucket时相同;
第二步:
向对应的从节点发起删除bucket meta的请求;
第三步:
主节点收到从节点的处理结果后,如果请求失败,返回用户失败;如果请求成功,返回用户成功,然后删除bucket route和第一步持久化的oplog。
本申请的资源的元数据维护设备一优选的实施例中,所述删除维护装置2,用于请求删除资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若存在,在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据资源的路由信息在从节点删除所述资源属性,若所述资源属性删除失败,返回资源删除失败;若删除成功,返回资源删除成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。在此,资源删除成功后,由于bucket meta已经删除成功,对应的bucket route和oplog已经没有用了,所以将其删除,防止bucket meta删除后,对应的bucket route被不必要的继续占用。另外,为了判断bucketroute是否被更新过,如果没有更新过,则创建或删除资源的时间戳与相同资源名称的日志中的时间戳相同,删除bucket route和oplog,如果bucket route已经更新,创建或删除资源的时间戳与相同资源名称的日志中的时间戳不相同,则只删除oplog。
记录oplog,是用于删除创建和删除bucket时残余的bucket route,例如是针对创建bucket route成功,但创建对应的meta没有成功的情况,或者是,删除meta成功,但删除对应的bucket route没有成功的情况。通过后台线程扫描超过设定时间后依然存在的oplog,可以定期释放被不必要占用的bucket route,即回收被多占用的bucket route。oplog处理:
首先查看对应的bucket route是否存在,分为两种情况:bucket route不存在或者bucket route存在并且bucket route中的时间戳和oplog保存的时间戳不相同,直接删除oplog;bucket route存在并且时间戳和oplog中保存的时间戳相同,则去对应的从节点查询bucket meta是否存在:
如果从节点上bucket meta存在,删除oplog;如果从节点上bucket meta不存在,比较oplog中的时间戳是否和bucket route中的时间戳相同,如果相同,删除bucket route和oplog,如果不相同,只删除oplog。
如所示,本申请的资源的元数据维护设备一优选的实施例中,还包括所述扫描装置3,还用于创建或删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志之后,
扫描超过预设时间后依然存在的日志;
根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。在此,所有日志(Oplog)只记录了创建和删除时的路由信息,即只记录的是所有路由信息中的增量内容,这里只扫描日志可以提高扫描速度,快速找到异常的路由信息。
本申请的资源的元数据维护设备一优选的实施例中,所述扫描装置3,用于在主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则删除该日志。在此,当bucket route不存在,没有必要去从节点做检查了,直接删除oplog就可以。
本申请的资源的元数据维护设备一优选的实施例中,所述扫描装置3,还用于在主节点查询相同资源名称的路由信息是否存在之后,
若存在,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则删除该日志。在此,由于oplog保存的时间戳与bucket route中的当前时间戳不相同,那么这条不同时间戳的oplog就没有必要保留了,因为会存在一条bucketroute中的当前时间戳相同的oplog,只有相同时间戳的oplog才能用于检查删除对应相时时间戳的bucket route。
本申请的资源的元数据维护设备一优选的实施例中,所述扫描装置3,还用于判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,
若相同,在对应的从节点上查询是否存在相同资源名称的资源属性,
若存在,则删除该日志。在此,如果从节点上bucket meta存在,说明对应的bucketroute不是异常的bucket route,对应的oplog没有必要再保留,应该删除该oplog。
本申请的资源的元数据维护设备一优选的实施例中,所述扫描装置3,还用于在对应的从节点上查询是否存在相同资源名称的资源属性之后,
若不存在,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则删除该日志和路由信息。在此,因为有可能在两次比较之间,bucketroute的时间戳被修改的情况,所以这里需要再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,以保证准确删除日志和路由信息。当对应的从节点上不存在相同资源名称的资源属性,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳相同,说明bucket route是异常的bucket route,将bucket route和oplog同时删除。
本申请的资源的元数据维护设备一优选的实施例中,所述扫描装置3,还用于再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,
若不相同,则删除该日志。在此,由于oplog保存的时间戳与bucket route中的时间戳不相同,那么这条不同时间戳的oplog就没有必要保留了,因为会存在一条bucketroute中的时间戳相同的oplog,只有相同时间戳的oplog才能用于检查删除对应相时时间戳的bucket route,只有时间戳相同,才能保证不会误删除。
本申请的资源的元数据维护设备一优选的实施例中,所述维护装置100,还用于当在从节点的创建或删除资源属性成功之后,将创建或删除资源的创建或删除资源的时间戳保存到从节点上所述资源属性中;
当从节点又接收到对同一资源的创建或删除的属性的请求时,判断当前请求的资源的创建或删除资源的时间戳是否大于从节点上保存的所述资源属性中的时间戳,
若是,在从节点上处理该请求;
若否,在从节点上忽略该请求。在此,本实施例是针对创建和删除bucket的并发处理要求,创建或者删除资源的请求会带着对应的当时创建或删除资源的时间戳去从节点做操作,用这个时间戳和从节点上的保存在属性中的时间戳做比较,只有请求的时间戳大于从节点上保存的时间戳时,才会处理这个请求,否则忽略该请求。请求处理完成后,把处理完的请求的时间戳更新保存到从节点的资源属性上。通过从节点上保存的bucket route的时间戳信息保证并发请求的顺序执行,主节点上后接收到的请求的时间戳为前一次记录的bucket route的时间戳加1后或当前时间戳的较大值,以保证后接收到请求的时间戳较大,例如,先接收到的请求的时间戳为10:00,则后接收的请求的时间戳为10:01,或为后接收的请求的时间戳为比10:00更大的值,另外,主节点的请求执行顺序按接收到的请求顺序来执行,例如,主节点在10:00收到一条创建bucket route的请求,主节点对应bucket route的时间戳为10:00,主节点在10:01收到一条删除该bucket的请求,主节点对应更新bucketroute的时间戳为10:01,若从节点先收到了10:01删除该bucket route的meta的请求,则由于删除创建请求的时间戳10:01大于从节点上保存的bucket route的时间戳,则执行删除meta操作,由于没找到对应的meta,返回删除成功,在从点上更新保存的所述资源bucketroute的时间戳为10:01,之后,从节点又收到了创建该10:00bucket route的meta的请求,由于创建删除请求的时间戳10:00小于对应从节点上更新保存的bucket route的时间戳10:01,如果在删除meta后再创建meta会出错,所以通过在从节点通过判断时间戳的大小,来确定创建或删除meta的请求是否被执行,忽略该小于更新保存的bucket route的时间戳10:01的请求,判断的规则是,若从节点上收到的请求的时间戳大于从节点上保存的bucketroute的时间戳时,执行该请求,若从节点上收到的请求的时间戳小于从节点上保存的bucket route的时间戳时,则不执行该请求。
另外,读写资源属性(bucket meta)时,更新和读取bucket meta只需要更新或读取对应从节点,如果可以直接发送到从节点的读写请求被误发到主节点,则主节点从bucket route表中得到bucket属于的从节点,然后直接将读写请求转发到对应的从节点进行处理。
本申请一具体的应用实例中所述资源为一文件夹,所述文件的元数据包括所述文件夹的路由信息和文件夹属性,所述文件夹属性包括文件夹的最多文件数量、文件夹的创建时间、文件夹的权限管理规则等。具体来说,提供一种文件夹的元数据维护方法,所述文件夹的元数据包括文件夹的路由信息和文件夹属性,该方法包括:
主节点获取创建文件夹的路由信息的请求,查询文件夹的路由信息在主节点是否存在,所述文件夹的路由信息包括全局唯一的文件夹名称、文件夹属性的位置信息和创建或删除文件夹的时间戳;
若不存在,主节点创建所述文件夹的路由信息,并同时持久化一条日志后,根据所述文件夹名称和所述文件夹的位置信息向从节点发起创建所述文件夹属性的请求,所述日志包括与所述文件夹的路由信息相同的文件夹名称和时间戳;
从节点根据接收到的创建所述文件夹属性的请求创建所述文件夹属性,若所述文件夹属性创建失败,向主节点返回文件夹创建失败。
进一步的,上述方法中,从节点根据接收到的创建所述文件夹属性的请求创建所述文件夹属性之后,还包括:
若创建成功,向主节点返回文件夹创建成功的反馈;
主节点根据所述文件夹创建成功的反馈,将所述文件夹的路由信息中的所述创建或删除文件夹的时间戳与相同文件夹名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,主节点查询所述文件夹的路由信息在主节点是否存在之后,还包括:
若存在,所述主节点判断所述文件夹的路由信息中的文件夹属性的位置信息,是否与请求创建的文件夹属性的位置信息不同,
若不同,所述主节点向所述从节点返回文件夹创建失败。
进一步的,上述方法中,所述文件夹的路由信息还包括用户,
主节点判断所述文件夹的路由信息中的文件夹属性的位置信息,是否与请求创建文件夹属性的位置信息不同之后,还包括:
若相同,主节点判断所述创建文件夹属性的请求是否由同一用户发起,
若是,则主节点更新所述创建或删除文件夹的时间戳,并同时持久化一条日志后,根据所述文件夹名称和所述文件夹的位置信息向从节点发起创建文件夹属性的请求;
从节点根据所述创建文件夹属性的请求创建所述文件夹属性,若所述文件夹属性创建失败,向所述主节点返回文件夹创建失败。
进一步的,上述方法中,从节点根据所述创建文件夹属性的请求创建所述文件夹属性之后,还包括:
若创建成功,向所述主节点返回文件夹创建成功后,所述主节点将所述创建或删除文件夹的时间戳与相同文件夹名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,若相同,则删除该条日志之后,包括:
所述主节点扫描超过预设时间后依然存在的日志;
所述主节点根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息。
进一步的,上述方法中,所述主节点根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息,包括:
主节点查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在,
若不存在,则主节点删除该日志。
进一步的,上述方法中,主节点查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在之后,还包括:
若存在,所述主节点判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同,
若不相同,则所述主节点删除该日志。
进一步的,上述方法中,所述主节点判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,还包括:
若相同,主节点根据文件夹属性的位置信息向对应的从节点发起查询是否存在相同文件夹名称的文件夹属性的请求,从节点根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询,
若存在,则所述从节点向所述主节点发送文件夹属性存在的反馈,所述主节点根据所述文件夹属性存在的反馈删除该日志。
进一步的,上述方法中,从节点根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询之后,还包括:
若不存在,所述从节点向所述主节点发送文件夹属性不存在的反馈,所述主节点根据所述文件夹属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同;
若相同,则所述主节点删除该日志和路由信息。
进一步的,上述方法中,所述主节点再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,还包括:
若不相同,则所述主节点删除该日志。
本申请另一具体的应用场景中,还提供一种文件夹的元数据维护方法,所述文件夹的元数据包括文件夹的路由信息和文件夹属性,该方法包括:
主节点获取删除文件夹的路由信息的请求,根据所述删除文件夹的路由信息的请求查询所述文件夹的路由信息是否存在,所述文件夹的路由信息包括全局唯一的文件夹名称、文件夹属性的位置信息和创建或删除文件夹的时间戳,
若存在,主节点更新所述创建或删除文件夹的时间戳,并同时持久化一条日志后,向从节点发起删除文件夹属性的请求;
所述从节点根据接收到的所述删除文件夹属性的请求删除所述文件夹属性,若所述文件夹属性删除失败,向所述主节点返回文件夹删除失败。
进一步的,上述方法中,所述从节点根据接收到的所述删除文件夹属性的请求删除所述文件夹属性之后,还包括:
若删除成功,向所述主节点返回文件夹删除成功,并将所述创建或删除文件夹的时间戳与相同文件夹名称的日志中的时间戳进行比较,若相同,则删除该条日志。
进一步的,上述方法中,若相同,则删除该条日志之后,包括:
所述主节点扫描超过预设时间后依然存在的日志;
所述主节点根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息。
进一步的,上述方法中,所述主节点根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息,包括:
主节点查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在,
若不存在,则主节点删除该日志。
进一步的,上述方法中,主节点查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在之后,还包括:
若存在,所述主节点判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同,
若不相同,则所述主节点删除该日志。
进一步的,上述方法中,所述主节点判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,还包括:
若相同,主节点根据文件夹属性的位置信息向对应的从节点发起查询是否存在相同文件夹名称的文件夹属性的请求,从节点根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询,
若存在,则所述从节点向所述主节点发送文件夹属性存在的反馈,所述主节点根据所述文件夹属性存在的反馈删除该日志。
进一步的,上述方法中,从节点根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询之后,还包括:
若不存在,所述从节点向所述主节点发送文件夹属性不存在的反馈,所述主节点根据所述文件夹属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同;
若相同,则所述主节点删除该日志和路由信息。
进一步的,上述方法中,所述主节点再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,还包括:
若不相同,则所述主节点删除该日志。
本申请另一具体的应用场景中,还提供一种文件夹的元数据维护设备,其中,所述文件夹的元数据包括文件夹的路由信息和文件夹属性,该设备包括:
主节点,用于获取创建文件夹的路由信息的请求,查询文件夹的路由信息在主节点是否存在,所述文件夹的路由信息包括全局唯一的文件夹名称、文件夹属性的位置信息和创建或删除文件夹的时间戳;若不存在,创建所述文件夹的路由信息,并同时持久化一条日志后,根据所述文件夹名称和所述文件夹的位置信息向从节点发起创建所述文件夹属性的请求,所述日志包括与所述文件夹的路由信息相同的文件夹名称和时间戳;
从节点,用于根据接收到的创建所述文件夹属性的请求创建所述文件夹属性,若所述文件夹属性创建失败,向主节点返回文件夹创建失败。
优选的,上述设备中,所述从节点,还用于在根据接收到的创建所述文件夹属性的请求创建所述文件夹属性之后,若创建成功,向主节点返回文件夹创建成功的反馈;
所述主节点,还用于根据所述文件夹创建成功的反馈,将所述文件夹的路由信息中的所述创建或删除文件夹的时间戳与相同文件夹名称的日志中的时间戳进行比较,若相同,则删除该条日志。
优选的,上述设备中,所述主节点,还用于在查询所述文件夹的路由信息在主节点是否存在之后,若存在,所述主节点判断所述文件夹的路由信息中的文件夹属性的位置信息,是否与请求创建的文件夹属性的位置信息不同,若不同,向所述从节点返回文件夹创建失败。
优选的,上述设备中,所述文件夹的路由信息还包括用户,
所述主节点,还用于判断所述文件夹的路由信息中的文件夹属性的位置信息,是否与请求创建文件夹属性的位置信息不同之后,若相同,判断所述创建文件夹属性的请求是否由同一用户发起,若是,则更新所述创建或删除文件夹的时间戳,并同时持久化一条日志后,根据所述文件夹名称和所述文件夹的位置信息向从节点发起创建文件夹属性的请求;
所述从节点,还用于根据所述创建文件夹属性的请求创建所述文件夹属性,若所述文件夹属性创建失败,向所述主节点返回文件夹创建失败。
优选的,上述设备中,所述从节点,还用于在根据所述创建文件夹属性的请求创建所述文件夹属性之后,若创建成功,向所述主节点返回文件夹创建成功后,
所述主节点,还用于将所述创建或删除文件夹的时间戳与相同文件夹名称的日志中的时间戳进行比较,若相同,则删除该条日志。
优选的,上述设备中,所述主节点还用于在若相同,则删除该条日志之后,扫描超过预设时间后依然存在的日志;根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息。
优选的,上述设备中,所述主节点,还用于查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在,若不存在,则主节点删除该日志。
优选的,上述设备中,所述主节点,还用于在查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在之后,判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同,若不相同,则删除该日志。
优选的,上述设备中,所述主节点,还用于在判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,若相同,根据文件夹属性的位置信息向对应的从节点发起查询是否存在相同文件夹名称的文件夹属性的请求;
所述从节点,还用于根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询,若存在,则向所述主节点发送文件夹属性存在的反馈;
所述主节点,还用于根据所述文件夹属性存在的反馈删除该日志。
优选的,上述设备中,所述从节点还用于在根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询之后,若不存在,向所述主节点发送文件夹属性不存在的反馈;
所述主节点,还用于根据所述文件夹属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同;若相同,则删除该日志和路由信息。
优选的,上述设备中,所述主节点,还用于在再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,若不相同,则删除该日志。
本申请另一具体的应用场景中,还提供一种文件夹的元数据维护设备,所述文件夹的元数据包括文件夹的路由信息和文件夹属性,该设备包括:
主节点,用于获取删除文件夹的路由信息的请求,根据所述删除文件夹的路由信息的请求查询所述文件夹的路由信息是否存在,所述文件夹的路由信息包括全局唯一的文件夹名称、文件夹属性的位置信息和创建或删除文件夹的时间戳,若存在,更新所述创建或删除文件夹的时间戳,并同时持久化一条日志后,向从节点发起删除文件夹属性的请求;
所述从节点,用于根据接收到的所述删除文件夹属性的请求删除所述文件夹属性,若所述文件夹属性删除失败,向所述主节点返回文件夹删除失败。
优选的,上述设备中,所述从节点,还用于在根据接收到的所述删除文件夹属性的请求删除所述文件夹属性之后,若删除成功,向所述主节点返回文件夹删除成功,并将所述创建或删除文件夹的时间戳与相同文件夹名称的日志中的时间戳进行比较,若相同,则删除该条日志。
优选的,上述设备中,所述主节点,还用于在若相同,则删除该条日志之后,扫描超过预设时间后依然存在的日志;根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息。
优选的,上述设备中,所述主节点,还用于在根据扫描到的日志,删除所述创建和删除文件夹时残余的路由信息,查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在,若不存在,则删除该日志。
优选的,上述设备中,主节点,还用于在查询与所述扫描到的日志具有相同文件夹名称的路由信息是否存在之后,若存在,所述主节点判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同,若不相同,则删除该日志。
优选的,上述设备中,所述主节点,还用于在判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,若相同,根据文件夹属性的位置信息向对应的从节点发起查询是否存在相同文件夹名称的文件夹属性的请求;
所述从节点,还用于根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询,若存在,则所述从节点向所述主节点发送文件夹属性存在的反馈;
所述主节点,还用于根据所述文件夹属性存在的反馈删除该日志。
优选的,上述设备中,所述从节点,还用于在根据所述查询是否存在相同文件夹名称的文件夹属性的请求进行查询之后,若不存在,向所述主节点发送文件夹属性不存在的反馈;
所述主节点,还用于根据所述文件夹属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同;若相同,则删除该日志和路由信息。
优选的,上述设备中,所述主节点,还用于在再次判断所述日志的时间戳与查询到的相同文件夹名称的创建或删除文件夹的时间戳是否相同之后,若不相同,则删除该日志。
本申请另一具体的应用场景中,还提供一种文件夹的元数据存储装置,所述文件夹的元数据包括文件夹的路由信息和文件夹属性,其中,所述装置包括:
主节点,用于存储所述文件夹的路由信息,所述文件夹的路由信息包括全局唯一的文件夹名称和文件夹属性的位置信息;从节点,用于存储所述文件夹属性。
优选的,上述装置中,所述文件夹的路由信息还包括创建或删除文件夹的时间戳。
优选的,上述装置中,所述主节点还包括日志,所述日志包括与所述文件夹的路由信息相同的文件夹名称和时间戳。
综上所述,通过把资源的元数据切分为主从节点,在主节点对资源的路由信息进行记录和维护,实现资源命名全局唯一,在从节点对资源属性进行维护,实现资源的元数据高可用,本申请适用于使用集群提供存储服务的分布式存储***中,实现在资源在多地域下,既要保证资源命名全局唯一,又要保证资源的元数据高可用。另外,通过创建或删除资源时,在主节点更新资源的创建或删除资源的时间戳(mtime),同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,能够根据日志检查删除残余的主节点上的在异常场景下生成的残余的路由信息。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (69)
1.一种资源的元数据维护方法,其中,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
资源的路由信息在主节点进行维护,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳;
资源属性在所述资源属性的位置信息对应的从节点进行维护;
在创建或删除资源时,主节点更新创建或删除资源的时间戳,并持久化一条对应相同时间戳的操作日志,所述操作日志用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息。
2.根据权利要求1所述的方法,其中,资源的路由信息在主节点进行维护,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护。
3.根据权利要求2所述的方法,其中,根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
创建或删除资源时,在主节点更新所述创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
根据创建或删除资源的时间戳与所述日志,在主节点删除所述创建和删除资源时残余的路由信息。
4.根据权利要求3所述的方法,其中,创建资源时,在主节点更新所述创建或删除资源的时间戳,同时持久化一条日志,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若不存在,在主节点创建所述资源的路由信息,并同时持久化一条日志,所述资源的路由信息包括所述资源名称、所述资源属性的位置信息和所述创建或删除资源的时间戳;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
5.根据权利要求4所述的方法,其中,请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在之后,还包括:
若存在,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建的资源属性的位置信息不同,
若不同,返回资源创建失败。
6.根据权利要求5所述的方法,其中,所述资源的路由信息还包括用户,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,还包括:
若相同,判断所述请求是否由同一用户发起,
若是,则在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
7.根据权利要求3所述的方法,其中,删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,资源属性在所述资源属性的位置信息对应的从节点进行维护,包括:
请求删除资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若存在,在主节点更新所述资源的路由信息中的所述创建或删除资源的时间戳,并同时持久化一条日志;
根据资源的路由信息在从节点删除所述资源属性,若所述资源属性删除失败,返回资源删除失败;若删除成功,返回资源删除成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
8.根据权利要求3所述的方法,其中,根据创建或删除资源的时间戳与所述日志,在主节点删除所述创建和删除资源时残余的路由信息,包括:
扫描超过预设时间后依然存在的日志;
根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
9.根据权利要求8所述的方法,其中,根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
在主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则删除该日志。
10.根据权利要求9所述的方法,其中,在主节点查询相同资源名称的路由信息是否存在之后,还包括:
若存在,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则删除该日志。
11.根据权利要求10所述的方法,其中,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,在对应的从节点上查询是否存在相同资源名称的资源属性,
若存在,则删除该日志。
12.根据权利要求11所述的方法,其中,在对应的从节点上查询是否存在相同资源名称的资源属性之后,还包括:
若不存在,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则删除该日志和路由信息。
13.根据权利要求12所述的方法,其中,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,则删除该日志。
14.根据权利要求1至13任一项所述的方法,其中,在从节点对资源属性进行维护,还包括:
当在从节点的创建或删除资源属性成功之后,将创建或删除资源的创建或删除资源的时间戳保存到从节点上所述资源属性中;
当从节点又接收到对同一资源的创建或删除的属性的请求时,判断当前请求的资源的创建或删除资源的时间戳是否大于从节点上保存的所述资源属性中的时间戳,
若是,在从节点上处理该请求;
若否,在从节点上忽略该请求。
15.一种资源的元数据维护方法,其中,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
主节点获取创建资源的路由信息的请求,查询资源的路由信息在主节点是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳;
若不存在,主节点创建所述资源的路由信息,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建所述资源属性的请求,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息;
从节点根据接收到的创建所述资源属性的请求创建所述资源属性,若所述资源属性创建失败,向主节点返回资源创建失败。
16.如权利要求15所述的方法,其中,从节点根据接收到的创建所述资源属性的请求创建所述资源属性之后,还包括:
若创建成功,向主节点返回资源创建成功的反馈;
主节点根据所述资源创建成功的反馈,将所述资源的路由信息中的所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
17.如权利要求15所述的方法,其中,主节点查询所述资源的路由信息在主节点是否存在之后,还包括:
若存在,所述主节点判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建的资源属性的位置信息不同,
若不同,所述主节点向所述从节点返回资源创建失败。
18.如权利要求17所述的方法,其中,所述资源的路由信息还包括用户,
主节点判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,还包括:
若相同,主节点判断所述创建资源属性的请求是否由同一用户发起,
若是,则主节点更新所述创建或删除资源的时间戳,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建资源属性的请求;
从节点根据所述创建资源属性的请求创建所述资源属性,若所述资源属性创建失败,向所述主节点返回资源创建失败。
19.根据权利要求18所述的方法,其中,从节点根据所述创建资源属性的请求创建所述资源属性之后,还包括:
若创建成功,向所述主节点返回资源创建成功后,所述主节点将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
20.根据权利要求19所述的方法,其中,若相同,则删除该条日志之后,包括:
所述主节点扫描超过预设时间后依然存在的日志;
所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
21.根据权利要求20所述的方法,其中,所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则主节点删除该日志。
22.根据权利要求21所述的方法,其中,主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,还包括:
若存在,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则所述主节点删除该日志。
23.根据权利要求22所述的方法,其中,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,主节点根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询,
若存在,则所述从节点向所述主节点发送资源属性存在的反馈,所述主节点根据所述资源属性存在的反馈删除该日志。
24.根据权利要求23所述的方法,其中,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,还包括:
若不存在,所述从节点向所述主节点发送资源属性不存在的反馈,所述主节点根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则所述主节点删除该日志和路由信息。
25.根据权利要求24所述的方法,其中,所述主节点再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,则所述主节点删除该日志。
26.一种资源的元数据维护方法,其中,所述资源的元数据包括资源的路由信息和资源属性,该方法包括:
主节点获取删除资源的路由信息的请求,根据所述删除资源的路由信息的请求查询所述资源的路由信息是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳,
若存在,主节点更新所述创建或删除资源的时间戳,并同时持久化一条日志后,向从节点发起删除资源属性的请求,操作日志用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息;
所述从节点根据接收到的所述删除资源属性的请求删除所述资源属性,若所述资源属性删除失败,向所述主节点返回资源删除失败。
27.根据权利要求26所述的方法,其中,所述从节点根据接收到的所述删除资源属性的请求删除所述资源属性之后,还包括:
若删除成功,向所述主节点返回资源删除成功,并将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
28.根据权利要求27所述的方法,其中,若相同,则删除该条日志之后,包括:
所述主节点扫描超过预设时间后依然存在的日志;
所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
29.根据权利要求28所述的方法,其中,所述主节点根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,包括:
主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则主节点删除该日志。
30.根据权利要求29所述的方法,其中,主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,还包括:
若存在,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则所述主节点删除该日志。
31.根据权利要求30所述的方法,其中,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若相同,主节点根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询,
若存在,则所述从节点向所述主节点发送资源属性存在的反馈,所述主节点根据所述资源属性存在的反馈删除该日志。
32.根据权利要求31所述的方法,其中,从节点根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,还包括:
若不存在,所述从节点向所述主节点发送资源属性不存在的反馈,所述主节点根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则所述主节点删除该日志和路由信息。
33.根据权利要求32所述的方法,其中,所述主节点再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,还包括:
若不相同,则所述主节点删除该日志。
34.一种资源的元数据维护设备,其中,所述资源的元数据包括资源的路由信息和资源属性,该设备包括:
维护装置,用于将资源的路由信息在主节点进行维护,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳;将资源属性在所述资源属性的位置信息对应的从节点进行维护;在创建或删除资源时,主节点更新创建或删除资源的时间戳,并持久化一条对应相同时间戳的操作日志,所述操作日志用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息。
35.根据权利要求34所述的设备,其中,所述维护装置,用于根据所述创建或删除资源的时间戳,在主节点删除创建和删除资源时残余的路由信息,资源属性在所述资源属性的位置信息对应的从节点进行维护。
36.根据权利要求35所述的设备,其中,所述维护装置,包括:
创建维护装置,用于在创建资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
删除维护装置,用于在删除资源时,在主节点更新资源的创建或删除资源的时间戳,同时持久化一条日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,资源属性在所述资源属性的位置信息对应的从节点进行维护;
扫描装置,用于根据创建或删除资源的时间戳与所述日志,在主节点删除所述创建和删除资源时残余的路由信息。
37.根据权利要求36所述的设备,其中,所述创建维护装置,用于请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若不存在,在主节点创建所述资源的路由信息,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
38.根据权利要求36所述的设备,其中,创建维护装置,还用于请求创建资源的路由信息时,在主节点查询所述资源的路由信息是否存在之后,
若存在,判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同,
若不同,返回资源创建失败。
39.根据权利要求38所述的设备,其中,所述资源的路由信息还包括用户,所述创建维护装置,还用于在判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,若相同,判断所述请求是否由同一用户发起,
若是,则在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据所述资源名称和所述资源的位置信息在从节点创建所述资源属性,若所述资源属性创建失败,返回资源创建失败;若创建成功,返回资源创建成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
40.根据权利要求36所述的设备,其中,所述删除维护装置,用于请求删除资源的路由信息时,在主节点查询所述资源的路由信息是否存在,
若存在,在主节点更新所述资源的创建或删除资源的时间戳,并同时持久化一条日志;
根据资源的路由信息在从节点删除所述资源属性,若所述资源属性删除失败,返回资源删除失败;若删除成功,返回资源删除成功,并将创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
41.根据权利要求36所述的设备,其中,所述扫描装置,用于
扫描超过预设时间后依然存在的日志;
根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
42.根据权利要求41所述的设备,其中,所述扫描装置,用于在主节点查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,
若不存在,则删除该日志。
43.根据权利要求42所述的设备,其中,所述扫描装置,还用于在主节点查询相同资源名称的路由信息是否存在之后,
若存在,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,
若不相同,则删除该日志。
44.根据权利要求43所述的设备,其中,所述扫描装置,还用于判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,
若相同,在对应的从节点上查询是否存在相同资源名称的资源属性,若存在,则删除该日志。
45.根据权利要求44所述的设备,其中,所述扫描装置,还用于在对应的从节点上查询是否存在相同资源名称的资源属性之后,
若不存在,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;
若相同,则删除该日志和路由信息。
46.根据权利要求45所述的设备,其中,所述扫描装置,还用于再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,
若不相同,则删除该日志。
47.根据权利要求34至46任一项所述的设备,其中,所述维护装置,还用于当在从节点的创建或删除资源属性成功之后,将创建或删除资源的创建或删除资源的时间戳保存到从节点上所述资源属性中;
当从节点又接收到对同一资源的创建或删除的属性的请求时,判断当前请求的资源的创建或删除资源的时间戳是否大于从节点上保存的所述资源属性中的时间戳,
若是,在从节点上处理该请求;
若否,在从节点上忽略该请求。
48.一种资源的元数据维护设备,其中,所述资源的元数据包括资源的路由信息和资源属性,该设备包括:
主节点,用于获取创建资源的路由信息的请求,查询资源的路由信息在主节点是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳;若不存在,创建所述资源的路由信息,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建所述资源属性的请求,所述日志包括与所述资源的路由信息相同的资源名称和时间戳,用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息;
从节点,用于根据接收到的创建所述资源属性的请求创建所述资源属性,若所述资源属性创建失败,向主节点返回资源创建失败。
49.如权利要求48所述的设备,其中,所述从节点,还用于在根据接收到的创建所述资源属性的请求创建所述资源属性之后,若创建成功,向主节点返回资源创建成功的反馈;
所述主节点,还用于根据所述资源创建成功的反馈,将所述资源的路由信息中的所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
50.如权利要求49所述的设备,其中,所述主节点,还用于在查询所述资源的路由信息在主节点是否存在之后,若存在,所述主节点判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建的资源属性的位置信息不同,若不同,向所述从节点返回资源创建失败。
51.如权利要求50所述的设备,其中,所述资源的路由信息还包括用户,
所述主节点,还用于判断所述资源的路由信息中的资源属性的位置信息,是否与请求创建资源属性的位置信息不同之后,若相同,判断所述创建资源属性的请求是否由同一用户发起,若是,则更新所述创建或删除资源的时间戳,并同时持久化一条日志后,根据所述资源名称和所述资源的位置信息向从节点发起创建资源属性的请求;
所述从节点,还用于根据所述创建资源属性的请求创建所述资源属性,若所述资源属性创建失败,向所述主节点返回资源创建失败。
52.根据权利要求51所述的设备,其中,所述从节点,还用于在根据所述创建资源属性的请求创建所述资源属性之后,若创建成功,向所述主节点返回资源创建成功后,
所述主节点,还用于将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
53.根据权利要求52所述的设备,其中,所述主节点还用于在若相同,则删除该条日志之后,扫描超过预设时间后依然存在的日志;根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
54.根据权利要求53所述的设备,其中,所述主节点,还用于查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,若不存在,则主节点删除该日志。
55.根据权利要求54所述的设备,其中,所述主节点,还用于在查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,若不相同,则删除该日志。
56.根据权利要求55所述的设备,其中,所述主节点,还用于在判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若相同,根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求;
所述从节点,还用于根据所述查询是否存在相同资源名称的资源属性的请求进行查询,若存在,则向所述主节点发送资源属性存在的反馈;
所述主节点,还用于根据所述资源属性存在的反馈删除该日志。
57.根据权利要求56所述的设备,其中,所述从节点还用于在根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,若不存在,向所述主节点发送资源属性不存在的反馈;
所述主节点,还用于根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;若相同,则删除该日志和路由信息。
58.根据权利要求57所述的设备,其中,所述主节点,还用于在再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若不相同,则删除该日志。
59.一种资源的元数据维护设备,其中,所述资源的元数据包括资源的路由信息和资源属性,该设备包括:
主节点,用于获取删除资源的路由信息的请求,根据所述删除资源的路由信息的请求查询所述资源的路由信息是否存在,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳,若存在,更新所述创建或删除资源的时间戳,并同时持久化一条日志后,向从节点发起删除资源属性的请求,操作日志用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息;
所述从节点,用于根据接收到的所述删除资源属性的请求删除所述资源属性,若所述资源属性删除失败,向所述主节点返回资源删除失败。
60.根据权利要求59所述的设备,其中,所述从节点,还用于在根据接收到的所述删除资源属性的请求删除所述资源属性之后,若删除成功,向所述主节点返回资源删除成功,并将所述创建或删除资源的时间戳与相同资源名称的日志中的时间戳进行比较,若相同,则删除该条日志。
61.根据权利要求60所述的设备,其中,所述主节点,还用于在若相同,则删除该条日志之后,扫描超过预设时间后依然存在的日志;根据扫描到的日志,删除所述创建和删除资源时残余的路由信息。
62.根据权利要求61所述的设备,其中,所述主节点,还用于在根据扫描到的日志,删除所述创建和删除资源时残余的路由信息,查询与所述扫描到的日志具有相同资源名称的路由信息是否存在,若不存在,则删除该日志。
63.根据权利要求62所述的设备,其中,主节点,还用于在查询与所述扫描到的日志具有相同资源名称的路由信息是否存在之后,若存在,所述主节点判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同,若不相同,则删除该日志。
64.根据权利要求63所述的设备,其中,所述主节点,还用于在判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若相同,根据资源属性的位置信息向对应的从节点发起查询是否存在相同资源名称的资源属性的请求;
所述从节点,还用于根据所述查询是否存在相同资源名称的资源属性的请求进行查询,若存在,则所述从节点向所述主节点发送资源属性存在的反馈;
所述主节点,还用于根据所述资源属性存在的反馈删除该日志。
65.根据权利要求64所述的设备,其中,所述从节点,还用于在根据所述查询是否存在相同资源名称的资源属性的请求进行查询之后,若不存在,向所述主节点发送资源属性不存在的反馈;
所述主节点,还用于根据所述资源属性不存在的反馈,再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同;若相同,则删除该日志和路由信息。
66.根据权利要求65所述的设备,其中,所述主节点,还用于在再次判断所述日志的时间戳与查询到的相同资源名称的创建或删除资源的时间戳是否相同之后,若不相同,则删除该日志。
67.一种资源的元数据存储装置,所述资源的元数据包括资源的路由信息和资源属性,其中,所述装置包括:
主节点,用于存储所述资源的路由信息,所述资源的路由信息包括全局唯一的资源名称、资源属性的位置信息和创建或删除资源的时间戳,在创建或删除资源时,主节点更新创建或删除资源的时间戳,并持久化一条对应相同时间戳的操作日志,所述操作日志用于检查删除残余的主节点上的在异常场景下生成的残余的路由信息;从节点,用于存储所述资源属性。
68.如权利要求67所述的存储装置,其中,所述资源的路由信息还包括创建或删除资源的时间戳。
69.如权利要求68所述的存储装置,其中,所述主节点还包括日志,所述日志包括与所述资源的路由信息相同的资源名称和时间戳。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610642192.5A CN107704462B (zh) | 2016-08-08 | 2016-08-08 | 资源的元数据维护方法、设备及存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610642192.5A CN107704462B (zh) | 2016-08-08 | 2016-08-08 | 资源的元数据维护方法、设备及存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107704462A CN107704462A (zh) | 2018-02-16 |
CN107704462B true CN107704462B (zh) | 2021-07-06 |
Family
ID=61169170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610642192.5A Active CN107704462B (zh) | 2016-08-08 | 2016-08-08 | 资源的元数据维护方法、设备及存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107704462B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400255B (zh) * | 2019-09-26 | 2023-04-28 | 杭州海康威视***技术有限公司 | 数据清理方法、装置及设备、存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187930A (zh) * | 2007-12-04 | 2008-05-28 | 浙江大学 | 分布式文件***虚拟目录及命名空间的实现方法 |
CN102929789A (zh) * | 2012-09-21 | 2013-02-13 | 曙光信息产业(北京)有限公司 | 记录组织方法和记录组织结构 |
CN102937964A (zh) * | 2012-09-28 | 2013-02-20 | 无锡江南计算技术研究所 | 基于分布式***的智能数据服务方法 |
CN103246716A (zh) * | 2013-04-26 | 2013-08-14 | 中国传媒大学 | 基于对象集群文件***的对象副本高效管理方法及*** |
CN103310000A (zh) * | 2013-06-25 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 元数据管理方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730012B2 (en) * | 2004-06-25 | 2010-06-01 | Apple Inc. | Methods and systems for managing data |
CN100337218C (zh) * | 2005-02-23 | 2007-09-12 | 北京邦诺存储科技有限公司 | 网络存储***中的数据管理方法及其构建的网络存储*** |
CN102546749B (zh) * | 2010-12-08 | 2015-07-29 | 中国电信股份有限公司 | 用于接入移动ip网的方法以及ip承载网 |
US9842128B2 (en) * | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
US9986029B2 (en) * | 2014-03-19 | 2018-05-29 | Red Hat, Inc. | File replication using file content location identifiers |
CN103986655A (zh) * | 2014-05-20 | 2014-08-13 | 东南大学 | 一种网络路由服务构造方法 |
CN104281506B (zh) * | 2014-07-10 | 2017-02-15 | 中国科学院计算技术研究所 | 一种文件***的数据维护方法及*** |
CN105718217B (zh) * | 2016-01-18 | 2018-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种精简配置存储池数据一致性维护的方法及装置 |
-
2016
- 2016-08-08 CN CN201610642192.5A patent/CN107704462B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187930A (zh) * | 2007-12-04 | 2008-05-28 | 浙江大学 | 分布式文件***虚拟目录及命名空间的实现方法 |
CN102929789A (zh) * | 2012-09-21 | 2013-02-13 | 曙光信息产业(北京)有限公司 | 记录组织方法和记录组织结构 |
CN102937964A (zh) * | 2012-09-28 | 2013-02-20 | 无锡江南计算技术研究所 | 基于分布式***的智能数据服务方法 |
CN103246716A (zh) * | 2013-04-26 | 2013-08-14 | 中国传媒大学 | 基于对象集群文件***的对象副本高效管理方法及*** |
CN103310000A (zh) * | 2013-06-25 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 元数据管理方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
Non-Patent Citations (3)
Title |
---|
【Hadoop】HDFS笔记(二):HDFS的HA机制和Federation机制;DianaCody;《https://blog.csdn.net/DianaCody/article/details/39480971?utm_source=blogxgwz7&utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242》;20140922;全文 * |
分布式文件***元数据服务器高可用性设计;战科宇 等;《小型微型计算机***》;20130415(第2013年04期);第801-805页 * |
大数据场景下的云存储技术与应用;陈杰;《中兴通讯技术》;20121210(第2012年第6期);第47-51页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107704462A (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108093094B (zh) | 数据库实例访问方法、装置、***、存储介质和设备 | |
CN106982236B (zh) | 一种信息处理方法、装置和*** | |
US8069224B2 (en) | Method, equipment and system for resource acquisition | |
WO2017167171A1 (zh) | 一种数据操作方法,服务器及存储*** | |
US20130073691A1 (en) | File Processing Method, System and Server-clustered System for Cloud Storage | |
US20160364407A1 (en) | Method and Device for Responding to Request, and Distributed File System | |
CN107562757B (zh) | 基于分布式文件***的查询、访问方法、装置及*** | |
EP3862883B1 (en) | Data backup method and apparatus, and system | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
US20170060941A1 (en) | Systems and Methods for Searching Heterogeneous Indexes of Metadata and Tags in File Systems | |
US20070143286A1 (en) | File management method in file system and metadata server therefor | |
CN107153644B (zh) | 一种数据同步方法及装置 | |
EP2710477B1 (en) | Distributed caching and cache analysis | |
CN109600410B (zh) | 数据存储***以及方法 | |
US10069941B2 (en) | Scalable event-based notifications | |
CN104020961A (zh) | 分布式数据存储方法、装置及*** | |
GB2520361A (en) | Method and system for a safe archiving of data | |
EP3786802A1 (en) | Method and device for failover in hbase system | |
CN111327651A (zh) | 资源下载方法、装置、边缘节点及存储介质 | |
WO2015192213A1 (en) | System and method for retrieving data | |
US20180276267A1 (en) | Methods and system for efficiently performing eventual and transactional edits on distributed metadata in an object storage system | |
US20160012070A1 (en) | Methods for managing a request to list previous versions of an object and devices thereof | |
CN107493309B (zh) | 一种分布式***中的文件写入方法及装置 | |
CN109254958B (zh) | 分布式数据读写方法、设备及*** | |
CN107704462B (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 |