[发明专利]基于Hbase存储的分布式悲观锁及其实现方法在审
申请号: | 202010773065.5 | 申请日: | 2020-08-04 |
公开(公告)号: | CN111949673A | 公开(公告)日: | 2020-11-17 |
发明(设计)人: | 李英帅;王效忠;刘明 | 申请(专利权)人: | 贵州易鲸捷信息技术有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/2453;G06F16/2458 |
代理公司: | 成都中炬新汇知识产权代理有限公司 51279 | 代理人: | 罗韬 |
地址: | 550000 贵州省贵阳市贵阳综*** | 国省代码: | 贵州;52 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 hbase 存储 分布式 悲观 及其 实现 方法 | ||
1.一种基于Hbase存储的分布式悲观锁,其特征在于:所述分布式悲观锁包括锁管理器,所述锁管理器用于安装在Hbase系统的RegionServer节点的Region上;
所述锁管理器具有加锁与解锁接口,且由锁、操作事务与锁持有者构成十字链表格式,其中横向维度为当前数据行的信息,纵向维度为操作事务信息,所述横向维度与纵向维度之间的交点为锁持有者。
2.根据权利要求1所述的基于Hbase存储的分布式悲观锁,其特征在于:所述操作事务为访问并操作各种数据项的一个数据库操作序列,所述数据库操作序列内所加的锁全部保存在锁管理器的Transaction对象集合中。
3.根据权利要求1所述的基于Hbase存储的分布式悲观锁,其特征在于:所述锁包括表锁和行锁,所述表锁对象对应Region表,其rowKey属性值为空;所述行锁对象对应Region表的一个数据行,其rowKey属性值为当前数据行的行键。
4.根据权利要求1所述的基于Hbase存储的分布式悲观锁,其特征在于:所述锁持有者为操作事务通过锁管理器对数据加锁时所新建,所述锁持有者包括锁类型、锁模式与操作事务。
5.根据权利要求4所述的基于Hbase存储的分布式悲观锁,其特征在于:所述锁模式包括共享读锁、排它锁、更新锁、意向读锁与意向排它锁。
6.一种权利要求1至5任意一项所述基于Hbase存储的分布式悲观锁的实现方法,其特征在于所述的方法包括如下步骤:
在对Hbase系统执行操作事务前,操作事务首先向锁管理器申请加锁,如加锁成功则执行当前的操作事务,反之则等待重新尝试加锁;
加锁的过程由锁管理器首先查询当前操作事务的事务号,如存在则继续查询当前操作事务操作的数据行的行号,反之则先创建事务号后,再继续查询当前操作事务操作的数据行的行号;
如当前操作事务操作数据行的行号存在,则继续查询锁持有者信息,反之则先创建当前数据行的行号后,再继续查询锁持有者信息;
如查询到锁持有者信息,则判断是否允许加锁,反之则先创建持有者信息,再判断是否允许加锁;
如允许加锁,则修改锁持有者信息并加锁,加锁成功,反之则拒绝加锁并等待重新尝试,如重新尝试N次后仍然拒绝加锁,则加锁失败。
7.根据权利要求6所述的方法,其特征在于:所述的方法包括解锁,在当前操作事务提交或者回滚后,由锁管理器查询当前操作事务的事务号,然后遍历删除当前事务号对应的所有锁持有者,再删除当前事务号对应的全部事务对象,当前操作事务操作的数据行解锁完成。
8.根据权利要求6所述的方法,其特征在于:所述判断是否允许加锁的方式为通过已经存在的锁持有者信息获取到当前操作事务在当前数据行已经加过锁的信息,通过对应的数据行号得到当前行所有事务加过锁的信息,将两者相减得到除当前操作事务外加过锁的信息,得到关键锁信息后通过冲突矩阵和相容矩阵判断是否允许添加当前锁类型。
9.根据权利要求6所述的方法,其特征在于:所述对Hbase系统执行的操作事务包括Get操作、Scan操作、Put操作与Delete操作,所述Get操作为通过Key取一行数据,Scan操作为通过StartKey和EndKey取一段连续的数据,Put操作为通过Key添加一条数据,Delete操作为通过Key删除一条数据。
10.根据权利要求6所述的方法,其特征在于:所述操作事务向锁管理器申请加锁的所类型包括共享读锁、排它锁、更新锁、意向读锁与意向排它锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贵州易鲸捷信息技术有限公司,未经贵州易鲸捷信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010773065.5/1.html,转载请声明来源钻瓜专利网。