[发明专利]一种分布式应用锁实现方法及装置在审
申请号: | 202010560782.X | 申请日: | 2020-06-18 |
公开(公告)号: | CN111708793A | 公开(公告)日: | 2020-09-25 |
发明(设计)人: | 胡柯华;陈梓培;刘彦成 | 申请(专利权)人: | 辽宁振兴银行股份有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23 |
代理公司: | 郑州欧凯专利代理事务所(普通合伙) 41166 | 代理人: | 毛瑞官 |
地址: | 110000 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 应用 实现 方法 装置 | ||
本发明公开了一种分布式应用锁实现方法及装置,包括如下步骤:S1分布式锁任务判断处理:S101分布式任务执行前,查询指定分布锁是否存在,如果不存在,准备向数据库中插入指定分布式锁,如果存在,准备判断分布式锁心跳是否正常;S102判断已存在的分布式锁心跳是否正常,如果心跳正常,说明锁被其他拥有者占用,则直接退出处理,如果锁刷新超时,心跳失常,则更新锁拥有者ID、锁状态、锁维护时间,同时刷新内存中分布式锁信息,然后开始具体任务处理。本发明实现的分布式锁不过分依赖中间件,具备快速移植能力,同时,实现方式不长时间占用关系型数据库行锁,不会触发监控报警,不存在引起数据库资源使用过高的风险。
技术领域
本发明涉及分布式锁技术领域,尤其涉及一种分布式应用锁实现方法及装置。
背景技术
分布式系统:由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
分布式锁:分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。
现有技术的说明:
1、使用关系型数据库行锁实现分布式锁;
现有技术,使用分布式系统连接的关系型数据库行锁实现分布式锁,具体为在关系型数据库中定义分布式锁表,插入相应锁记录,分布式系统在处理任务前,通过带锁查询语句抢占数据库行锁,抢占成功的线程进行任务处理,抢占锁失败的线程退出处理,或者等待锁释放。这种分布式锁实现方式具有实现难度低的优点。
2、依赖中间件实现分布式锁;
现有技术,通过分布式系统使用的中间件实现分布式锁,比如目前比较流行的zookeeper实现分布式锁技术,使用zookeeper创建临时序列节点来实现分布式锁,适用于顺序执行的程序,大体思路就是创建临时序列节点,找出最小的序列节点,获取分布式锁,程序执行完成之后此序列节点消失,通过watch来监控节点的变化,从剩下的节点的找到最小的序列节点,获取分布式锁,执行相应处理,依次类推。
1、使用关系型数据库行锁实现分布式锁的缺点:
虽然通过关系型数据库行锁实现分布式锁具有实现难度低的优点,但带来的危害也非常多。首先,长时间占用关系型数据库行锁不释放,可能导致数据库资源使用过高。其次,生产环境使用的数据库都会部署监控,长时间不释放的数据库行锁会触发监控报警,可见这种分布式锁方式容易扰乱监控秩序,引起相关责任人不必要的恐慌。
2、依赖中间件实现分布式锁的缺点:
分布式系统对中间件依赖程度过高,实现方式不具有通用性,比如通过zookeeper实现的分布式锁,无法快速移植到其他异构系统群上。另外,通过中间件实现分布式锁可能导致中间件负载过高,影响其正常功能的使用。
发明内容
基于背景技术存在的技术问题,本发明提出了一种分布式应用锁实现方法及装置。
本发明提出的一种分布式应用锁实现方法,包括如下步骤:
S1分布式锁任务判断处理:
S101分布式任务执行前,查询指定分布锁是否存在,如果不存在,准备向数据库中插入指定分布式锁,如果存在,准备判断分布式锁心跳是否正常;
S102判断已存在的分布式锁心跳是否正常,如果心跳正常,说明锁被其他拥有者占用,则直接退出处理,如果锁刷新超时,心跳失常,则更新锁拥有者ID、锁状态、锁维护时间,同时刷新内存中分布式锁信息,然后开始具体任务处理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辽宁振兴银行股份有限公司,未经辽宁振兴银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010560782.X/2.html,转载请声明来源钻瓜专利网。