[发明专利]分布式锁实现方法、装置和电子设备有效
申请号: | 202011226758.9 | 申请日: | 2020-11-06 |
公开(公告)号: | CN112099962B | 公开(公告)日: | 2021-02-19 |
发明(设计)人: | 陈佛林;高斌 | 申请(专利权)人: | 成都新希望金融信息有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京超凡宏宇专利代理事务所(特殊普通合伙) 11463 | 代理人: | 徐丽 |
地址: | 610000 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 实现 方法 装置 电子设备 | ||
1.一种分布式锁实现方法,其特征在于,应用于包含多个应用终端的分布式系统中的任一应用终端,各所述应用终端与缓存服务器通信连接,所述缓存服务器为zookeeper集群,各所述应用终端创建有多个线程,所述方法包括:
针对任一所述应用终端,向所述缓存服务器发送锁释放请求时,监测当前所述分布式系统中是否存在其他应用终端向所述缓存服务器发送过加锁请求;
若存在,则将自身对应的全局锁以及自身包含的各线程对应的内部锁进行释放,并将所述全局锁设置为未加锁状态,删除自身在进行加锁时所创建的加锁节点;
若不存在,则保留自身对应的全局锁并将自身包含的各线程对应的内部锁进行释放,其中,所述全局锁需应用终端与所述zookeeper集群进行锁信息交互实现加锁和解锁,所述内部锁无需应用终端与所述zookeeper集群进行锁信息交互实现加锁和解锁;
所述方法还包括预先获得全局锁和内部锁的步骤,该步骤包括:
针对任一所述应用终端,监测当前是否具有创建加锁节点的权限,若具有,则按预设顺序编号方式创建对应的加锁节点,所述加锁节点的类型为临时性顺序节点;
获取所述缓存服务器的节点列表中已存在的加锁节点;
根据当前创建的加锁节点对应的锁类型以及所述节点列表中已存在的加锁节点的锁类型,判断是否加锁成功;
若确定加锁成功,则获得对应的全局锁,并基于获得的全局锁为包含的各线程设置对应的内部锁;
其中,监测当前是否具有创建加锁节点的权限的步骤,包括:
监测所述缓存服务器中的用于管理节点列表的持久性节点的访问路径是否存在,若不存在,则判定具有创建加锁节点的权限,否则,不具有创建加锁节点的权限。
2.根据权利要求1所述的分布式锁实现方法,其特征在于,当前创建的加锁节点和所述节点列表中已存在的加锁节点的锁类型均为读锁;
所述根据当前创建的加锁节点对应的锁类型以及所述节点列表中已存在的加锁节点的锁类型,判断是否加锁成功的步骤,包括:
检测当前创建的加锁节点的编号是否为最小,若为最小则判定加锁成功;
若不为最小,则查看所述节点列表中已存在的加锁节点中编号比当前创建的加锁节点的编号更小的加锁节点的锁类型是否为读锁,若为读锁,则判定加锁成功,否则判定加锁不成功。
3.根据权利要求1所述的分布式锁实现方法,其特征在于,当前创建的加锁节点和所述节点列表中已存在的加锁节点对应的锁类型均为写锁,或者包含读锁和写锁;
所述根据当前创建的加锁节点对应的锁类型以及所述节点列表中已存在的加锁节点的锁类型,判断是否加锁成功的步骤,还包括:
检测当前创建的加锁节点的编号是否为最小,若为最小则判定加锁成功,否则,判定加锁不成功。
4.根据权利要求1所述的分布式锁实现方法,其特征在于,所述按预设顺序编号方式创建对应的加锁节点的步骤,包括:
根据待创建的加锁节点对应的锁类型设置名称前缀;
按预设编号方式创建对应的加锁节点,并根据所述名称前缀为所述加锁节点设置节点名称。
5.根据权利要求1所述的分布式锁实现方法,其特征在于,所述监测当前所述分布式系统中是否存在其他应用终端向所述缓存服务器发送过加锁请求的步骤,包括:
获取所述缓存服务器的监视器所监听到的所述缓存服务器的节点列表的信息;
在所述节点列表的信息表征所述节点列表中新增加锁节点时,判定当前所述分布式系统中存在其他应用终端向所述缓存服务器发送过加锁请求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都新希望金融信息有限公司,未经成都新希望金融信息有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011226758.9/1.html,转载请声明来源钻瓜专利网。