控制分布式节点间访问共享资源的分布式锁的实现方法[发明专利]

(10)申请公布号
(43)申请公布日              (21)申请号 201310607160.8
(22)申请日 2013.11.25
G06F 11/36(2006.01)
G06F 17/30(2006.01)
(71)申请人航天信息股份有限公司
地址100195 北京市海淀区杏石口路甲18
号航天信息园
(72)发明人卞芳
(74)专利代理机构北京工信联合知识产权代理
事务所(普通合伙) 11266
代理人
黄晓军
(54)发明名称
控制分布式节点间访问共享资源的分布式锁
的实现方法
(57)摘要
本发明实施例提供了一种控制分布式节点间
访问共享资源的分布式锁的实现方法。该方法包
括:通过多个锁操作请求中的锁操作元数据来记
录所述Node_A 和Node_B 共享资源的占用情况;
在Node_A 、Node_B 中存储Node_A 当前正在执行的
锁操作请求、可占用的锁操作请求信息,在所述节
点Node_A 或者Node_B 产生一个资源访问请求后,
给资源访问请求分配一个锁操作请求OP_NEW ,根
据Node_A 和Node_B 中存储的锁操作请求信息获
取所述锁操作请求OP_NEW 的准许信息。本发明实
施例通过对资源进行分割,利用多个分散的锁操
作请求来描述整个资源的占用情况,在不降低分
布式锁精度的情况下,大大降低了描述分布式锁
状态所需要的内存资源,降低了对内存资源的消
耗,从而大大提高了可分布式锁的访问效率。(51)Int.Cl.
(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页  说明书7页  附图5页
(10)申请公布号CN 104657260 A (43)申请公布日2015.05.27
C N 104657260
A
1.一种控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,适用于Node_A和Node_B组成的双节点模式,所述的方法具体包括:
通过多个锁操作请求中的锁操作元数据来记录所述Node_A和Node_B共享资源的占用情况;
在所述Node_A中存储Node_A当前正在执行的锁操作请求、可占用的锁操作请求信息,在所述Node_B中存储Node_B当前正在执行的锁操作请求、可占用的锁操作请求信息;
在所述节点Node_A或者Node_B产生一个资源访问请求后,给所述资源访问请求分配一个锁操作请求O
P_NEW,根据所述Node_A和Node_B中存储的锁操作请求信息获取所述锁操作请求OP_NEW的准许信息;
在所述锁操作请求OP_NEW被准许后,执行所述锁操作请求OP_NEW。
2.根据权利要求1所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的通过多个锁操作请求中的锁操作元数据来记录所述Node_A和Node_B共享资源的占用情况,包括:
将所述Node_A和Node_B共享资源划分为多个逻辑单元,给每个逻辑单元分配起始和结束地址,设置每个锁操作请求中的锁操作元数据包括:本次操作逻辑单元的起始和结束地址、本次操作的读写请求类型和本次操作的发起节点,将所有锁操作请求中的锁操作元数据进行综合,得到所述Node_A和Node_B共享资源的占用情况。
3.根据权利要求1或2所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的在所述Node_A中存储Node_A当前正在执行的锁操作请求、可占用的锁操作请求信息,在所述Node_B中存储Node_B当前正在执行的锁操作请求、可占用的锁操作请求信息,包括:
在所述Node_A和Node_B中分别存储当前锁操作请求链表Local_Grant_Link、锁操作请求等待链表Operation_Waiting_Link和可操作锁操作请求缓存链表Operation_Cache;
所述Local_Grant_Link中包括本端节点产生的、无冲突的、当前正在执行的所有锁操作请求,所述Operation_Waiting_Link中包括的所有锁操作请求都和Local_Grant_Link 链表中的至少一个锁操作请求存在冲突,所述Operation_Cache中包括本端节点可占用的所有锁操作请求。
4.根据权利要求3所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的根据所述Node_A和Node_B中存储的锁操作请求信息获取所述锁操作请求OP_NEW的准许信息,包括:
节点Node_A产生了一个资源访问请求,为所述资源访问请求分配一个锁操作请求OP_ NEW,并配置所述锁操作请求OP_NEW对应的锁操作元数据。
所述节点Node_A查询Node_A的Local_Grant_Link链表,查看所述锁操作请求OP_NEW 是否和所述Local_Grant_Link链表中的锁操作请求互相冲突,如果存在冲突,则将所述锁操作请求OP_NEW插入Node_A的Operation_Waiting_Link链表中,并等待;
当所述锁操作请求OP_NEW和所述Local_Grant_Link链表中的锁操作请求不存在冲突时,则将所述锁操作请求OP_NEW插入到所述Local_Grant_Link链表中,并查看所述Node_ A的Operation_Cache链表中是否存储了所述锁操作请求OP_NEW,如果已经缓存,则所述锁操作请求OP_NEW被准许;如果没有缓存,则所述Node_A将所述锁操作请求OP_NEW发送给
所述Node_B,当接收到所述Node_B返回的所述锁操作请求OP_NEW的准许消息后,则所述锁操作请求OP_NEW被准许。
5.根据权利要求4所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的Node_A将所述锁操作请求OP_NEW发送给所述Node_B,当接收到所述Node_B返回的所述锁操作请求OP_NEW的准许消息后,则所述锁操作请求OP_NEW被准许,包括:
所述Node_B收到所述Node_A发送过来的锁操作请求OP_NEW后,查询Node_B的Local_ Grant_Link链表,查看锁操作请求OP_NEW是否和Node_B的Local_Grant_Link链表上的锁操作请求存在冲突,如果存在冲突,则将锁操作请求OP_NEW插入Node_B的Operation_ Waiting_Link链表中,并等待;如果不存在冲突,则将Node_B的Operation_Cache中所有与锁操作请求OP_NEW冲突的锁操作请求从所述Node_B的Operation_Cache中删除,向所述Node_A返回所述锁操作请求OP_NEW的准许消息。
6.根据权利要求5所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的在所述锁操作请求OP_NEW准许后,执行所述锁操作请求OP_NEW,包括:所述Node_A收到所述Node_B返回的所述锁操作请求OP_NEW的准许消息后,将所述锁操作请求OP_NEW增加到Node_A的Operation_Cache链表中,所述Node_A等待执行所述锁操作请求OP_NEW。
7.根据权利要求6所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的方
法还包括:
所述Node_A执行所述锁操作请求OP_NEW完毕后,释放所述锁操作请求OP_NEW,将所述锁操作请求OP_NEW从Node_A的Local_Grant_Link中删除;
节点Node_A逐一处理与所述锁操作请求OP_NEW关联的Node_A的Operation_ Waiting_Link中的锁操作请求,针对与所述锁操作请求OP_NEW关联的Node_A的Operation_Waiting_Link中的每一个锁操作请求,根据所述Node_A和Node_B中存储的锁操作请求信息获取所述每一个锁操作请求的准许信息。
8.根据权利要求3所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的方法还包括:
将Node_A的Operation_Cache初始化为对整个资源有访问权,Node_A的Operation_ Cache链表中初始存储了针对整个资源的所有锁操作请求,将Node_B的Operation_Cache 初始化为对整个资源无直接访问权,Node_B的Operation_Cache链表中初始为空。
9.根据权利要求1所述的控制分布式节点间访问共享资源的分布式锁的实现方法,其特征在于,所述的资源包括数据文件、逻辑资源或者地址空间资源。
控制分布式节点间访问共享资源的分布式锁的实现方法
技术领域
[0001] 本发明涉及计算机应用技术领域,尤其涉及一种控制分布式节点间访问共享资源的分布式锁的实现方法。
背景技术
[0002] 如今大数据分析、分布式计算、云计算已经成为继互联网技术后推动IT产业发展的主流技术。各IT公司、互联网公司在这些领域展开了残酷的竞争。哪些公司能在这些领域掌控核心技术,哪些公司就能掌控和主导下一代信息技术。
[0003] 随着信息技术的迅猛发展,数据分析的目标资源已经由原来的MB、GB量级增长为TB、PB量级。随着目标资源尺寸的极大增加,控制分布式计算节点间访问共享资源的分布式锁所需资源也随之急速增加。目前,通常用一个全局的结构描述上述资源的每个无需分割逻辑单元的占用情况,每个对资源的操作请求,均可通过查询和标记该全局结构来获得资源。但当资源尺寸较大时,通常该全局结构尺寸也会是很可观的,从而导致上述分布式锁的访问效率降低,因此,开发一种消耗资源少、访问效率高的分布式锁是十分必要的。
发明内容
[0004] 本发明的实施例提供了一种控制分布式节点间访问共享资源的分布式锁的实现方法,以提高可分布式锁的访问效率。
[0005] 本发明提供了如下方案:
[0006] 一种控制分布式节点间访问共享资源的分布式锁的实现方法,适用于Node_A和Node_B组成的双节点模式,所述的方法具体包括:
[0007] 通过多个锁操作请求中的锁操作元数据来记录所述Node_A和Node_B共享资源的占用情况;
[0008] 在所述Node_A中存储Node_A当前正在执行的锁操作请求、可占用的锁操作请求信息,在所述Node_B中存储Node_B当前正在执行的锁操作请求、可占用的锁操作请求信息;
[0009] 在所述节点Node_A或者Node_B产生一个资源访问请求后,给所述资源访问请求分配一个锁操作请求OP_NEW,根据所述Node_A和Node_B中存储的锁操作请求信息获取所述锁操作请求OP_NEW的准许信息;
[0010] 在所述锁操作请求OP_NEW被准许后,执行所述锁操作请求OP_NEW。
[0011] 所述的通过多个锁操作请求中的锁操作元数据来记录所述Node_A和Node_B共享资源的占用情况,包括:
[0012] 将所述Node_A和Node_B共享资源划分为多个逻辑单元,给每个逻辑单元分配起始和结束地址,设置每个锁操作请求中的锁操作元数据包括:本次操作逻辑单元的起始和结束地址、本次操作的读写请求类型和本次操作的发起节点,将所有锁操作请求中的锁操作元数据进行综合,得到所述Node_A和Node_B共享资源的占用情况。
[0013] 所述的在所述Node_A中存储Node_A当前正在执行的锁操作请求、可占用的锁操作请求信息,在所述Node_B中存储Node_B当前正在执行的锁操作请求、可占用的锁操作请求信息,包括:
[0014] 在所述Node_A和Node_B中分别存储当前锁操作请求链表Local_Grant_Link、锁操作请求等待链表Operation_Waiting_Link和可操作锁操作请求缓存链表Operation_ Cache;
[0015] 所述Local_Grant_Link中包括本端节点产生的、无冲突的、当前正在执行的所有锁操作请求,所述Operation_Waiting_Link中包括的所有锁操作请求都和Local_Grant_ Link链表中的至少一个锁操作请求存在冲突,所述Operation_Cache中包括本端节点可占用的所有锁操作请求。
[0016] 所述的根据所述Node_A和Node_B中存储的锁操作请求信息获取所述锁操作请求OP_NEW的准许信息,包括:
[0017] 节点Node_A产生了一个资源访问请求,为所述资源访问请求分配一个锁操作请求OP_NEW,并配置所述锁操作请求OP_NEW对应的锁操作元数据。
[0018] 所述节点Node_A查询Node_A的Local_Grant_Link链表,查看所述锁操作请求OP_NEW是否和所述Local_Grant_Link链表中的锁操作请求互相冲突,如果存在冲突,则将所述锁操作请求OP_NEW插入Node_A的Operation_Waiting_Link链表中,并等待;[0019] 当所述锁操作请求OP_NEW和所述Local_Grant_Link链表中的锁操作请求不存在冲突时,则将所述锁操作请求OP_NEW插入到所述Local_Grant_Link链表中,并查看所述Node_A的Operation_Cache链表中是否存储了所述锁操作请求OP_NEW,如果已经缓存,则所述锁操作请求OP_NEW被准许;如果没有缓存,则所述Node_A将所述锁操作请求OP_NEW 发送给所述Node_B,当接收到所述Node_B返回的所述锁操作请求OP_NEW的准许消息后,则所述锁操作请求OP_NEW被准许。
[0020] 所述的Node_A将所述锁操作请求OP_NEW发送给所述Node_B,当接收到所述Node_B返回的所述锁操作请求OP_NEW的准许消息后,则所述锁操作请求OP_NEW被准许,包括:
[0021] 所述Node_B收到所述Node_A发送过来的锁操作请求OP_NEW后,查询Node_B 的Local_Grant_Link链表,查看锁操作请求OP_NEW是否和Node_B的Local_Grant_Link 链表上的锁操作请求存在冲突,如果存在冲突,则将锁操作请求OP_NEW插入Node_B的Operation_Waiting_Link链表中,并等待;如果不存在冲突,则将Node_B的Operation_ Cache中所有与锁操作请求OP_NEW冲突的锁操作请求从所述Node_B的Operation_Cache 中删除,向所述Node_A返回所述锁操作请求OP_NEW的准许消息。
[0022] 所述的在所述锁操作请求OP_NEW准许后,执行所述锁操作请求OP_NEW,包括:[0023] 所述Node_A收到所述Node_B返回的所述锁操作请求OP_NEW的准许消息后,将所述锁操作请求OP_NEW增加到Node_A的Operation_Cache链表中,所述Node_A等待执行所述锁操作请求OP_NEW。
[0024] 所述的方法还包括:
[0025] 所述Node_A执行所述锁操作请求OP_NEW完毕后,释放所述锁操作请求OP_NEW,将所述锁操作请求OP_NEW从Node_A的Local_Grant_Link中删除;

本文发布于:2024-09-20 13:39:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/785250.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:操作   请求   资源   分布式   节点   方法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议