H04L29/06 H04L12/56 G06F21/00
1、一种元数据的修改方法,其特征在于,包括:
将多个客户端发送的修改同一元数据的写锁申请缓冲至循环申请队 列;
将所述多个客户端发送的修改同一元数据的修改数据缓冲至循环操 作队列;
从所述循环操作队列中获取与所述循环申请队列中的最后申请的写 锁申请对应的修改数据;
根据所述修改数据对所述元数据进行修改。
2、根据权利要求1所述的方法,其特征在于,所述将多个客户端发送 的修改同一元数据的写锁申请缓冲至循环申请队列的步骤包括:
根据接收的顺序将所述多个客户端发送的修改同一元数据的写锁申请 缓冲至所述循环申请队列。
3、根据权利要求2所述的方法,其特征在于,所述将多个客户端发送 的修改同一元数据的写锁申请缓冲至循环申请队列之后的步骤包括:
返回所述写锁申请对应的授权锁的消息至所述多个客户端,以使所述多 个客户端发送修改同一元数据的修改数据。
4、根据权利要求2所述的方法,其特征在于,所述授权锁的消息包括授 权锁的时间值,当在修改操作中突然死机时,进行恢复的过程包括:
接收所述多个客户端发送的修改同一元数据的锁信息,所述锁信息为 所述授权锁的时间值;
根据所述锁信息恢复所述同一元数据的循环申请队列和循环操作队 列,并进行相应的修改处理操作。
5、根据权利要求1所述的方法,其特征在于,所述将所述多个客户端 发送的修改同一元数据的修改数据缓冲至循环操作队列的步骤包括:
根据接收的顺序将所述多个客户端发送的修改同一元数据的修改数据 缓冲至所述循环操作队列。
6、根据权利要求5所述的方法,其特征在于,所述将所述多个客户端 发送的修改同一元数据的修改数据缓冲至循环操作队列之后的步骤包括:
返回所述修改数据相对应的修改操作成功的消息至所述多个客户端。
7、根据权利要求1所述的方法,其特征在于,所述根据所述循环申请 队列和循环操作队列对所述元数据进行修改的步骤包括:
获取所述循环申请队列中的写锁申请的先后顺序;
获取最后申请的写锁申请。
8、一种元数据服务器,其特征在于,包括:
元数据模块,用于提供元数据;
锁管理模块,用于将多个客户端发送的修改同一元数据的写锁申请和 所述写锁申请对应的修改数据分别缓冲至循环申请队列和循环操作队列, 并从所述循环操作队列中获取与所述循环申请队列中的最后申请的写锁 申请对应的修改数据,根据所述修改数据对所述元数据进行修改。
9、根据权利要求8所述的元数据服务器,其特征在于,所述锁管理模块 包括:
循环申请子模块,用于根据接收的顺序将所述多个客户端发送的修改同 一元数据的写锁申请缓冲至所述循环申请队列,并返回所述写锁申请对应 的授权锁的消息至所述多个客户端,以使所述多个客户端发送修改同一元数 据的修改数据。
10、根据权利要求9所述的元数据服务器,其特征在于,所述锁管理模 块还包括:
循环操作子模块,用于根据接收的顺序将所述多个客户端发送的修改同 一元数据的修改数据缓冲至所述循环操作队列,返回所述修改数据相对应 的修改操作成功的消息至所述多个客户端。
11、根据权利要求10所述的元数据服务器,其特征在于,所述循环操作 子模块还用于获取所述循环申请队列中的写锁申请的先后顺序,获取最后 申请的写锁申请,从所述循环操作队列中获取与所述最后申请的写锁申请 对应的修改数据,根据所述修改数据对所述元数据进行修改操作。
12、根据权利要求10所述的元数据服务器,其特征在于,所述授权锁的 消息包括授权锁的时间值,所述锁管理模块还包括:
恢复子模块,用于当所述元数据服务器死机后,接收所述多个客户端发 送的修改同一元数据的锁信息,所述锁信息为所述授权锁的时间值,根据 所述锁信息恢复所述循环申请子模块中所述同一元数据的循环申请队列 和所述循环操作子模块中的循环操作队列。
技术领域
本发明实施例涉及通信技术领域,特别是涉及一种元数据的修改方法和 元数据服务器。
背景技术
文件系统是用于管理文件及目录的一个系统,传统的本地文件系统只 需要管理本地的文件和目录的信息。本地的文件系统主要是管理文件如何 存储在磁盘上以及提供上层安全的访问文件元数据以及数据信息的接口, 在本地的文件系统中,通过一种读写锁、自旋锁、信号量的方式来保护本 地的资源访问不会产生冲突。
分布式文件系统是一种基于客户机/服务器模式的一种文件系统,在这 种系统的应用环境中,分为客户端和服务端,数据和元数据信息都存放在 服务端。客户端需要修改某个文件的数据的时候,必须先从元数据服务器 上获得元数据信息,然后客户端再根据元数据信息去访问数据服务器做修 改操作,修改完后客户端再发送改动后的元数据信息到元数据服务器端。
目前对于元数据的访问采用了分布式锁的思想,将锁的客户端布置在 了客户端,锁的服务器端布置在元数据服务器上,客户端如果要操作某一 个元数据的时候,须先申请到该元数据的锁,这样在多个客户端操作元数 据的时候就可以防止数据的修改和读取的不一致性。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺点:当 一个客户端获得了某个元数据的写锁的时候,这个时候如果系统中有上千 个客户端的时候,可能会有几十个客户端向元数据服务器发送写锁请求的 时候,那么这些写锁请求将不会被授权,这些申请的用户将处于等待状态, 对于客户来说在获取元数据的时候,长时间的处于等待状态,并在很大程 度上影响了访问数据的效率。
发明内容
本发明实施例提供一种元数据的修改方法和元数据服务器,以提高修 改元数据的效率。
根据本发明的一方面,提供一种元数据的修改方法,包括:
将多个客户端发送的修改同一元数据的写锁申请缓冲至循环申请队 列;
将所述多个客户端发送的修改同一元数据的修改数据缓冲至循环操 作队列;
从所述循环操作队列中获取与所述循环申请队列中的最后申请的写 锁申请对应的修改数据;
根据所述修改数据对所述元数据进行修改。
根据本发明的另一方面,还提供一种元数据服务器,包括:
元数据模块,用于提供元数据;
锁管理模块,用于将多个客户端发送的修改同一元数据的写锁申请和 所述写锁申请对应的修改数据分别缓冲至循环申请队列和循环操作队列, 并从所述循环操作队列中获取与所述循环申请队列中的最后申请的写锁 申请对应的修改数据,根据所述修改数据对所述元数据进行修改。
采用上述提供的元数据的修改方法和元数据服务器,通过将修改同一 元数据的多个写锁申请缓冲至循环申请队列,并将该多个写锁申请的修改 数据缓冲至循环操作队列,并采用在循环申请队列中最后申请的客户端发 送的修改数据对元数据修改,从而提高修改元数据的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员 来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的 附图。
图1为本发明实施例的写锁申请的元数据服务器的结构示意图;
图2为本发明实施例的修改元数据的元数据服务器的结构示意图;
图3为本发明实施例的元数据的修改方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进 行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没 有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的 范围。
图1为本发明实施例的写锁申请的元数据服务器的结构示意图。
在本实施例中,客户端组10与元数据服务器20通信连接,客户端组 10用于当需要修改元数据服务器20中的元数据时,发送写锁申请至元数 据服务器20。在本实施例中,客户端组10包括第一客户端组101、第二 客户端组102、...、第n客户端组10n。
在本实施例中,当第一客户端组101、第二客户端组102、...、第n 客户端组10n需修改同一元数据时,第一客户端组101、第二客户端组 102、...、第n客户端组10n分别发送写锁申请至元数据服务器20。在图 1中所示,第一客户端组101发送写锁申请1至元数据服务器20,第二客 户端组102发送写锁申请2至元数据服务器20,第n客户端组10n发送写 锁申请n至元数据服务器20。
在本实施例是,元数据服务器20包括锁管理模块200及元数据模块 210。元数据模块210用于提供元数据。锁管理模块200用于将多个客户 端发送的修改同一元数据的写锁申请和所述写锁申请对应的修改数据分 别缓冲至循环申请队列和循环操作队列,并从所述循环操作队列中获取与 所述循环申请队列中的最后申请的写锁申请对应的修改数据,根据所述修 改数据对所述元数据进行修改。在本实施例中,锁管理模块200包括循环 申请子模块2000,循环申请子模块2000用于接收客户端发送的多个写锁 申请,并将该多个写锁申请缓冲至长度为L的循环申请队列。在本实施例 中,循环申请子模块2000还用于将在预定时间内接收的多个写锁申请缓 冲至长度为L的循环申请队列。在本实施例中,若该多个写锁申请的数量 K超过L时,循环申请子模块2000将L个写锁申请缓冲至循环申请队列, 并将剩余的写锁申请缓冲至等待队列;若该多个写锁申请的数量K没有超 过L时,循环申请子模块2000将K个写锁申请缓冲于循环申请队列。
在本实施例中,为充分理解本发明,假设客户端包括6个客户端,即 n取6,当然,n也可以取大于6或小于6的值。假设同一元数据的写锁申 请的顺序为第二客户端、第一客户端、第三客户端、第六客户端、第五客 户端、第四客户端,即第二客户端为最先申请,第四客户端为最后申请。
循环申请子模块2000还用于当将多个写锁申请缓冲至循环申请队列 后,返回该多个写锁申请的授权锁至相对应的客户端。如图1所示,返回 写锁申请1的授权锁1至第一客户端组101,返回写锁申请1的授权锁2 至第二客户端组102,返回写锁申请n的授权锁n至第n客户端组10n。 在本实施例中,循环申请子模块2000还用于配置每个授权锁一个时间值, 即每个授权锁对应一个时间值,可以理解为接收每个写锁申请时,有一个 接收的时间,以表示写锁申请的先后顺序,当返回授权锁时,这个时间值 表示该写锁申请处于循环申请队列的顺序。
图2为本发明实施例的修改元数据的元数据服务器的结构示意图。
在本实施例中,当客户端组10接收至元数据服务器20返回的授权锁 后,发送同一元数据的修改数据至元数据服务器20。如图2所示,第一客 户端组101发送修改数据的修改操作1至元数据服务器20,第二客户端组 102发送修改数据的修改操作1至元数据服务器20,第n客户端组10n 发送修改数据的修改操作n至元数据服务器20。
在本实施例中,锁管理模块200还包括循环操作子模块2002,循环操 作子模块2002用于接收客户端组10发送的修改同一元数据的多个修改数 据。在本实施例中,循环操作子模块2002还用于将该多个修改数据缓冲 至循环操作队列。在本实施例中,循环操作子模块2002根据接收的顺序 将该多个修改数据缓冲至循环操作队列,并返回修改操作成功的消息至客 户端组10。如图2所示,返回修改操作1的成功1至第一客户端组101, 返回修改操作2的成功2至第二客户端组102,返回修改操作n的成功n 至第n客户端组10n。
在本实施例中,假设接收的顺序为第六客户端、第四客户端、第一客 户端、第三客户端、第二客户端、第五客户端。当然,也可以进行其它排 列。
在本实施例中,循环操作子模块2002还用于根据循环操作队列和循 环申请队列对元数据进行修改操作。在本实施例中,循环操作子模块2002 先获取循环申请队列中的写锁申请的先后顺序,并获取最后申请的写锁申 请,再从循环操作队列中获取与该最后申请的写锁申请对应的修改数据, 最后根据该修改数据对元数据模块210中的该元数据进行修改操作。循环 操作子模块2002还用于当完成修改操作后,清空循环操作队列和循环申 请队列。
可以理解为:最先申请的写锁申请的修改数据的操作是最先进行的, 之后按申请顺序进行操作,即第二客户端需最先进行修改操作,其次为第 一客户端、第三客户端、第六客户端、第五客户端、第四客户端,当6个 客户端都修改完元数据后,即第四客户端修改完元数据后,元数据模块210 中储存的元数据为第四客户端修改完的元数据,而第一客户端、第三客户 端、第六客户端、第五客户端修改后的数据都被第四客户端修改后的元数 据覆盖,可以理解为最后申请的第四客户端修改完的元数据为有效的元数 据,因此,为避免不断的修改元数据模块210中的同一元数据,采用在循 环申请队列中最后申请的客户端发送的修改数据。
在本实施例中,当元数据服务器20空闲时,若此时循环操作子模块 2002接收到非最后申请的客户端发送的修改数据,可进行修改操作,但当 接收到最后申请的客户端发送的修改数据后,并进行修改操作,之后接收 的非最后申请的客户端发送的修改数据不被采用。当元数据服务器20不 空闲,循环操作子模块2002将所接收的客户端组10发送的修改数据缓冲 至循环操作队列。
在本实施例中,所述锁管理模块200还包括恢复子模块2004,用于当 所述元数据服务器20死机后,接收所述客户端组10发送的修改同一元数 据的锁信息,所述锁信息为所述授权锁的时间值,根据所述锁信息恢复所 述循环申请子模块2000中所述同一元数据的循环申请队列和所述循环操 作子模块2002中的循环操作队列
本发明实施例提供的元数据服务器,通过在锁管理模块中设置循环申 请队列和循环操作队列,采用在循环申请队列中最后申请的客户端发送的 修改数据,即筛选出多个元数据修改操作请求的写锁申请中有效的写锁申 请,并根据筛选出的写锁申请的修改数据对元数据进行修改,从而可以减 少磁盘的操作次数,以提高修改元数据的效率,并不需要使客户端都处于 等待状态,最终提高了访问数据的效率。
图3为本发明实施例的元数据的修改方法的流程图。
在本实施例中,步骤S300,接收多个客户端发送的修改同一元数据的 写锁申请。在本实施例中,当多个客户端需修改同一元数据时,每个客户 端需发送修改该元数据的写锁申请。
步骤S302,将该写锁申请缓冲至循环申请队列,并返回授权锁的消息 至客户端。在本实施列中,对每个写锁申请,返回与该写锁申请相对应的 授权锁的消息至客户端。在本实施例中,根据接收的顺序将该多个写锁申 请缓冲至循环申请队列,其中,每个授权锁对应一个时间值,可以理解为 接收每个写锁申请时,有一个接收的时间,以表示写锁申请的先后顺序, 当返回授权锁时,这个时间值表示该写锁申请处于循环申请队列的顺序。
步骤S304,接收客户端发送的修改同一元数据的多个修改数据,并根 据接收的顺序将多个修改数据缓冲至循环操作队列,及返回修改操作成功 的消息至客户端。
步骤S306,从所述循环操作队列中获取与所述循环申请队列中的最后 申请的写锁申请对应的修改数据,根据所述修改数据对所述元数据进行修 改。在本实施例中,先获取循环申请队列中的写锁申请的先后顺序,并获 取最后申请的写锁申请,再从循环操作队列中获取与该最后申请的写锁申 请对应的修改数据,最后根据该修改数据对该元数据进行修改操作。
步骤S308,当完成修改操作后,清空循环操作队列和循环申请队列。
本发明实施例提供的元数据的修改方法,通过将修改同一元数据的多 个写锁申请缓冲至循环申请队列,并将该多个写锁申请的修改数据缓冲至 循环操作队列,采用在循环申请队列中最后申请的客户端发送的修改数 据,即筛选出多个元数据修改操作请求的写锁申请中有效的写锁申请,并 根据筛选出的写锁申请的修改数据对元数据进行修改,从而可以减少磁盘 的操作次数,以提高修改元数据的效率,并不需要使客户端都处于等待状 态,最终提高了访问数据的效率。
在本实施例中,当处理修改元数据的操作的过程中,服务器突然死机, 此时,服务器过行重新启动以恢复之前的处理操作,可以按以下流程操作:
A:接收多个客户端发送的修改同一元数据的锁信息,锁信息为授权 锁的时间值;
B:根据锁信息恢复同一元数据的循环申请队列和循环操作队列,并 进行相应的修改处理操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分 流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存 储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法 的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆 体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进 行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技 术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换, 而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的 精神和范围。
本文发布于:2023-04-13 11:54:20,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/85996.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |