[发明专利]分布式锁实现方法、装置和电子设备有效
申请号: | 202011226758.9 | 申请日: | 2020-11-06 |
公开(公告)号: | CN112099962B | 公开(公告)日: | 2021-02-19 |
发明(设计)人: | 陈佛林;高斌 | 申请(专利权)人: | 成都新希望金融信息有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京超凡宏宇专利代理事务所(特殊普通合伙) 11463 | 代理人: | 徐丽 |
地址: | 610000 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 实现 方法 装置 电子设备 | ||
本申请提供一种分布式锁实现方法、装置和电子设备,应用终端在获得全局锁和内部锁的基础上,在进行锁释放时,可监测当前分布式系统中是否存在其他应用终端向缓存服务器发送过加锁请求,即是否存在全局竞争,若存在,则将自身对应的全局锁以及自身包含的各线程对应的内部锁进行释放,并将全局锁设置为未加锁状态,删除自身在进行加锁时所创建的加锁节点。若不存在,则保留自身对应的全局锁并将自身包含的各线程对应的内部锁进行释放。如此,在不存在全局竞争的情况下,可保留全局锁仅对内部锁进行加锁或释放,可减少应用终端与缓存服务器之间的网络交互,提升系统性能。
技术领域
本申请涉及分布式技术领域,具体而言,涉及一种分布式锁实现方法、装置和电子设备。
背景技术
随着业务的不断发展,在传统单机业务系统中,可以通过不断增加线程的方式,来提升服务的吞吐量,同时单机环境中可以实现各种方式的锁机制来保证线程安全。但是单机系统存在天然的缺陷,单机的能力不可能无限提升,同时单机无法保证服务的高可用。因此,分布式系统的出现,使得单机业务的缺陷得以弥补,但是也带来了新的问题,其中一个最大问题就是分布式环境的线程安全问题,于是引入了分布式锁来解决分布式环境下的线程安全问题。
但是目前基于zookeeper或redis实现的分布式锁中,一般需要利用中间件来实现,在各种应用场景下,应用终端在确定是否具有分布式锁时,均需与zookeeper或redis进行一次网络数据交互才可实现。这样的方式不仅占用大量的网络资源且对双方性能造成影响。
发明内容
本申请的目的包括,例如,提供了一种分布式锁实现方法、装置和电子设备,其能够减少网络交互、提升系统性能。
本申请的实施例可以这样实现:
第一方面,本申请提供一种分布式锁实现方法,应用于包含多个应用终端的分布式系统中的任一应用终端,各所述应用终端与缓存服务器通信连接,各所述应用终端创建有多个线程,所述方法包括:
针对任一所述应用终端,向所述缓存服务器发送锁释放请求时,监测当前所述分布式系统中是否存在其他应用终端向所述缓存服务器发送过加锁请求;
若存在,则将自身对应的全局锁以及自身包含的各线程对应的内部锁进行释放,并将所述全局锁设置为未加锁状态,删除自身在进行加锁时所创建的加锁节点;
若不存在,则保留自身对应的全局锁并将自身包含的各线程对应的内部锁进行释放。
在可选的实施方式中,所述方法还包括预先获得全局锁和内部锁的步骤,该步骤包括:
针对任一所述应用终端,监测当前是否具有创建加锁节点的权限,若具有,则按预设顺序编号方式创建对应的加锁节点;
获取所述缓存服务器的节点列表中已存在的加锁节点;
根据当前创建的加锁节点对应的锁类型以及所述节点列表中已存在的加锁节点的锁类型,判断是否加锁成功;
若确定加锁成功,则获得对应的全局锁,并基于获得的全局锁为包含的各线程设置对应的内部锁。
在可选的实施方式中,当前创建的加锁节点和所述节点列表中已存在的加锁节点的锁类型均为读锁;
所述根据当前创建的加锁节点对应的锁类型以及所述节点列表中已存在的加锁节点的锁类型,判断是否加锁成功的步骤,包括:
检测当前创建的加锁节点的编号是否为最小,若为最小则判定加锁成功;
若不为最小,则查看所述节点列表中已存在的加锁节点中编号比当前创建的加锁节点的编号更小的加锁节点的锁类型是否为读锁,若为读锁,则判定加锁成功,否则判定加锁不成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都新希望金融信息有限公司,未经成都新希望金融信息有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011226758.9/2.html,转载请声明来源钻瓜专利网。