[发明专利]一种基于Etcd的分布锁实现方法、系统及设备有效
申请号: | 201911416714.X | 申请日: | 2019-12-31 |
公开(公告)号: | CN111241042B | 公开(公告)日: | 2022-11-11 |
发明(设计)人: | 方浩 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F16/176 | 分类号: | G06F16/176;G06F16/182 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 李舜江 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 etcd 分布 实现 方法 系统 设备 | ||
1.一种基于Etcd的分布锁实现方法,其特征在于,包括:
对锁资源进行管理初始化;
当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
对已经存在锁资源进行管理;
所述对锁资源进行管理初始化包括如下步骤:
S11:在Etcd创建完成后,创建以lock为名称的key和目录,在lock的下一层级创建子key,lock目录下创建新目录以及相应的锁资源;
S12:当Etcd创建某个key时,默认在lock下一级创建一个key。
2.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,所述当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理包括如下步骤:
S21:以主机名称及进程ID号做为资源竞争者标识;
S22:资源竞争者对同一个key加锁时,首先向Etcd的master节点发送请求,master节点对所有的竞争者使用Hash算法,通过取Hash后的最小值获得锁资源;
S23:通过Etcd master节点将host_name:pid:lock信息写入到lock目录下对应的同名key的value值中;
S24:资源竞争者利用Etcd提供的compare and write接口,校验lock目录下对应的同名key的value值,若和需要加锁资源一致,则加锁成功,若不一致,则加锁失败。
3.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,所述当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理包括:
当发现lock目录下同名key下不存在锁资源,同时不存在锁资源竞争,则master直接将相应的key对应的value值更新;资源竞争者利用Etcd提供的compare and write接口校验是否加锁成功。
4.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,所述对已经存在锁资源进行管理包括如下步骤:
S41:当发现lock目录下同名的key下已经存在相应的锁资源时,读取其value值中host_name:pid:lock字符串中的lock字段;
S42:根据DLM的锁兼容性,校验是否冲突,若冲突,则加锁失败;如果不冲突,则在value值中增加记录需要加锁的资源信息。
5.根据权利要求4所述的基于Etcd的分布锁实现方法,其特征在于,当所述value值中存在大于1个锁语义时,若进行锁语义添加,用逗号分隔。
6.一种基于Etcd的分布锁实现系统,其特征在于,包括:
初始化单元,用于对锁资源进行管理初始化;
第一管理单元,用于当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
第二管理单元,用于当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
第三管理单元,用于对已经存在锁资源进行管理;
所述初始化单元,具体用于:
在Etcd创建完成后,创建以lock为名称的key和目录,在lock的下一层级创建子key,lock目录下创建新目录以及相应的锁资源;
当Etcd创建某个key时,默认在lock下一级创建一个key。
7.一种基于Etcd的分布锁实现设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述基于Etcd的分布锁实现方法步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911416714.X/1.html,转载请声明来源钻瓜专利网。