[发明专利]一种范围锁的实现方法及装置有效
申请号: | 201410677262.1 | 申请日: | 2014-11-21 |
公开(公告)号: | CN104391935B | 公开(公告)日: | 2017-12-12 |
发明(设计)人: | 杨晗;冯锐 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同达信恒知识产权代理有限公司11291 | 代理人: | 冯艳莲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 范围 实现 方法 装置 | ||
技术领域
本发明涉及电子技术领域,尤其涉及一种范围锁的实现方法及装置。
背景技术
分布式锁是在集群系统中实现跨节点互斥访问共享资源的一种方式。在大型应用系统中,对单个文件(如数据库文件)以文件为粒度的跨节点互斥访问无法满足系统的高并发要求,故产生了范围锁,实现对大文件/资源的按字节范围加锁,以最大程度满足应用系统的并发访问要求。
范围锁中的范围,还可以非“字节”为单位进行扩展,如描述条带、块等。
因加锁的粒度不再为“是”或“非”,而是众多随机的、可能重叠或相邻的、离散的区间,每个区间又可能存在不同的持有者(以下简称owner),故范围锁数据结构的组织远比非范围锁要复杂,其加锁性能也大幅下降。
现有技术中组织范围锁数据结构的方案可以通过红黑树实现,具体实现可以是:
将所有区间组织到红黑树中,利用平衡二叉树的特性加速区间的查找。这样的红黑树也叫区间树,典型的区间树如图1所示。在区间树中,每个节点至少要包含三个属性:
区间信息:区间的起始端点(start)和结束端点(end),如图1中的第一个节点[5,10],其中起始端点为5、结束端点为10;
最大端点(MaxEnd):记录了本节点和本节点所有子节点中最大的端点值。所以,[start,MaxEnd]描述了本节点和右子树所能描述的最大区间
持有者列表(OwnerList):记录了当前持有这个区间的所有持有者信息,一个持有者即是这个区间的申请者。
使用红黑树,可以获得O(logn)的查找性能,适用于大规格的分布式系统中。为了查找冲突,需要找到树中所有与给定区间重叠的区间,因为树中重叠的区间可能分布在不同的分支中,故可能需要遍历多个分支才能完成这个查找,最坏情况下需要遍历整棵树(例如申请的区间很大,与树中所有区间都重叠)。综上:通过红黑树组织的数据结构记录范围锁后,如果再对一个新的范围加锁时,需要遍历红黑树表中的多棵树和多个分支,所以会造成操作繁复不便实现的问题。
发明内容
本发明提供一种范围锁的实现方法及装置,本发明所提供的方法和装置解决现有技术中通过红黑树组织的数据结构记录范围锁后,如果再对一个新的范围加锁时,需要遍历红黑树表中的多棵树和多个分支,所以会造成操作繁复不便实现的问题。
第一方面,提供一种范围锁的实现方法,该方法包括:
接收第一请求,其中,所述第一请求包含第一区间的区间信息和锁权限信息;
将所述第一区间与本地存储的已授权区间进行比对;
若所述第一区间是所述已授权区间中第二区间的子集,则根据预设的冲突判断规则确定所述第一区间的锁权限信息与所述第二区间的锁权限信息是否冲突;
如果所述第一区间的锁权限信息与所述第二区间的锁权限信息不冲突,则返回所述第一区间的区间信息和锁权限信息。
结合第一方面,在第一种可能的实现方式中,所述已授权区间的区间信息和锁权限信息以红黑树的方式记录;
所述方法还包括:将所述第一区间的区间信息和锁权限信息加入到红黑树中。
结合第一方面,或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述已授权区间有多个时,其中,任意两个已授权区间存在重叠部分,则所述任意两个已授权区间的锁权限信息不冲突。
结合第一方面,或者第一方面的第一至第二种可能的实现方式,在第三种可能的实现方式中,所述锁权限信息包括:对数据执行读操作或写操作的锁权限信息。
结合第一方面,或者第一方面的第一至第三种可能的实现方式,在第四种可能的实现方式中,根据预设的冲突判断规则确定所述第一区间的锁权限信息与所述第二区间的锁权限信息是否有冲突包括:
当所述第一区间的锁权限信息与所述第二区间的锁权限信息不相同,则确定所述第一区间的锁权限信息与所述第二区间的锁权限信息冲突;
当所述第一区间的锁权限信息与所述第二区间的锁权限信息相同,则确定第一区间的锁权限信息与所述第二区间的锁权限信息是否为读取操作,如果是,则确定所述第一区间的锁权限信息与所述第二区间的锁权限信息不冲突;否则,所述第一区间的锁权限信息与所述第二区间的锁权限信息冲突。
结合第一方面,或者第一方面的第一至第四种可能的实现方式,在第五种可能的实现方式中,该方法还包括:
若所述已授权区间中不包含所述第一区间,则返回所述第一区间的区间信息和锁权限信息;或
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410677262.1/2.html,转载请声明来源钻瓜专利网。