CN110968563B - 一种数据存储方法、元数据服务器及客户端 - Google Patents
一种数据存储方法、元数据服务器及客户端 Download PDFInfo
- Publication number
- CN110968563B CN110968563B CN201811154007.3A CN201811154007A CN110968563B CN 110968563 B CN110968563 B CN 110968563B CN 201811154007 A CN201811154007 A CN 201811154007A CN 110968563 B CN110968563 B CN 110968563B
- Authority
- CN
- China
- Prior art keywords
- file
- client
- metadata server
- locking
- lock
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000013500 data storage Methods 0.000 title claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract description 116
- 238000012545 processing Methods 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 19
- 238000013461 design Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 239000000306 component Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000002347 injection Methods 0.000 description 3
- 239000007924 injection Substances 0.000 description 3
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
Abstract
本申请公开了一种数据存储方法、元数据服务器及客户端,其中,该方法包括:第一客户端向元数据服务器发送对第一文件的第一数据区间进行锁定的第一锁定请求,元数据服务器接收第一客户端发送的该第一锁定请求。若第一文件的第一数据区间未被锁定,则元数据服务器对第一文件的第一数据区间进行锁定,并向所述第一客户端发送第一锁定响应,指示第一文件的第一数据区间被第一客户端锁定。实施本申请,客户端在向元数据服务器申请对文件的数据区间进行锁定时,可以自主请求对文件的哪一数据区间进行锁定,使得对文件范围的加锁更加灵活,提高了文件的范围锁加锁效率,提高了文件的并行写入效率。
Description
技术领域
本发明涉及分布式文件系统领域,尤其涉及一种数据存储方法、元数据服务器及客户端。
背景技术
随着互联网技术的不断发展,数据量不断膨胀,业务逻辑日趋复杂,传统集中式系统已经无法满足业务需求,分布式文件系统被用在更多场景下。分布式文件系统一般采用客户端/服务器架构,数据保存在服务器上,而客户端的应用程序能够像访问本地文件系统一样访问位于远程服务器上的文件。在分布式文件系统中,多个客户端访问位于服务器上的同一个共享资源,需要一种互斥机制来防止彼此之间相互干扰,以保证数据一致性,因此就引入了分布式锁概念。
分布式锁是分布式文件系统的核心组件,是用来控制分布式文件系统之间同步访问共享资源的一种方式。具体来说,分布式锁的原理就是在操作目标资源之前先获取操作许可,然后再执行操作,如果其他用户同时尝试操作该目标资源将被阻止,直到前一个用户释放许可后,其他用户才能够操作目标资源。
通用并行文件系统(general parallel file system,GPFS)和集群文件系统(cluster file systems,CFS)文件系统的名字提供了一种分布式锁机制。GPFS和CFS采用的是一种乐观的字节范围锁来同步文件输入/输出(input/output,I/O)。在这种机制中,服务器向获得锁的节点返回当前能够获得的最大锁范围(以页或块为单位)。当第一个节点写文件时,它将获得整个文件范围的锁。只要没有其他节点访问同一文件,它对文件的所有操作都可以在本地处理,而不必与其他节点交换信息。当第二个节点写此文件时,服务器会请求撤销第一个节点所拥有的至少一部分锁范围。第一个节点在收到撤销请求后,检查文件是否仍在使用。如果文件已经关闭,文件锁就会被释放,第二个节点可以获得整个文件范围的锁。否则,只释放第一个节点不使用的部分锁,以使第二个节点可以获得其所需范围的锁,完成写操作。这种分布式锁机制是由服务器来分配不同节点的文件范围的,且多个节点共同访问同一文件时,服务器释放锁范围、分配锁范围的过程较为繁琐,性能低且灵活性差。
发明内容
本发明实施例提供了一种数据存储方法、元数据服务器及客户端,能够对文件范围的加锁更加灵活,提高了文件的范围锁加锁效率,提高了文件的并行写入效率。
第一方面,本发明实施例提供了一种数据存储方法,应用于元数据服务器侧。该方法包括:元数据服务器接收第一客户端发送的第一锁定请求,该第一锁定请求用于请求对第一文件的第一数据区间进行锁定。元数据服务器确定该第一文件的第一数据区间是否被锁定。若该第一文件的第一数据区间未被锁定,则元数据服务器对第一文件的第一数据区间进行锁定,并向第一客户端发送第一锁定响应,指示第一文件的第一数据区间被第一客户端锁定,第一数据区间用于第一客户端写入数据。
实施本发明实施例,元数据服务器接收的锁定请求中携带客户端请求锁定的数据区间信息,若该数据区间为被锁定,则元数据服务器为该数据区间加锁,以使客户端针对锁定的数据区间进行数据修改,使得对文件范围的加锁更加灵活,提高了文件的范围锁加锁性能。
在一种可能的设计中,元数据服务器接收第一客户端发送的第一锁定请求之前,还包括:元数据服务器接收第一客户端发送的第二锁定请求,该第二锁定请求用于请求对第一文件的第一版本进行锁定。元数据服务器确定第一文件是否被锁定。若第一文件未被锁定,则元数据服务器对第一文件的第一版本进行锁定,并向第一客户端发送第二锁定响应,指示第一文件的第一版本被锁定。
实施本发明实施例,元数据服务器接收的锁定请求中携带客户端请求锁定的文件版本信息,元数据服务器根据客户端请求锁定的文件版本对文件进行锁定,当文件的第一版本被锁定后,客户端只允许对该第一版本的内容进行修改,而不能对该文件的其他版本进行修改,避免多个客户端分别对同一文件的不同版本的内容进行修改导致的数据混乱的问题,保障了分布式文件的数据一致性和可靠性。
在一种可能的设计中,元数据服务器对第一文件的第一版本进行锁定之后,还包括:元数据服务器接收第二客户端发送的第三锁定请求,该第三锁定请求用于请求对第一文件的第二版本进行锁定。元数据服务器判断第一文件是否被锁定,若第一文件的第一版本已被锁定,且第二版本与第一版本相同,则元数据服务器向第二客户端发送第三锁定响应,指示第一文件的第一版本被锁定。之后元数据服务器接收第二客户端发送的第四锁定请求,第四锁定请求用于请求对第一文件的第二数据区间进行锁定。若第一文件的第二数据区间未被锁定,则元数据服务器对第一文件的第二数据区间进行锁定,并向第二客户端发送第四锁定响应,指示第一文件的第二数据区间被第二客户端锁定。
实施本发明实施例,当文件的某一版本被锁定后,该文件的其他版本的内容则暂时不能进行修改,避免多个客户端同时修改同一文件的不同版本而出现数据混乱的问题,保障了数据的一致性。
在一种可能的设计中,若第一文件的第二数据区间中的第三数据区间已被锁定,则元数据服务器对第二数据区间中除第三数据区间以外的其他数据区间进行锁定,并向第二客户端发送第五锁定响应,第五锁定响应用于通知第一文件的第二数据区间中除第三数据区间以外的其他数据区间被第二客户端锁定。
实施本发明实施例,若第二客户端请求锁定的第二数据区间中包含了部分已被锁定的数据区间,则元数据服务器同意将第二客户端锁定第二数据区间中未被锁定的数据区间,提高了文件的并行写入效率。
在一种可能的设计中,元数据服务器接收第二客户端发送的第三锁定请求之后,还包括:若第一文件的第一版本已被锁定,且第二版本与第一版本不相同,则元数据服务器向第二客户端发送锁定失败指示消息。
实施本发明实施例,当文件的某一版本被锁定后,该文件的其他版本的内容则暂时不能进行修改,避免多个客户端同时修改同一文件的不同版本而出现数据混乱的问题,保障了数据的一致性。
在一种可能的设计中,第二锁定响应包括第一版本对应的第一令牌。第一锁定请求中包括第二令牌。元数据服务器接收第一客户端发送的第一锁定请求后,元数据服务器向第一客户端发送第一锁定响应之前,还包括:元数据服务器判断第二令牌是否与第一令牌相同。若第二令牌与第一令牌相同且第一文件的第一数据区间未被锁定,则元数据服务器向第一客户端发送第一锁定响应。
实施本发明实施例,拿到文件的版本令牌的客户端能申请对该文件的某一数据区间进行加锁。由元数据服务器分发版本令牌来控制客户端是否具有修改文件的权限,提高了元数据服务器的控制效率。
在一种可能的设计中,第三锁定响应包括第一版本对应的第一令牌。第四锁定请求中包括第三令牌。元数据服务器接收第二客户端发送的第四锁定请求后,元数据服务器向第二客户端发送第四锁定响应之前,还包括:元数据服务器判断第三令牌是否与第一令牌相同。元数据服务器向第二客户端发送第四锁定响应,包括:若第三令牌与第一令牌相同且第一文件的第二数据区间未被锁定,则元数据服务器向第二客户端发送第四锁定响应。
实施本发明实施例,拿到文件的版本令牌的客户端能申请对该文件的某一数据区间进行加锁。由元数据服务器分发版本令牌来控制客户端是否具有修改文件的权限,提高了元数据服务器的控制效率。
在一种可能的设计中,元数据服务器向第一客户端发送第一锁定响应之后,还包括:元数据服务器接收第一客户端发送的第一解锁请求,第一解锁请求用于请求解除对第一文件的第一数据区间的锁定。元数据服务器解除第一客户端对第一文件的第一数据区间的锁定。元数据服务器向第一客户端发送第一解锁响应。
实施本发明实施例,客户端可以主动申请对文件的数据区间进行解锁,元数据服务器根据客户端发送的解锁请求解除对数据区间的锁定,避免了长期锁定数据区间。解除了锁定的数据区间可以被其他客户端再次进行锁定。
在一种可能的设计中,元数据服务器向第一客户端发送第二锁定响应之后,还包括:元数据服务器接收第一客户端发送的第二解锁请求,第二解锁请求用于请求解除对第一文件的第一版本的锁定。若元数据服务器解除第一客户端对第一文件的第一版本的锁定。元数据服务器向第一客户端发送第二解锁响应。
实施本发明实施例,客户端可以主动申请对文件进行解锁,元数据服务器根据客户端发送的解锁请求解除对文件的版本的锁定,避免了长期锁定文件的版本。
在一种可能的设计中,元数据服务器对第一文件的第一版本进行锁定之后,还包括:元数据服务器启动对第一文件的锁定计时。在对第一文件的锁定计时达到第一预设期限时元数据服务器还未接收到客户端发送的针对第一文件的第一版本的解锁请求,则元数据服务器解除对第一文件的第一版本的锁定。
实施本发明实施例,元数据服务器可以通过计时来检测对文件加锁是否超期,超期则解除对文件的版本的锁定,避免了长期锁定文件的版本。
在一种可能的设计中,元数据服务器对第一文件的第一数据区间进行锁定之后,还包括:元数据服务器启动对第一数据区间的锁定计时。在对第一数据区间的锁定计时达到第二预设期限时元数据服务器还未接收到第一客户端发送的针对第一数据区间的解锁请求,则元数据服务器解除第一客户端锁定第一文件的第一数据区间。
实施本发明实施例,元数据服务器可以通过计时来检测对文件的数据区间加锁是否超期,超期则解除对文件的数据区间的锁定,避免了长期锁定文件的数据区间。
在一种可能的设计中,对于落入两次租约检查期间内的过期记录,则通过客户端加锁请求触发文件锁/范围锁的租约过期检查,如果锁已过期则进行释放处理,并允许新用户加锁。例如,第一客户端已对第一文件的第一版本加文件锁,且该文件锁已过期,当元数据服务器接收到第二客户端发送的针对第一文件的第一版本的锁定请求时,元数据服务器检查第一文件的第一版本的文件锁是否已过期,若是,则元数据服务器解除对第一文件的第一版本的锁定,并重新将第一文件的第一版本进行锁定,锁定者为第二客户端。
其中,文件锁用于锁定指定文件的指定版本,当该指定版本被锁定后,该指定文件的其他版本的内容则不能被锁定或修改,只允许对该指定文件的指定版本的内容进行修改。文件锁解除后,该指定文件的其他版本才可以被锁定或修改。范围锁用于锁定指定文件的指定数据范围(或称数据区间),当该指定文件的指定数据区间被锁定后,则范围锁持有者能够对该指定数据区间的内容进行修改。范围锁解除后,指定数据区间则被解除锁定,该指定数据区间可以重新被其他客户端申请锁定或修改。
第二方面,本发明实施例提供了一种数据存储方法,应用于第一客户端。该方法包括:第一客户端向元数据服务器发送第一锁定请求,第一锁定请求用于请求对第一文件的第一数据区间进行锁定。第一客户端接收元数据服务器发送的第一锁定响应,第一锁定响应用于指示第一文件的第一数据区间被第一客户端锁定。第一客户端向存储服务器发送写请求,该写请求包括待写入数据,写请求用于请求将所述待写入数据写入所述第一数据区间。
实施本发明实施例,客户端在向元数据服务器申请对文件的数据区间进行锁定时,可以自主请求对文件的哪一数据区间进行锁定,使得对文件的加锁更加灵活,提高了文件的范围锁加锁性能,在数据区间被锁定后,客户端可以将待写入数据写入锁定的数据区间。
在一种可能的设计中,第一客户端向元数据服务器发送第一锁定请求之前,还包括:第一客户端向元数据服务器发送第二锁定请求,第二锁定请求用于请求对第一文件的第一版本进行锁定。第一客户端接收元数据服务器发送的第二锁定响应,第二锁定响应用于指示第一文件的第一版本被锁定,第二锁定响应为元数据服务器在确定第一文件未被锁定后发送的。
实施本发明实施例,客户端在向元数据服务器申请对文件进行锁定时,可以自主请求对文件的哪一版本进行锁定,当文件的第一版本被锁定后,客户端只允许对该第一版本的内容进行修改,而不能对该文件的其他版本进行修改,避免多个客户端分别对同一文件的不同版本的内容进行修改导致的数据混乱的问题,保障了分布式文件的数据一致性和可靠性。
在一种可能的设计中,第二锁定响应包括第一版本对应的第一令牌。第一锁定请求中包括第二令牌,第二令牌用于元数据服务器识别第二令牌是否与第一令牌相同。
在一种可能的设计中,第一客户端接收元数据服务器发送的第一锁定响应之后,还包括:第一客户端向元数据服务器发送第一解锁请求,第一解锁请求用于请求解除对第一文件的第一数据区间的锁定。第一客户端接收元数据服务器发送的第一解锁响应。
实施本发明实施例,客户端可以主动申请对文件的数据区间进行解锁,元数据服务器根据客户端发送的解锁请求解除对数据区间的锁定,避免了长期锁定数据区间。解除了锁定的数据区间可以被其他客户端再次进行锁定。
在一种可能的设计中,第一客户端接收元数据服务器发送的第二锁定响应之后,还包括:第一客户端向元数据服务器发送第二解锁请求,第二解锁请求用于请求解除对第一文件的第一版本的锁定。第一客户端接收元数据服务器发送的第二解锁响应。
实施本发明实施例,客户端可以主动申请对文件进行解锁,元数据服务器根据客户端发送的解锁请求解除对文件的版本的锁定,避免了长期锁定文件的版本。
第三方面,本发明实施例提供了一种数据存储方法,应用于第二客户端。该方法包括:第二客户端向元数据服务器发送第三锁定请求,第三锁定请求用于请求对第一文件进行锁定,第三锁定请求包括第一文件的第二版本的信息。第二客户端接收元数据服务器发送的第三锁定响应,第三锁定响应为元数据服务器确定第一文件的第一版本已被锁定且第二版本与第一版本相同后发送的,第三锁定响应用于指示同意第二客户端针对第一文件的第一版本进行修改。第二客户端向元数据服务器发送第四锁定请求,第四锁定请求用于请求对第一文件的第二数据区间进行锁定。第二客户端接收元数据服务器发送的第四锁定响应,第四锁定响应用于指示同意第二客户端针对第一文件的第二数据区间进行修改。
实施本发明实施例,当文件的第一版本被锁定后,其他客户端只能针对第一版本的数据区间进行加锁,避免多个客户端同时修改同一文件的不同版本而出现数据混乱的问题,保障了数据的一致性。
在一种可能的设计中,第二客户端向元数据服务器发送第三锁定请求之后,还包括:第二客户端接收元数据服务器发送的锁定失败指示消息,锁定失败指示消息为元数据服务器确定第一文件的第一版本已被锁定且第二版本与第一版本不相同后发送的。
实施本发明实施例,当文件的第一版本被锁定后,其他客户端只能针对第一版本的数据区间进行加锁,避免多个客户端同时修改同一文件的不同版本而出现数据混乱的问题,保障了数据的一致性。
在一种可能的设计中,第三锁定响应包括第一版本对应的第一令牌。第四锁定请求中包括第三令牌,第三令牌用于元数据服务器识别第三令牌是否与第一令牌相同。
第四方面,本申请实施例提供了一种元数据服务器,该元数据服务器可包括多个功能模块或单元,用于相应的执行第一方面所提供的数据存储方法。
第五方面,本申请实施例提供了一种客户端,该客户端为第一客户端,该第一客户端可包括多个功能模块或单元,用于相应的执行第二方面所提供的数据存储方法。
第六方面,本申请实施例提供了一种客户端,该客户端为第二客户端,该第二客户端可包括多个功能模块或单元,用于相应的执行第三方面所提供的数据存储方法。
第七方面,本申请实施例提供了一种元数据服务器,用于执行第一方面所提供的数据存储方法。元数据服务器可包括:存储器、处理器、发射器、接收器,其中:发射器和接收器用于与其他通信设备(如第一客户端、第二客户端等)通信。存储器用于存储第一方面所提供的数据存储方法的实现代码,处理器用于执行存储器中存储的程序代码,即执行第一方面所提供的数据存储方法。
第八方面,本申请实施例提供了一种客户端,该客户端为第一客户端,用于执行第二方面所提供的数据存储方法。第一客户端可包括:存储器、处理器、发射器、接收器,其中:发射器和接收器用于与其他通信设备(如元数据服务器)通信。存储器用于存储第二方面所提供的数据存储方法的实现代码,处理器用于执行存储器中存储的程序代码,即执行第二方面所提供的数据存储方法。
第九方面,本申请实施例提供了一种客户端,该客户端为第二客户端,用于执行第三方面所提供的数据存储方法。第二客户端可包括:存储器、处理器、发射器、接收器,其中:发射器和接收器用于与其他通信设备(如元数据服务器)通信。存储器用于存储第三方面所提供的数据存储方法的实现代码,处理器用于执行存储器中存储的程序代码,即执行第三方面所提供的数据存储方法。
第十方面,本申请实施例提供了一种分布式文件系统,分布式文件系统包括:元数据服务器、第一客户端和第二客户端。其中:
元数据服务器可以是上述第四方面描述的元数据服务器,也可以是上述第七方面描述的元数据服务器。
第一客户端可以是上述第五方面描述的第一客户端,也可以是上述第八方面描述的第一客户端。
第二客户端可以是上述第六方面描述的第二客户端,也可以是上述第九方面描述的第二客户端。
第十一方面,本申请实施例提供了一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第一方面描述的数据存储方法。
第十二方面,本申请实施例提供了一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第二方面描述的数据存储方法。
第十三方面,本申请实施例提供了一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第二方面描述的数据存储方法。
第十四方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第一方面描述的数据存储方法。
第十五方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第二方面描述的数据存储方法。
第十六方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第三方面描述的数据存储方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的分布式文件系统的架构示意图;
图2是本发明实施例提供的一种分布式锁的逻辑示意图;
图3是本发明实施例提供的一种数据存储方法的流程示意图;
图4是本发明实施例提供的另一种数据存储方法的流程示意图;
图5是本发明实施例提供的另一种数据存储方法的流程示意图;
图6是本发明实施例提供的一种元数据服务器的逻辑结构示意图;
图7是本发明实施例提供的一种元数据服务器的硬件结构示意图;
图8是本发明实施例提供的一种第一客户端的逻辑结构示意图;
图9是本发明实施例提供的一种第一客户端的硬件结构示意图;
图10是本发明实施例提供的一种第二客户端的逻辑结构示意图;
图11是本发明实施例提供的一种第二客户端的硬件结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
首先针对本申请所涉及的网络架构进行介绍。参考图1,图1示出了本发明实施例涉及的分布式文件系统(distributed file system,DFS)。分布式文件系统100包括:一个或多个客户端(client)101(本申请以第一客户端和第二客户端为例进行说明)、客户端服务器102、元数据服务器(meta data server,MDS)103以及一个或多个存储服务器(storageserver,SS)104。
其中,客户端101可以是电子设备,例如台式电脑、便携式电脑、手机等。
客户端服务器102,用于接收客户端101的访问请求,该客户端101可以是分布在全球范围内任意一接入网络的个人计算机(personal compute,PC)或者企业PC或者是其它通讯设备。客户端101的访问请求主要包括:客户端的一些需求,如需要多大的计算能力,需要部署什么样的软件,需要做什么样的测试,对文件进行锁定的请求,对文件进行解锁的请求,对文件的某一范围进行锁定的请求,对文件的某一范围进行解锁的请求等。客户端服务器102可以为应用服务器。
元数据服务器103,负责维护文件系统的元数据,包括命名空间、访问控制、文件-块映射、块地址等,以及控制系统级活动,如垃圾回收、负载均衡等。元数据服务器103,还用于接收所述客户端服务器102发送的客户端101的访问请求。
元数据服务器103在接收到客户端服务器102发送的客户端101的访问请求后,查找当前可用的存储服务器104的标识(identity,ID),并将查找到的存储服务器104的ID返回给客户端服务器102。
客户端服务器102在接收到元数据服务器103返回的存储服务器104的ID后,向存储服务器104发送访问内容,例如向存储服务器104写文件或者是从存储服务器104读文件。
存储服务器104,用于响应所述客户端服务器102发送的访问内容,产生访问结果,并将所述访问结果经由所述客户端服务器102返回所述客户端101。例如访问内容如果是客户端服务器102向存储服务器104写文件,则客户端服务器102会向存储服务器104发送文件内容,当写完成时,存储服务器104会向客户端服务器102返回一个写完成的报告信息。如果客户端服务器102从存储服务器104读文件内容,则客户端服务器102会将文件ID发送给存储服务器104,存储服务器104根据该文件ID将相关的文件内容返回给客户端服务器102,再由客户端服务器102将从存储服务器104中读取的文件内容返回给客户端101,进而满足客户端的需求。
存储服务器104还用于负责的数据存储(例如以块为单位进行数据存储),一般都带有本地通用文件系统(如:ext3、ext4、xfs)或裸盘文件系统(支持块设备访问)。
本申请中,客户端101、客户端服务器102、元数据服务器103以及存储服务器104相互之间通过高速互联网络进行通信。
以下结合图2针对本申请涉及的“文件锁+范围锁”的分布式锁机制进行简单介绍。其中,文件锁用于锁定指定文件的指定版本,当该指定版本被锁定后,该指定文件的其他版本的内容则不能被锁定或修改,只允许对该指定文件的指定版本的内容进行修改。文件锁解除后,该指定文件的其他版本才可以被锁定或修改。范围锁用于锁定指定文件的指定数据范围(或称数据区间),当该指定文件的指定数据区间被锁定后,则范围锁持有者能够对该指定数据区间的内容进行修改。范围锁解除后,指定数据区间则被解除锁定,该指定数据区间可以重新被其他客户端申请锁定或修改。在实际应用中,分布式锁的使用时序为:文件锁加锁→{范围锁加锁→写数据→范围锁解锁}→文件锁解锁。即客户端先对指定文件的指定版本进行锁定,再对该指定文件的指定数据区间锁定,之后对该指定数据区间的数据进行修改,修改之后对该指定数据区间解除范围锁,之后对该指定文件解除文件锁。
文件锁采用“乐观锁+版本令牌+租期+引用数”方式进行控制,文件锁可以被多个客户端共享,满足多客户端并行访问同一文件的同一版本,提高文件的并行写入效率。范围锁采用“悲观锁+租期”方式进行控制,实现不同用户对同一文件的不同数据区间的独占式使用,满足了数据的一致性要求。文件锁和范围锁都受租期控制,逾期未释放,系统会对锁进行释放。乐观锁是指针对同一文件的同一版本,允许多客户端持锁,即多客户端可以对同一文件的同一版本的内容进行修改。悲观锁是指针对同一文件的同一数据区间,只能由某个客户端独占持锁,即针对同一文件的同一数据区间,只能某个客户端独占修改。
文件锁下有3个属性:
1、版本:描述当前被加锁文件的版本信息,此属性必须唯一,文件加锁成功后会给客户端颁发该文件对应的版本令牌(token)。拿到文件的版本令牌的客户端可以申请对该文件的某一数据区间进行加锁。
2、租期:文件锁的计时器记录文件的最近一次加文件锁的操作时间,若文件锁逾期则释放文件锁,文件取消加锁。文件锁的计时器更新:文件锁的计时器是可以被多个客户端刷新,文件锁计时器只记录最近一次文件锁定的操作时间。即针对已加锁的文件,一旦有其他客户端申请对该文件进行加锁,则文件锁的计时器需要更新记录最近一次加锁的操作时间,以最新记录的加锁的操作时间来判断是否逾期。其中,判断文件锁是否逾期的方式可以是:判断文件锁的计时器记录的最近一次文件被加锁的操作时间与元数据服务器当前的系统时间之间的差值是否大于或等于第一预设期限(即文件锁的有效期),若是,则判定文件锁逾期,则解除对文件的锁定。
3、引用计数:由于文件锁允许多个客户端共享,因此要记录文件锁的引用计数。当某一文件的文件锁的引用计数大于零时,表明仍存在客户端对该文件进行加锁,当该文件的引用计数等于零时,表明不存在客户端对该文件进行加锁。
从输入输出(input/output,I/O)吞吐性能考虑,一般存储服务器底层会按照块(block)对齐方式对数据进行存储,因此客户端服务器会将客户端请求的字节偏移映射到block偏移再向元数据服务器提交。范围锁可以提供两种锁定方式:
1、不支持范围重叠
在这种模式下,如果范围内存在已经锁定的block,系统将将返回锁定失败。例如,图2中的客户端A、客户端B和客户端C分别对同一文件的不同范围进行加锁。
2、支持范围重叠
由于文件锁已经保证版本的一致性,使用范围锁的场景是为了提升并行写入速度,因此业务层指定的范围如果有部分block已被锁定,则系统允许剩余未被锁定的block能够被申请锁定,系统可以返回允许锁定的block集合。例如,客户端A已将第一数据区间锁定,客户端B请求对同一文件的第二数据区间进行锁定,若第一数据区间与第二数据区间无重叠,则元数据服务器可以返回锁定成功消息给客户端B。可选的,该锁定成功消息中还可以包括第二数据区间的区间信息,例如,block0-block9,或者字节1-字节3。若第一数据区间与第二数据区间有重叠,则元数据服务器将第二数据区间中除去重叠部分的剩余的数据区间分配给客户端B,元数据服务器向客户端B返回锁定成功消息,该锁定成功消息中包括第二数据区间中除去重叠部分的剩余的数据区间的区间信息。例如,第一数据区间为block0-block5,第二数据区间为block4-block9,则元数据服务器向客户端B返回的锁定成功消息包括有效的数据区间block6-block9。范围锁也具备租期属性。由于范围锁是由某个客户端独占,也需要记录此客户端最近一次访问数据区间的时间,如果此客户端超时未访问,此段范围(数据区间)也可以强制释放,被其他客户端锁定。其中,判断范围锁是否逾期的方式可以是:判断范围锁的计时器记录的客户端最近一次访问数据区间的时间与元数据服务器当前的系统时间之间的差值是否大于或等于第二预设期限(即范围的有效期),若是,则判定范围锁逾期,则解除对该数据区间的锁定。
对于同一客户端,在文件锁加锁租期内,可以针对文件的多个数据区间进行加范围锁。
以下将结合具体方法实施例对本申请的“文件锁+范围锁”的分布式锁机制进行详细介绍。
基于上述图1所述的分布式文件系统,图3提供了一种数据存储方法的流程图,该方法包括如下步骤。
S301:第一客户端向元数据服务器发送锁定请求,元数据服务器接收第一客户端发送的锁定请求,该锁定请求用于请求对第一文件的第一数据区间进行锁定。S302:元数据服务器判断第一文件的第一数据区间是否被锁定,若否,执行步骤S303。
S303:元数据服务器对第一文件的第一数据区间进行锁定,并执行步骤S304。
S304:元数据服务器向第一客户端发送锁定响应,第一客户端接收元数据服务器发送的锁定响应,该锁定响应用于通知第一文件的第一数据区间被第一客户端锁定。
S305:第一客户端向存储服务器发送写请求,该写请求包括待写入数据,该写请求用于请求将待写入数据写入第一文件的第一数据区间。
S306:存储服务器接收第一客户端发送的写请求,将写请求中携带的待写入数据写入第一文件的第一数据区间。
其中,第一文件为分布式文件系统中的存储服务器中已存储的文件。
本发明实施例中,客户端向元数据服务器发送的信息可以通过客户端服务器发送给元数据服务器。例如,第一客户端向元数据服务器发送锁定请求具体为:第一客户端将锁定请求发送给客户端服务器,客户端服务器接收第一客户端发送的锁定请求。客户端服务器将锁定请求转发给元数据服务器,元数据服务器接收客户端服务器发送的锁定请求。同样的,元数据服务器向客户端发送的信息也可以通过客户端服务器进行转发。例如,元数据服务器向第一客户端发送锁定响应具体为:元数据服务器将锁定响应发送给客户端服务器,客户端服务器接收元数据服务器发送的锁定响应。客户端服务器将锁定响应发送给第一客户端,第一客户端接收客户端服务器发送的锁定响应。
其中,上述锁定请求可以包括第一文件的第一数据区间的区间信息,存储服务器可以按块(block)为单位对数据进行存储,不同的块的索引不同。第一客户端请求的第一数据区间可以是以字节为单位,因此客户端服务器可以将第一客户端请求的字节映射到block再向元数据服务器提交。例如,客户端A请求的第一数据区间为字节1-字节3,客户端服务器根据字节与块的映射关系将字节1-字节3这三个字节映射为block0-block9这10个块提交给元数据服务器。元数据服务器同意客户端A锁定block0-block9这10个块,因此后续客户端A可以向存储服务器请求对block0-block9这10个块进行数据写入。
其中,本发明实施例中所描述的“第一文件的第一数据区间被锁定”具体包括:在第一客户端对第一数据区间的锁定租期内,限制其他客户端对该数据区间中的内容进行修改。
其中,元数据服务器对第一文件的第一数据区间进行锁定可以是:元数据服务器在本地记录第一文件的第一数据区间被第一客户端锁定这一锁定事件。例如,元数据服务器记录第一文件的第一数据区间的状态为已加范围锁状态,且范围锁持有者为第一客户端,第一客户端可以修改第一文件的第一数据区间,例如,向第一文件的第一数据区间写入数据。
可选的,元数据服务器对第一文件的第一数据区间进行锁定后,还可以启动范围锁计时器记录对第一文件的第一数据区间加范围锁的操作时间。当该操作时间到达第二预设期限时若第一客户端还未释放该范围锁,则表明该范围锁计时超时,则释放对该数据区间的锁定,避免长时间锁定数据区间。其中,检测对第一文件的第一数据区间加范围锁的操作时间是否到达第二预设期限的方式可以是:判断当前时间与操作时间之间的差值是否大于或等于第二预设期限。例如,第二预设期限可以是10分钟。
可选的,在范围锁的租期内,如果第一客户端处理完写入操作,第一客户端可以主动释放该范围锁,以解除对第一数据区间的锁定。解除了范围锁的第一数据区间可以被其他客户端再次申请加范围锁。例如,第一客户端向元数据服务器发送解锁请求,元数据服务器接收第一客户端发送的解锁请求,该解锁请求用于请求解除对所述第一文件的第一数据区间的锁定。元数据服务器解除第一客户端对所述第一文件的第一数据区间的锁定。这里,元数据服务器解除第一客户端对所述第一文件的第一数据区间的锁定可以是:元数据服务器在本地删除第一文件的第一数据区间被第一客户端锁定这一锁定事件。例如,元数据服务器修改第一文件的第一数据区间的状态为未加范围锁状态。
实施本发明实施例,客户端在向元数据服务器申请对文件的数据区间进行锁定时,可以自主请求对文件的哪一数据区间进行锁定,使得对文件范围的加锁更加灵活,不同的客户端可以针对同一文件的不同数据区间分别加锁,以针对同一文件的不同数据区间分别进行写入操作,提高了文件的并行写入效率。
可选的,参见图4,第一客户端向元数据服务器发送第一锁定请求之前,还包括如下步骤S307-S309,以请求元数据服务器对第一文件进行锁定。其中,
S307:第一客户端向元数据服务器发送锁定请求,元数据服务器接收第一客户端发送的锁定请求,该锁定请求用于请求对第一文件的第一版本进行锁定。
S308:元数据服务器确定第一文件未被锁定,则元数据服务器对第一文件的第一版本进行锁定,并执行步骤S309。
S309:元数据服务器向第一客户端发送锁定响应,第一客户端接收元数据服务器发送的锁定响应,该锁定响应用于指示第一文件的第一版本被锁定。
其中,第一版本的信息可以是第一版本的版本号等。
本发明实施例中所描述的“元数据服务器对第一文件的第一版本进行锁定”具体包括:在第一文件的第一版本的锁定租期内,限制客户端对第一文件的其他版本的内容进行修改。例如,第一客户端请求对文件1的版本1进行锁定,则元数据服务器在对文件1的版本1锁定后,第一客户端以及其他客户端不能对文件1的其他版本进行修改,在元数据服务器取消对文件1的版本1的锁定后,第一客户端或者其他客户端才能申请对文件1的其他版本进行修改。
在对第一文件的第一版本加锁成功后,第一客户端如需对指定的数据段进行写入操作时需要按数据区间申请范围锁,具体详见上述步骤S301-S306。
其中,元数据服务器对第一文件的第一版本进行锁定可以是:元数据服务器在本地记录第一文件的第一版本被锁定这一锁定事件。例如,元数据服务器记录第一文件的第一版本的状态为已加文件锁状态,可选的,元数据服务器还可以记录加锁者为第一客户端。除了第一客户端以外,在第一文件的第一版本的租期内,其他客户端也可以申请对第一文件的第一版本的指定数据区间进行锁定,以修改指定数据区间的内容。也即是说,针对同一文件的同一版本,可以同时允许多个客户端对该文件的不同数据区间进行并行访问,提高了系统的并行效率。
可选的,元数据服务器对第一文件的第一版本进行锁定后,还可以启动文件锁计时器记录对第一文件的第一版本加文件锁的操作时间。当该操作时间到达第一预设期限时若已申请对第一文件的第一版本进行加锁的客户端未完全释放对第一文件的文件锁,则表明该文件锁计时超时,则释放对第一文件的第一版本的锁定,避免长时间锁定文件的某一版本。其中,检测对第一文件的第一版本加文件锁的操作时间是否到达第一预设期限的方式可以是:判断当前时间与操作时间之间的差值是否大于或等于第一预设期限。例如,第一预设期限可以是20分钟。其中,由于第一文件是同时被多个客户端并行访问,则这多个客户端在文件锁租期内释放文件锁,否则当文件锁计时器记录的操作时间逾期后,则需要解除对第一文件的第一版本的锁定。
可选的,在文件锁的租期内,如果第一客户端不再需要对第一文件的第一版本进行处理,则第一客户端可以主动释放该文件锁,以停止对第一文件的第一版本的修改。例如,第一客户端向元数据服务器发送解锁请求,元数据服务器接收第一客户端发送的解锁请求,该解锁请求用于请求解除对所述第一文件的第一版本的锁定。元数据服务器解除第一客户端对所述第一文件的第一版本的锁定。此时,若除了第一客户端以外没有其他客户端在锁定第一文件的第一版本,则元数据服务器解除对第一文件的第一版本的锁定。例如,元数据服务器将第一文件的文件锁的引用计数修改为0,表明第一文件当前变为未加文件锁状态。若除了第一客户端以外还有其他客户端在对第一文件的第一版本进行修改,则元数据服务器将第一文件的文件锁的引用计数减一,当前还不能解除对第一文件的第一版本的锁定,直至所有客户端均解除对第一文件的第一版本的释放,或者文件锁逾期时,元数据服务器才会解除对第一文件的第一版本的锁定。
可选的,在上述步骤S308中,元数据服务器对第一文件的第一版本进行锁定后,还可以生成第一文件的第一版本对应的令牌(token),并将生成的令牌发送给第一客户端。版本令牌代表对版本进行修改的权限,拿到版本令牌的客户端可以对文件的相应版本的内容进行修改,没有拿到版本令牌的客户端则不具有对文件的相应版本的内容进行修改的权限。例如,客户端1和客户端2都具有文件1的版本1对应的令牌,客户端3不具有文件1的版本1对应的令牌,则客户端1和客户端2能够向元数据服务器申请对文件1的版本1中的某一数据区间进行加锁且写入操作,而客户端3则不能够申请对文件1的版本1中的某一数据区间进行加锁且写入操作。例如,元数据服务器将第一版本对应的令牌携带在锁定响应中发送给第一客户端。第一客户端接收元数据服务器发送的令牌,后续第一客户端发起其他的请求(例如锁定请求、解锁请求等)时需要携带该第一版本对应的令牌,元数据服务器通过识别第一客户端发送的请求中携带的令牌来确定该第一客户端是否具有锁定第一文件的数据区间的权限。
例如,第一客户端向元数据服务器发送的锁定请求中包括第二令牌,该锁定请求用于请求对第一文件的第一数据区间进行锁定,则元数据服务器接收到该锁定请求后,元数据服务器判断第二令牌是否与第一令牌相同,若第二令牌与第一令牌相同且第一文件的第一数据区间未被锁定,则元数据服务器对第一文件的第一数据区间进行锁定,并向第一客户端发送锁定响应。这里,元数据服务器可以使用令牌来控制哪些客户端具有锁定第一文件的数据区间的权限,拿到第一版本的令牌的客户端可以向元数据服务器申请锁定第一文件的某一数据区间。其中,针对不同文件或者同一文件的不同版本,令牌可以设置的不同。
可选的,在上述步骤S308中,元数据服务器对第一文件的第一版本进行锁定后,还可以生成第一客户端对应的标识,并将标识发送给第一客户端。其中,标识用于区分不同的客户端。标识可以是会话(session)ID。元数据服务器为客户端生成的标识的各自不同的,标识具有唯一性,不同的客户端的标识不相同。例如,元数据服务器将标识携带在锁定响应中发送给第一客户端。第一客户端接收元数据服务器发送的标识,后续第一客户端发起其他的请求(例如锁定请求解锁请求等)时需要携带该标识,元数据服务器通过识别第一客户端发送的请求中携带的标识来识别该第一客户端。例如,第一客户端向元数据服务器发送的锁定请求中包括该第一标识,则元数据服务器通过该标识确定发送该锁定请求的客户端为第一客户端。元数据服务器可以为不同的客户端生成不同的标识,以用于区分不同的客户端。
实施本发明实施例,客户端在请求元数据服务器对文件进行锁定时,可以指示文件的版本信息,以请求对该文件的该版本进行锁定,以避免其他客户端修改该文件的其他版本,避免了不同的客户端同时对同一文件的不同版本进行修改导致文件数据混乱,保障了数据的一致性和可靠性。
可选的,参见图5,元数据服务器对第一文件的第一版本进行锁定之后,还包括如下步骤S310-S317。其中,
S310:第二客户端向元数据服务器发送锁定请求,元数据服务器接收第二客户端发送的锁定请求,该锁定请求用于请求对第一文件的第二版本进行锁定。
S311:元数据服务器确定第一文件的第一版本已被锁定,元数据服务器判断第二版本是否与第一版本相同,若是,执行步骤S312,若否,执行步骤S317。
S312:元数据服务器向第二客户端发送第三锁定响应,第二客户端接收元数据服务器发送的第三锁定响应,该第三锁定响应用于指示第一文件的第一版本被锁定。
S313:第二客户端向元数据服务器发送锁定请求,元数据服务器接收第二客户端发送的锁定请求,该锁定请求用于请求对第一文件的第二数据区间进行锁定。
S314:元数据服务器判断第一文件的第二数据区间是否被锁定,若否,执行步骤S315和S316。
S315:元数据服务器对第一文件的第二数据区间进行锁定。
S316:元数据服务器向第二客户端发送锁定响应,第二客户端接收元数据服务器发送的锁定响应,该锁定响应用于指示第一文件的第二数据区间被第二客户端锁定。
S317:元数据服务器向第二客户端发送锁定失败指示消息,第二客户端接收元数据服务器发送的锁定失败指示消息。
需要说明的是,上述第一版本是客户端A已锁定的版本,第二版本是客户端B请求锁定的版本,第一版本和第二版本只是为了进行名称的区别,以区分客户端A已锁定的版本和客户端B请求锁定的版本。元数据服务器在接收到客户端B发送的第三锁定请求后,需要判断第二版本与第一版本是否相同,若相同,则表明客户端B也需要对同一文件的同一版本进行锁定,若不相同,则表明客户端B请求锁定同一文件的另一版本。
可选的,若第一文件的第二数据区间中的第三数据区间已被锁定,则元数据服务器对第二数据区间中除第三数据区间以外的其他数据区间进行锁定,并向第二客户端发送锁定响应,该锁定响应用于通知第一文件的第二数据区间中除所述第三数据区间以外的其他数据区间被第二客户端锁定。
可选的,元数据服务器对第一文件的第二数据区间进行锁定后,还可以启动范围锁计时器记录对第一文件的第二数据区间加范围锁的操作时间。当该操作时间到达第二预设期限时若第二客户端还未释放该范围锁,则表明该范围锁计时超时,则释放对该第二数据区间的锁定,避免长时间锁定数据区间。其中,检测对第一文件的第二数据区间加范围锁的操作时间是否到达第二预设期限的方式可以是:判断当前时间与操作时间之间的差值是否大于或等于第二预设期限。例如,第二预设期限可以是10分钟。第二预设期限也可以根据单块(block)写超时*块量来确定。需要说明的是,针对不同数据区间的范围锁有效期可以相同也可以不同,例如,第一数据区间的范围锁有效期为10分钟,第二数据区间的范围锁有效期为20分钟。范围锁的有效期可以是由元数据服务器的系统默认设置的,也可以是管理员手动设置的,本申请对此不进行限定。
可选的,在范围锁的租期内,如果第二客户端处理完写入操作,则第二客户端可以主动释放该范围锁,以解除对第二数据区间的锁定。解除了范围锁的第二数据区间可以被其他客户端再次申请加范围锁。例如,第二客户端向元数据服务器发送解锁请求,元数据服务器接收第二客户端发送的解锁请求,该解锁请求用于请求解除对第一文件的第二数据区间的锁定。元数据服务器解除第二客户端对所述第一文件的第二数据区间的锁定。这里,元数据服务器解除第二客户端对所述第一文件的第二数据区间的锁定可以是:元数据服务器在本地删除第一文件的第二数据区间被第二客户端锁定这一锁定事件。例如,元数据服务器修改第一文件的第二数据区间的状态为未加范围锁状态。
在第一文件的第一版本锁定期限内,其他客户端只能针对同一版本进行修改,而不能申请对第一文件的其他版本的内容进行修改,避免数据混乱。
可选的,在上述步骤S312中,若第二版本与第一版本相同,则元数据服务器对第一文件的文件锁引用次数加一,表明除了第一客户端以外,还有其他客户端同时申请对第一文件进行锁定。同时,由于有新的客户端申请对第一文件的第一版本进行锁定,则元数据服务器更新第一文件的文件锁计时器,文件锁计时器记录文件被第二客户端加锁的操作时间,以更新的操作时间来判断文件锁是否逾期。
可选的,在文件锁的租期内,如果第二客户端不再需要对第一文件进行修改,则第二客户端可以主动释放该文件锁,以停止对第一文件的第一版本的修改。例如,第二客户端向元数据服务器发送解锁请求,元数据服务器接收第二客户端发送的解锁请求,该解锁请求用于请求解除对所述第一文件的第一版本的锁定。元数据服务器解除第二客户端对所述第一文件的第一版本的锁定。此时,若除了第二客户端以外没有其他客户端在锁定第一文件的第一版本,则元数据服务器解除对第一文件的第一版本的锁定。例如,元数据服务器将第一文件的文件锁的引用计数修改为0,表明第一文件当前变为未加文件锁状态。若除了第二客户端以外还有其他客户端在对第一文件的第一版本进行修改,则元数据服务器将第一文件的文件锁的引用计数减一,当前还不能解除对第一文件的第一版本的锁定,直至所有客户端均解除对第一文件的第一版本的释放,或者文件锁逾期时,元数据服务器才会解除对第一文件的第一版本的锁定。
可选的,在上述步骤S312中,若第二版本与第一版本相同,则元数据服务器还可以将第一版本对应的令牌携带在锁定响应中发送给第二客户端。第二客户端接收元数据服务器发送的第一版本对应的令牌,后续第二客户端发起其他的请求(例如锁定请求解锁请求等)时需要携带该第一版本对应的令牌,元数据服务器通过识别第二客户端发送的请求中携带的令牌来确定该第二客户端是否具有锁定第一文件的数据区间的权限。
可选的,在上述步骤S312中,若第二版本与第一版本相同,则元数据服务器还可以生成第二客户端对应的标识,并将标识发送给第二客户端。例如,元数据服务器将标识携带在锁定响应中发送给第二客户端。第二客户端接收元数据服务器发送的标识,后续第二客户端发起其他的请求(例如锁定请求、解锁请求等)时需要携带该标识,元数据服务器通过识别第二客户端发送的请求中携带的标识来识别该第二客户端。例如,第二客户端向元数据服务器发送的锁定请求中包括该标识,则元数据服务器通过该标识确定发送该第四锁定请求的客户端为第二客户端。元数据服务器可以为不同的客户端生成不同的标识,以用于区分不同的客户端。
实施本发明实施例,实现了多个客户端可以并行写入同一文件同一版本的不同数据区间,提高了文件的并行写入效率。并且在文件的某一版本被锁定期间,其他客户端不能申请对同一文件的其他版本的内容进行修改,避免多个客户端分别对同一文件的不同版本的内容进行修改导致的数据混乱的问题,保障了分布式文件的数据一致性和可靠性。
本申请针对文件锁或者范围锁的回收提供了如下两种逾期处理方式:
方式一:元数据服务器后台定期进行文件租约审查,释放过期未释放的范围锁和/或文件锁。例如,元数据服务器定期检查范围锁计时器记录的最近一次对第一文件的第一数据区间加范围锁的操作时间与当前系统时间之间的时间差值是否大于或等于预设的范围锁期限,若是,则表明该范围锁过期,则对第一文件的第一数据区间解除锁定。或者,元数据服务器定期检查文件锁计时器记录的最近一次对第一文件的第一版本加文件锁的操作时间与当前系统时间之间的时间差值是否大于或等于预设的文件锁期限,若是,则表明该文件锁过期,则对第一文件的第一版本解除锁定。
方式二:对于落入两次租约检查期间内的过期记录,则通过客户端加锁请求触发文件锁/范围锁的租约过期检查,如果锁已过期则进行释放处理,并允许新用户加锁。例如,第一客户端已对第一文件的第一版本加文件锁,且该文件锁已过期,当元数据服务器接收到第二客户端发送的针对第一文件的第一版本的锁定请求时,元数据服务器检查第一文件的第一版本的文件锁是否已过期,若是,则元数据服务器解除对第一文件的第一版本的锁定,并重新将第一文件的第一版本进行锁定,锁定者为第二客户端。
实施上述发明实施例,本申请利用文件锁叠加用户定义范围锁的分布式锁机制,能够提升文件的并行写入效率。本申请适用于但不限于互联网内容分发网络(contentdistribution network,CDN)场景,能够实现大文件并行、分段、高并发写入,内容快速注入,提升注入效率。本申请能够实现内容分段并行注入,注入部分成功即提供服务,提升CDN命中率,降低回源流量,降低带宽成本,降低响应时间,提升用户体验。
需要说明的是,本申请中涉及的“A或B”包括三种可能的情况,例如,包括单独的A,单独的B,以及A和B。
上述主要从各个网络设备之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,各个网络设备,例如元数据服务器、第一客户端和第二客户端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的网络设备及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对元数据服务器、第一客户端和第二客户端进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的元数据服务器的一种可能的逻辑结构示意图,元数据服务器600包括:接收单元601、处理单元602和发送单元603。其中,接收单元601用于支持元数据服务器执行前述图3至图5所示方法实施例中元数据服务器接收信息的步骤。发送单元603用于支持元数据服务器执行前述图3至图5所示方法实施例中元数据服务器发送信息的步骤。处理单元602,用于支持元数据服务器执行前述图3至图5所示方法实施例中元数据服务器确定的信息的步骤,以及其他除发送单元和接收单元的功能以外的其他功能等。
在硬件实现上,上述处理单元602可以为处理器或者处理电路等;接收单元601可以为接收器或者接收电路等;发送单元603可以为发送器或者发送电路等,发送单元603和接收单元601可以构成通信接口。
图7所示,为本申请的实施例提供的上述实施例中所涉及的元数据服务器的一种可能的硬件结构示意图。元数据服务器包括:处理器701。在本申请的实施例中,处理器701用于对该元数据服务器的动作进行控制管理,例如,处理器701用于支持实施例中元数据服务器对第一文件的第一版本进行锁定,以及对第一文件的第一数据区间进行锁定等步骤等。可选的,元数据服务器还可以包括存储器702和通信接口703,处理器701、通信接口703以及存储器702可以相互连接或通过总线704相互连接。其中,该存储器702,该存储器用于存储元数据服务器的代码和数据。通信接口703用于支持该元数据服务器进行通信。总线704可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。
其中,处理器701可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述实施例中所涉及的第一客户端的一种可能的逻辑结构示意图,第一客户端包括:发送单元801和接收单元802。其中,发送单元801用于支持上述图3至图5所示方法实施例中第一客户端发送的步骤;接收单元802用于支持上述图3至图5所示方法实施例中第一客户端接收的步骤。
在硬件实现上,上述发送单元801可以为发送器或者发送电路等,接收单元802可以为接收器或者接收电路等,发送单元801和接收单元802可以构成通信接口。
图9所示,为本申请的实施例提供的上述实施例中所涉及的第一客户端的一种可能的硬件结构示意图。第一客户端包括:处理器901。在本申请的实施例中,处理器901用于对实施例中第一客户端的动作进行控制管理。可选的,第一客户端还可以包括存储器902和通信接口903,处理器901、通信接口903以及存储器902可以相互连接或者通过总线904相互连接。其中,存储器902用于存储第一客户端的程序代码和数据,通信接口903用于支持第一客户端进行通信。处理器901调用存储器902中存储的代码进行控制管理。该存储器902可以跟处理器耦合在一起,也可以不耦合在一起。
其中,处理器901可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。
在采用对应各个功能划分各个功能模块的情况下,图10示出了上述实施例中所涉及的第二客户端的一种可能的逻辑结构示意图,第二客户端包括:发送单元1001和接收单元1002。其中,发送单元1001用于支持方法实施例中第二客户端发送的步骤。接收单元1002用于支持方法实施例中第二客户端接收的步骤。
在硬件实现上,上述发送单元1001可以为发送器或者发送电路等,接收单元1002可以为接收器或者接收电路等,发送单元1001和接收单元1002可以构成通信接口。
图11所示,为本申请的实施例提供的上述实施例中所涉及的第二客户端的一种可能的硬件结构示意图。第二客户端包括:处理器1101。在本申请的实施例中,处理器1101用于对实施例中第二客户端的动作进行控制管理。可选的,第二客户端还可以包括存储器1102,通信接口1103,处理器1101、通信接口1103以及存储器1102可以相互连接或者通过总线1104相互连接。其中,存储器1102用于存储第二客户端的程序代码和数据,通信接口1103用于支持第二客户端进行通信。处理器1101调用存储器1102中存储的代码进行控制管理。该存储器1102可以跟处理器耦合在一起,也可以不耦合在一起。
其中,处理器1101可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线1104可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。
在本申请的另一实施例中,还提供一种计算机存储介质,计算机存储介质中存储有计算机执行指令,当一个设备(可以是单片机,芯片等)或者处理器可以调用可读存储介质中存储有计算机执行指令来执行图3至图5所提供的数据存储方法中元数据服务器,第一客户端或者第二客户端的步骤。前述的计算机存储介质可以包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施图3至图5所提供的数据存储方法中元数据服务器,第一客户端或者第二客户端的步骤。
在本申请的另一实施例中,还提供一种分布式文件系统,该分布式文件系统包括多个设备,该多个设备包括元数据服务器,第一客户端和第二客户端。其中,元数据服务器可以为图6或图7所提供的元数据服务器,且用于执行图3至图5所提供的数据存储方法中元数据服务器的步骤;和/或,第一客户端可以为图8或图9所提供的第一客户端,且用于执行图3至图5所提供的数据存储方法中第一客户端的步骤;和/或,第二客户端可以为图10或图11所提供的第二客户端,且用于执行图3至图5所提供的数据存储方法中第二客户端的步骤。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本申请的又一方面提了一种设备,所述设备包括所述处理器运行存储器中的代码使得所述设备执行前述的各种方法。该存储器中存储代码和数据。该存储器位于所述设备中,该所述存储器所述处理器耦合。该存储器也可以位于所述设备之外。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (32)
1.一种数据存储方法,其特征在于,包括:
元数据服务器接收第一客户端发送的第一锁定请求,所述第一锁定请求用于请求对第一文件的第一数据区间进行锁定;
若所述第一文件的第一数据区间未被锁定,则所述元数据服务器对所述第一文件的第一数据区间进行锁定;
所述元数据服务器向所述第一客户端发送第一锁定响应,所述第一锁定响应用于通知所述第一文件的第一数据区间被所述第一客户端锁定,所述第一数据区间用于供所述第一客户端写入数据;
若所述第一文件的第一数据区间与已经被锁定的数据区间重叠,所述元数据服务器将所述第一数据区间中除去重叠部分的剩余的数据区间分配给所述第一客户端;
所述元数据服务器向所述第一客户端发送锁定成功消息,所述锁定成功消息包括所述第一数据区间中除去重叠部分的剩余的数据区间的区间信息。
2.根据权利要求1所述的方法,其特征在于,所述元数据服务器接收第一客户端发送的第一锁定请求之前,还包括:
所述元数据服务器接收所述第一客户端发送的第二锁定请求,所述第二锁定请求用于请求对所述第一文件的第一版本进行锁定;
若所述第一文件未被锁定,则所述元数据服务器对所述第一文件的第一版本进行锁定,并向所述第一客户端发送第二锁定响应,所述第二锁定响应用于通知所述第一文件的第一版本被锁定。
3.根据权利要求2所述的方法,其特征在于,所述元数据服务器对所述第一文件的第一版本进行锁定之后,还包括:
所述元数据服务器接收第二客户端发送的第三锁定请求,所述第三锁定请求用于请求对所述第一文件的第二版本进行锁定;
若所述第一文件的第一版本已被锁定,且所述第二版本与所述第一版本相同,则所述元数据服务器向所述第二客户端发送第三锁定响应,所述第三锁定响应用于通知所述第一文件的第一版本已被锁定;
所述元数据服务器接收所述第二客户端发送的第四锁定请求,所述第四锁定请求用于请求对所述第一文件的第二数据区间进行锁定;
若所述第一文件的第二数据区间未被锁定,则所述元数据服务器对所述第一文件的第二数据区间进行锁定,并向所述第二客户端发送第四锁定响应,所述第四锁定响应用于通知所述第一文件的第二数据区间被所述第二客户端锁定。
4.根据权利要求3所述的方法,其特征在于,所述元数据服务器接收所述第二客户端发送的第四锁定请求之后,还包括:
若所述第一文件的第二数据区间中的第三数据区间已被锁定,则所述元数据服务器对所述第二数据区间中除所述第三数据区间以外的其他数据区间进行锁定,并向所述第二客户端发送第五锁定响应,所述第五锁定响应用于通知所述第一文件的第二数据区间中除所述第三数据区间以外的其他数据区间被所述第二客户端锁定。
5.根据权利要求3或4所述的方法,其特征在于,所述元数据服务器接收第二客户端发送的第三锁定请求之后,还包括:
若所述第一文件的第一版本已被锁定,且所述第二版本与所述第一版本不相同,则所述元数据服务器向所述第二客户端发送锁定失败指示消息。
6.根据权利要求2至5任一项所述的方法,其特征在于,所述第二锁定响应包括所述第一版本对应的第一令牌;所述第一锁定请求中包括第二令牌;
所述元数据服务器接收所述第一客户端发送的第一锁定请求后,所述元数据服务器向所述第一客户端发送第一锁定响应之前,还包括:
所述元数据服务器判断所述第二令牌是否与所述第一令牌相同;
所述元数据服务器向所述第一客户端发送第一锁定响应,包括:
若所述第二令牌与所述第一令牌相同且所述第一文件的第一数据区间未被锁定,则所述元数据服务器向所述第一客户端发送所述第一锁定响应。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述元数据服务器向所述第一客户端发送第一锁定响应之后,还包括:
所述元数据服务器接收所述第一客户端发送的第一解锁请求,所述第一解锁请求用于请求解除对所述第一文件的第一数据区间的锁定;
所述元数据服务器解除所述第一客户端对所述第一文件的第一数据区间的锁定;
所述元数据服务器向所述第一客户端发送第一解锁响应。
8.根据权利要求2至7任一项所述的方法,其特征在于,所述元数据服务器向所述第一客户端发送第二锁定响应之后,还包括:
所述元数据服务器接收所述第一客户端发送的第二解锁请求,所述第二解锁请求用于请求解除对所述第一文件的第一版本的锁定;
所述元数据服务器解除对所述第一客户端对所述第一文件的第一版本的锁定;
所述元数据服务器向所述第一客户端发送第二解锁响应。
9.根据权利要求2至8任一项所述的方法,其特征在于,所述元数据服务器对所述第一文件的第一版本进行锁定之后,还包括:
所述元数据服务器启动对所述第一文件的锁定计时;
在对所述第一文件的锁定计时达到第一预设期限时所述元数据服务器还未接收到客户端发送的针对所述第一文件的第一版本的解锁请求,则所述元数据服务器解除对所述第一文件的第一版本的锁定。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述元数据服务器对所述第一文件的第一数据区间进行锁定之后,还包括:
所述元数据服务器启动对所述第一数据区间的锁定计时;
在对所述第一数据区间的锁定计时达到第二预设期限时所述元数据服务器还未接收到所述第一客户端发送的针对所述第一数据区间的解锁请求,则所述元数据服务器解除所述第一客户端对所述第一文件的第一数据区间的锁定。
11.一种数据存储方法,其特征在于,包括:
第一客户端向元数据服务器发送第一锁定请求,所述第一锁定请求用于请求对第一文件的第一数据区间进行锁定;
若所述第一文件的第一数据区间未被锁定,所述第一客户端接收所述元数据服务器发送的第一锁定响应,所述第一锁定响应用于通知所述第一文件的第一数据区间被所述第一客户端锁定;
若所述第一文件的第一数据区间与已经被锁定的数据区间重叠,所述第一客户端接收所述元数据服务器发送的锁定成功消息,所述锁定成功消息包括所述第一数据区间中除去重叠部分的剩余的数据区间的区间信息,所述重叠部分为所述第一数据区间与已经被锁定的数据区间重叠的部分;
所述第一客户端向存储服务器发送写请求,所述写请求包括待写入数据,所述写请求用于请求将所述待写入数据写入所述第一文件的第一数据区间或者写入所述第一数据区间中除去重叠部分的剩余的数据区间。
12.根据权利要求11所述的方法,其特征在于,所述第一客户端向元数据服务器发送第一锁定请求之前,还包括:
所述第一客户端向所述元数据服务器发送第二锁定请求,所述第二锁定请求用于请求对所述第一文件的第一版本进行锁定;
所述第一客户端接收所述元数据服务器发送的第二锁定响应,所述第二锁定响应用于通知所述第一文件的第一版本被锁定,所述第二锁定响应为所述元数据服务器在确定所述第一文件未被锁定后发送的。
13.根据权利要求12所述的方法,其特征在于,所述第二锁定响应包括所述第一版本对应的第一令牌;所述第一锁定请求中包括第二令牌,所述第二令牌用于所述元数据服务器识别所述第二令牌是否与所述第一令牌相同。
14.根据权利要求11至13任一项所述的方法,其特征在于,所述第一客户端接收所述元数据服务器发送的第一锁定响应之后,还包括:
所述第一客户端向所述元数据服务器发送第一解锁请求,所述第一解锁请求用于请求解除对所述第一文件的第一数据区间的锁定;
所述第一客户端接收所述元数据服务器发送的第一解锁响应。
15.根据权利要求12至14任一项所述的方法,其特征在于,所述第一客户端接收所述元数据服务器发送的第二锁定响应之后,还包括:
所述第一客户端向所述元数据服务器发送第二解锁请求,所述第二解锁请求用于请求解除对所述第一文件的第一版本的锁定;
所述第一客户端接收所述元数据服务器发送的第二解锁响应。
16.一种元数据服务器,其特征在于,包括:
接收单元,用于接收第一客户端发送的第一锁定请求,所述第一锁定请求用于请求对第一文件的第一数据区间进行锁定;
处理单元,用于若所述第一文件的第一数据区间未被锁定,则对所述第一文件的第一数据区间进行锁定;
发送单元,用于向所述第一客户端发送第一锁定响应,所述第一锁定响应用于通知所述第一文件的第一数据区间被所述第一客户端锁定;
所述处理单元还用于若所述第一文件的第一数据区间与已经被锁定的数据区间重叠,将所述第一数据区间中除去重叠部分的剩余的数据区间分配给所述第一客户端;
所述发送单元还用于向所述第一客户端发送锁定成功消息,所述锁定成功消息包括所述第一数据区间中除去重叠部分的剩余的数据区间的区间信息。
17.根据权利要求16所述的元数据服务器,其特征在于,
所述接收单元,还用于在接收第一客户端发送的第一锁定请求之前,接收所述第一客户端发送的第二锁定请求,所述第二锁定请求用于请求对所述第一文件的第一版本进行锁定;
所述元数据服务器还包括:
处理单元,用于若所述第一文件未被锁定,对所述第一文件的第一版本进行锁定;
所述发送单元,还用于若所述第一文件未被锁定,则向所述第一客户端发送第二锁定响应,所述第二锁定响应用于通知所述第一文件的第一版本被锁定。
18.根据权利要求17所述的元数据服务器,其特征在于,
所述接收单元,还用于在所述处理单元对所述第一文件的第一版本进行锁定之后,接收第二客户端发送的第三锁定请求,所述第三锁定请求用于请求对所述第一文件的第二版本进行锁定;
所述发送单元,还用于若所述第一文件的第一版本已被锁定且所述第二版本与所述第一版本相同,向所述第二客户端发送第三锁定响应,所述第三锁定响应用于通知所述第一文件的第一版本被锁定;
所述接收单元,还用于接收所述第二客户端发送的第四锁定请求,所述第四锁定请求用于请求对所述第一文件的第二数据区间进行锁定;
所述处理单元,还用于若所述第一文件的第二数据区间未被锁定,对所述第一文件的第二数据区间进行锁定;
所述发送单元,还用于若所述第一文件的第二数据区间未被锁定,向所述第二客户端发送第四锁定响应,所述第四锁定响应用于通知所述第一文件的第二数据区间被所述第二客户端锁定。
19.根据权利要求18所述的元数据服务器,其特征在于,所述处理单元,还用于在所述接收单元接收所述第二客户端发送的第四锁定请求之后,若所述第一文件的第二数据区间中的第三数据区间已被锁定,则对所述第二数据区间中除所述第三数据区间以外的其他数据区间进行锁定;
所述发送单元,还用于向所述第二客户端发送第五锁定响应,所述第五锁定响应用于通知所述第一文件的第二数据区间中除所述第三数据区间以外的其他数据区间被所述第二客户端锁定。
20.根据权利要求18或19所述的元数据服务器,其特征在于,
所述发送单元,还用于若所述第一文件的第一版本已被锁定,且所述第二版本与所述第一版本不相同后,向所述第二客户端发送锁定失败指示消息。
21.根据权利要求17至20任一项所述的元数据服务器,其特征在于,所述第二锁定响应包括所述第一版本对应的第一令牌;所述第一锁定请求中包括第二令牌;
所述处理单元,还用于在所述接收单元接收所述第一客户端发送的第一锁定请求后,所述发送单元向所述第一客户端发送第一锁定响应之前,判断所述第二令牌是否与所述第一令牌相同;
所述发送单元,用于向所述第一客户端发送第一锁定响应,包括:
若所述第二令牌与所述第一令牌相同且所述第一文件的第一数据区间未被锁定,则向所述第一客户端发送所述第一锁定响应。
22.根据权利要求16至21任一项所述的元数据服务器,其特征在于,
所述接收单元,还用于在所述发送单元向所述第一客户端发送第一锁定响应之后,接收所述第一客户端发送的第一解锁请求,所述第一解锁请求用于请求解除对所述第一文件的第一数据区间的锁定;
所述处理单元,还用于解除所述第一客户端对所述第一文件的第一数据区间的锁定;
所述发送单元,还用于向所述第一客户端发送第一解锁响应。
23.根据权利要求17至22任一项所述的元数据服务器,其特征在于,
所述接收单元,还用于在所述发送单元向所述第一客户端发送第二锁定响应之后,接收所述第一客户端发送的第二解锁请求,所述第二解锁请求用于请求解除对所述第一文件的第一版本的锁定;
所述处理单元,还用于解除所述第一客户端对所述第一文件的第一版本的锁定;
所述发送单元,还用于向所述第一客户端发送第二解锁响应。
24.根据权利要求17至23任一项所述的元数据服务器,其特征在于,
所述处理单元,还用于在所述元数据服务器对所述第一文件的第一版本进行锁定之后,启动对所述第一文件的锁定计时;
所述处理单元,还用于在对所述第一文件的锁定计时达到第一预设期限时所述元数据服务器还未接收到客户端发送的针对所述第一文件的第一版本的解锁请求,则解除对所述第一文件的第一版本的锁定。
25.根据权利要求16至24任一项所述的元数据服务器,其特征在于,
所述处理单元,还用于在对所述第一文件的第一数据区间进行锁定之后,启动对所述第一数据区间的锁定计时;
所述处理单元,还用于在对所述第一数据区间的锁定计时达到第二预设期限时所述元数据服务器还未接收到所述第一客户端发送的针对所述第一数据区间的解锁请求,则解除所述第一客户端对所述第一文件的第一数据区间的锁定。
26.一种客户端,其特征在于,所述客户端为第一客户端,所述第一客户端包括:
发送单元,用于向元数据服务器发送第一锁定请求,所述第一锁定请求用于请求对第一文件的第一数据区间进行锁定;
接收单元,用于若所述第一文件的第一数据区间未被锁定,接收所述元数据服务器发送的第一锁定响应,所述第一锁定响应用于通知所述第一文件的第一数据区间被所述第一客户端锁定;若所述第一文件的第一数据区间与已经被锁定的数据区间重叠,接收所述元数据服务器发送的锁定成功消息,所述锁定成功消息包括所述第一数据区间中除去重叠部分的剩余的数据区间的区间信息,所述重叠部分为所述第一数据区间与已经被锁定的数据区间重叠的部分;
所述发送单元,还用于向存储服务器发送写请求,所述写请求包括待写入数据,所述写请求用于请求将所述待写入数据写入所述第一文件的第一数据区间或者写入所述第一数据区间中除去重叠部分的剩余的数据区间。
27.根据权利要求26所述的客户端,其特征在于,
所述发送单元,还用于在向元数据服务器发送第一锁定请求之前,向所述元数据服务器发送第二锁定请求,所述第二锁定请求用于请求对所述第一文件的第一版本进行锁定;
所述接收单元,还用于接收所述元数据服务器发送的第二锁定响应,所述第二锁定响应用于通知所述第一文件的第一版本被锁定,所述第二锁定响应为所述元数据服务器在确定所述第一文件未被锁定后发送的。
28.根据权利要求27所述的客户端,其特征在于,所述第二锁定响应包括所述第一版本对应的第一令牌;所述第一锁定请求中包括第二令牌,所述第二令牌用于所述元数据服务器识别所述第二令牌是否与所述第一令牌相同。
29.根据权利要求26至28任一项所述的客户端,其特征在于,
所述发送单元,还用于在所述接收单元接收所述元数据服务器发送的第一锁定响应之后,向所述元数据服务器发送第一解锁请求,所述第一解锁请求用于请求解除对所述第一文件的第一数据区间的锁定;
所述接收单元,还用于接收所述元数据服务器发送的第一解锁响应。
30.根据权利要求27至29任一项所述的客户端,其特征在于,
所述发送单元,还用于在所述接收单元接收所述元数据服务器发送的第二锁定响应之后,向所述元数据服务器发送第二解锁请求,所述第二解锁请求用于请求解除对所述第一文件的第一版本的锁定;
所述接收单元,还用于接收所述元数据服务器发送的第二解锁响应。
31.一种通信装置,其特征在于,包括存储器和处理器,所述存储器用于存储程序代码,所述处理器用于执行所述存储器中存储的程序代码,执行如权利要求1-10或11-15任一项所述的方法。
32.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令在处理器上运行时,使得处理器执行如权利要求1-10或11-15任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811154007.3A CN110968563B (zh) | 2018-09-29 | 2018-09-29 | 一种数据存储方法、元数据服务器及客户端 |
EP19866444.3A EP3848814A4 (en) | 2018-09-29 | 2019-09-12 | DATA STORAGE PROCESS, METADATA SERVER AND CLIENT |
PCT/CN2019/105745 WO2020063373A1 (zh) | 2018-09-29 | 2019-09-12 | 一种数据存储方法、元数据服务器及客户端 |
US17/216,270 US20210216523A1 (en) | 2018-09-29 | 2021-03-29 | Data Storage Method, Metadata Server, and Client |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811154007.3A CN110968563B (zh) | 2018-09-29 | 2018-09-29 | 一种数据存储方法、元数据服务器及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110968563A CN110968563A (zh) | 2020-04-07 |
CN110968563B true CN110968563B (zh) | 2023-11-17 |
Family
ID=69953294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811154007.3A Active CN110968563B (zh) | 2018-09-29 | 2018-09-29 | 一种数据存储方法、元数据服务器及客户端 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210216523A1 (zh) |
EP (1) | EP3848814A4 (zh) |
CN (1) | CN110968563B (zh) |
WO (1) | WO2020063373A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399991B (zh) * | 2020-06-05 | 2020-09-29 | 腾讯科技(深圳)有限公司 | 虚拟资源加锁方法和装置、存储介质及电子装置 |
CN113505103A (zh) * | 2021-07-27 | 2021-10-15 | 浙江大华技术股份有限公司 | 文件处理方法及装置、存储介质、电子装置 |
CN115048046B (zh) * | 2022-05-26 | 2022-11-25 | 北京华昱卓程软件有限公司 | 日志文件系统以及数据管理方法 |
CN115348260B (zh) * | 2022-10-19 | 2022-12-20 | 北京宏扬迅腾科技发展有限公司 | 基于校园信息安全的信息处理方法、装置、设备和介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933824A (en) * | 1996-12-23 | 1999-08-03 | Lsi Logic Corporation | Methods and apparatus for locking files within a clustered storage environment |
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
US6144983A (en) * | 1998-06-09 | 2000-11-07 | Oracle Corporation | Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system |
US6389420B1 (en) * | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
CN101111840A (zh) * | 2004-12-16 | 2008-01-23 | 甲骨文国际公司 | 用于在数据库管理系统中为文件操作提供锁定的技术 |
US7822728B1 (en) * | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
CN104391935A (zh) * | 2014-11-21 | 2015-03-04 | 华为技术有限公司 | 一种范围锁的实现方法及装置 |
US9213717B1 (en) * | 2011-09-28 | 2015-12-15 | Emc Corporation | Managing concurrent I/OS in file systems |
CN105718484A (zh) * | 2014-12-04 | 2016-06-29 | 中兴通讯股份有限公司 | 写文件、读文件、删除文件、查询文件的方法及客户端 |
CN105760519A (zh) * | 2016-02-26 | 2016-07-13 | 北京鲸鲨软件科技有限公司 | 一种集群文件系统及其文件锁分配方法 |
KR20170090594A (ko) * | 2016-01-29 | 2017-08-08 | 한국전자통신연구원 | 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 |
CN107209733A (zh) * | 2015-12-31 | 2017-09-26 | 华为技术有限公司 | 写数据方法和装置以及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761659A (en) * | 1996-02-29 | 1998-06-02 | Sun Microsystems, Inc. | Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters |
US5956734A (en) * | 1997-07-11 | 1999-09-21 | International Business Machines Corporation | Parallel file system with a quota check utility |
US6973455B1 (en) * | 1999-03-03 | 2005-12-06 | Emc Corporation | File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator |
US7194467B2 (en) * | 2002-03-29 | 2007-03-20 | Panasas, Inc | Using whole-file and dual-mode locks to reduce locking traffic in data storage systems |
AU2003209885A1 (en) * | 2002-09-20 | 2004-04-08 | Mks Inc. | Version control system for software development |
US8706760B2 (en) * | 2003-02-28 | 2014-04-22 | Microsoft Corporation | Method to delay locking of server files on edit |
US7124131B2 (en) * | 2003-04-29 | 2006-10-17 | International Business Machines Corporation | Discipline for lock reassertion in a distributed file system |
US20050228816A1 (en) * | 2004-04-13 | 2005-10-13 | Bea Systems, Inc. | System and method for content type versions |
US20080243847A1 (en) * | 2007-04-02 | 2008-10-02 | Microsoft Corporation | Separating central locking services from distributed data fulfillment services in a storage system |
US8156164B2 (en) * | 2007-07-11 | 2012-04-10 | International Business Machines Corporation | Concurrent directory update in a cluster file system |
US9501513B2 (en) * | 2007-08-30 | 2016-11-22 | Sap Se | Advanced concurrency management in enterprise service oriented architecture based integrated business processing of distributed application components |
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
US10366070B2 (en) * | 2015-02-20 | 2019-07-30 | Scality S.A. | Locking and I/O improvements of systems built with distributed consistent database implementations within an object store |
US9990372B2 (en) * | 2014-09-10 | 2018-06-05 | Panzura, Inc. | Managing the level of consistency for a file in a distributed filesystem |
US9977786B2 (en) * | 2015-12-23 | 2018-05-22 | Github, Inc. | Distributed code repository with limited synchronization locking |
-
2018
- 2018-09-29 CN CN201811154007.3A patent/CN110968563B/zh active Active
-
2019
- 2019-09-12 EP EP19866444.3A patent/EP3848814A4/en active Pending
- 2019-09-12 WO PCT/CN2019/105745 patent/WO2020063373A1/zh unknown
-
2021
- 2021-03-29 US US17/216,270 patent/US20210216523A1/en active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
US5933824A (en) * | 1996-12-23 | 1999-08-03 | Lsi Logic Corporation | Methods and apparatus for locking files within a clustered storage environment |
US6144983A (en) * | 1998-06-09 | 2000-11-07 | Oracle Corporation | Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system |
US6389420B1 (en) * | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
CN101111840A (zh) * | 2004-12-16 | 2008-01-23 | 甲骨文国际公司 | 用于在数据库管理系统中为文件操作提供锁定的技术 |
US7822728B1 (en) * | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
US9213717B1 (en) * | 2011-09-28 | 2015-12-15 | Emc Corporation | Managing concurrent I/OS in file systems |
CN104391935A (zh) * | 2014-11-21 | 2015-03-04 | 华为技术有限公司 | 一种范围锁的实现方法及装置 |
CN105718484A (zh) * | 2014-12-04 | 2016-06-29 | 中兴通讯股份有限公司 | 写文件、读文件、删除文件、查询文件的方法及客户端 |
CN107209733A (zh) * | 2015-12-31 | 2017-09-26 | 华为技术有限公司 | 写数据方法和装置以及系统 |
KR20170090594A (ko) * | 2016-01-29 | 2017-08-08 | 한국전자통신연구원 | 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 |
CN105760519A (zh) * | 2016-02-26 | 2016-07-13 | 北京鲸鲨软件科技有限公司 | 一种集群文件系统及其文件锁分配方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210216523A1 (en) | 2021-07-15 |
EP3848814A4 (en) | 2021-10-20 |
WO2020063373A1 (zh) | 2020-04-02 |
EP3848814A1 (en) | 2021-07-14 |
CN110968563A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110968563B (zh) | 一种数据存储方法、元数据服务器及客户端 | |
US7404011B2 (en) | System and method for accessing different types of back end data stores | |
US7036149B2 (en) | Computer system | |
JP4759570B2 (ja) | データベース管理システムにおけるファイル操作のためのロックを提供するための手法 | |
US7548918B2 (en) | Techniques for maintaining consistency for different requestors of files in a database management system | |
US20110225373A1 (en) | Computer system and method of data cache management | |
US9973504B2 (en) | Pre-authorizing a client application to access a user account on a content management system | |
US20120066191A1 (en) | Optimized concurrent file input/output in a clustered file system | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
CN113609167B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN107967265B (zh) | 文件的访问方法、数据服务器和文件访问系统 | |
CN113342507A (zh) | 一种分布式锁服务实现方法、装置及计算机设备 | |
KR102567900B1 (ko) | 클라우드 저하 모드에서 지속적인 디바이스 동작 안정성을 보장하기 위한 방법 및 장치 | |
JP5552720B2 (ja) | ストレージシステム、ストレージサーバ、ユーザデータ共有方法、及びプログラム | |
US9286305B2 (en) | Virtual storage gate system | |
KR102247132B1 (ko) | 다수의 엣지 서버들로 구성된 클라우드 환경에서 리소스별 접근 권한 제어를 위한 확장된 인증 방법 | |
CN113590711A (zh) | 一种高弹性可扩展的多链数据分级共享存储系统及方法 | |
CN113760841A (zh) | 实现分布式锁的方法和装置 | |
CN114676093B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN117591248B (zh) | 基于容器化虚拟机的终端系统处理方法及电子设备 | |
CN116401721A (zh) | 数据处理方法、系统、设备及存储介质 | |
US8972346B2 (en) | Method and system for minimizing synchronization efforts of parallel database systems | |
CN115525679A (zh) | 一种数据处理的方法和装置 | |
CN116405318A (zh) | 基于服务网格的设备访问方法及设备 | |
JPH0683691A (ja) | システム間のファイル共有方式 |
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 |