分布式锁的实现方法以及装置制造方法及图纸

技术编号:33044090 阅读:24 留言:0更新日期:2022-04-15 09:26
本申请提供了一种分布式锁的实现方法以及装置,数据库包括多个分库,该方法包括:在目标业务调用目标数据的情况下,在分布式锁记录表中插入锁记录对目标数据进行加锁,分布式锁记录表与分库一一对应且存储在目标数据所在的分库中;在目标业务完成的情况下,查询分布式锁记录表中的锁记录,对目标数据进行解锁。本申请采用分布式锁记录表对分库的目标数据进行加锁和解锁操作,通过数据库分库提升锁记录的安全性,与传统数据库逻辑上是中心锁信息节点的实现方式相比,避免中心锁信息节点导致高并发场景下锁记录读写压力过大的问题,提高了并发能力。了并发能力。了并发能力。

【技术实现步骤摘要】
分布式锁的实现方法以及装置


[0001]本申请涉及计算机软件领域,具体而言,涉及一种分布式锁的实现方法、装置、计算机可读存储介质以及处理器。

技术介绍

[0002]分布式锁实现原理:分布式系统中,不同进程在访问共享资源之前,需要先检查目标资源加锁情况。如果已存在分布式锁,则加锁失败,不能访问目标资源;如果不存在分布式锁,则添加分布式锁,然后访问目标资源。
[0003]常见的分布式锁实现方式有以下三种:
[0004]1)基于Zookeeper。加锁方对某个共享资源加锁时,在分布式锁的实现Zookeeper上的与该资源对应的指定节点的目录下,生成一个唯一的瞬时有序节点。如果有序节点中序号最小则获取锁成功。当释放锁的时候,只需将这个瞬时节点删除即可;
[0005]2)基于缓存(redis)。获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,释放锁时通过delete删除UUID相同的锁。
[0006]3)基于数据库。在数据库中建立分布式锁记录表,通过控制锁记录表的插入与删除操作,实现分布式锁的获取与释放。
[0007]但现有的分布式锁实现方式普遍存在以下问题:
[0008]1)无法轻量化。如基于redis和分布式锁的实现Zookeeper实现的分布式锁,需要引入额外的开源组件;
[0009]2)存在锁丢失的问题。如基于redis集群实现的分布式锁,当主节点加锁成功,未同步到从节点时宕机,会导致锁丢失的问题;
[0010]3)事务隔离性问题。常见分布式锁实现方式中,在锁超时处理时没有和业务状态相关联,如果在业务未完成时直接删除锁记录,可能破坏事务的隔离性;
[0011]4)未划分锁级别。现有分布式锁实现方式,只支持分布式排它锁一种锁级别,在某些场景下限制了系统并发能力;
[0012]5)高并发问题。基于传统数据库、redis、分布式锁的实现Zookeeper等方式实现的分布式锁,在逻辑上都可以看成有一个中心锁信息节点,高并发下场景下容易产生瓶颈,限制系统并发能力。
[0013]在
技术介绍
部分中公开的以上信息只是用来加强对本文所描述技术的
技术介绍
的理解,因此,
技术介绍
中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在本国已知的现有技术。

技术实现思路

[0014]本申请的主要目的在于提供一种分布式锁的实现方法、装置、计算机可读存储介质以及处理器,以解决现有技术中分布式锁实现方式的并发能力差的问题。
[0015]根据本专利技术实施例的一个方面,提供了一种分布式锁的实现方法,数据库包括多个分库,该方法包括:在目标业务调用目标数据的情况下,在分布式锁记录表中插入锁记录对所述目标数据进行加锁,所述分布式锁记录表存储在所述目标数据所在的分库中,所述分布式锁记录表与所述分库一一对应;在所述目标业务完成的情况下,查询所述分布式锁记录表中的所述锁记录,对所述目标数据进行解锁。
[0016]可选地,所述锁记录包括主键和锁级别,所述主键为所述目标数据的唯一标志,所述分布式锁记录表的所述锁记录与所述目标数据一一对应,在分布式锁记录表中插入锁记录对目标数据进行加锁,包括:在第二锁记录的所述主键与任意一个第一锁记录的所述主键相同的情况下,根据所述锁级别对所述目标数据进行加锁,所述第一锁记录为已插入的所述锁记录,所述第二锁记录为待插入的所述锁记录;在所述第二锁记录的所述主键与所有的所述第一锁记录的所述主键均不同或者所述分布式锁记录表不存在所述第一锁记录的情况下,将待插入的所述锁记录插入所述分布式锁记录表并回复加锁成功。
[0017]可选地,所述锁级别包括分布式排它锁和分布式共享锁,在第二锁记录的主键与任意一个第一锁记录的主键相同的情况下,根据所述锁级别对所述目标数据进行加锁,包括:在所述第二锁记录的所述锁级别和第三锁记录的所述锁级别中的一个为所述分布式排它锁的情况下,回复加锁失败,所述第三锁记录为与所述第二锁记录的主键相同的所述第一锁记录;在所述第二锁记录的所述锁级别和所述第三锁记录的所述锁级别均为所述分布式共享锁的情况下,更新所述第三锁记录并回复加锁成功。
[0018]可选地,所述锁记录包括锁级别和共享计数,所述锁级别包括分布式排它锁和分布式共享锁,所述共享计数为当前调用所述目标数据的所述目标业务的数量,在所述目标业务完成的情况下,查询所述分布式锁记录表中的锁记录,对所述目标数据进行解锁,包括:在目标锁记录不存在的情况下,回复解锁成功,所述目标锁记录为所述目标数据对应的所述锁记录;在所述目标锁记录的所述锁级别为所述分布式排它锁的情况下,删除所述目标锁记录并回复解锁成功;在所述目标锁记录的所述锁级别为所述分布式共享锁的情况下,根据所述共享计数对所述目标锁记录进行处理并回复解锁成功。
[0019]可选地,根据所述共享计数对所述目标锁记录进行处理并回复解锁成功,包括:在所述目标锁记录的所述共享计数大于1的情况下,将所述共享计数减1;在所述目标锁记录的所述共享计数等于1的情况下,删除所述目标锁记录并回复解锁成功。
[0020]可选地,所述锁记录包括锁级别和锁的值,所述锁级别包括分布式排它锁和分布式共享锁,所述锁的值用于表征所述目标业务的业务信息,在目标业务调用目标数据之前,所述方法还包括:在所述分布式锁记录表不存在目标锁记录或者所述目标锁记录的所述锁级别为所述分布式共享锁的情况下,回复不存在其他业务添加的所述分布式排它锁,所述目标锁记录为所述目标数据对应的所述锁记录;在所述目标锁记录的所述锁级别为所述分布式排它锁且所述目标锁记录的所述锁的值与待插入的所述锁记录的所述锁的值相同的情况下,回复不存在所述其他业务添加的所述分布式排它锁;在所述目标锁记录的所述锁级别为所述分布式排它锁且所述目标锁记录的所述锁的值与待插入的所述锁记录的所述锁的值不相同的情况下,回复存在所述其他业务添加的所述分布式排它锁。
[0021]可选地,所述锁记录包括超期时间、延期次数和锁级别,所述超期时间为所述目标业务预期完成的时间,所述延期次数为所述目标业务已延期的次数,所述锁级别包括分布
式排它锁和分布式共享锁,所述在分布式锁记录表中插入锁记录对所述目标数据进行加锁之后,所述方法还包括:在超期锁记录的所述锁级别为所述分布式共享锁的情况下,删除所述超期锁记录,所述超期锁记录为当前时间达到所述超期时间的的所述锁记录;在所述超期锁记录的所述锁级别为所述分布式排它锁且所述超期锁记录的所述延期次数小于最大延期次数的情况下,对所述超期锁记录对应的所述目标业务进行延期;在所述超期锁记录的所述锁级别为所述分布式排它锁且所述超期锁记录的所述延期次数大于或者等于最大延期次数的情况下,将所述超期锁记录挂起。
[0022]可选地,在将所述超期锁记录挂起之后,所述方法还包括:在挂起锁记录对应的所述目标业务完成的情况下,删除所述挂起锁记录并回复解锁成功,所述挂起锁记录为挂起的所述超期本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式锁的实现方法,其特征在于,数据库包括多个分库,该方法包括:在目标业务调用目标数据的情况下,在分布式锁记录表中插入锁记录对所述目标数据进行加锁,所述分布式锁记录表存储在所述目标数据所在的分库中,所述分布式锁记录表与所述分库一一对应;在所述目标业务完成的情况下,查询所述分布式锁记录表中的所述锁记录,对所述目标数据进行解锁。2.根据权利要求1所述的方法,其特征在于,所述锁记录包括主键和锁级别,所述主键为所述目标数据的唯一标志,所述分布式锁记录表的所述锁记录与所述目标数据一一对应,在分布式锁记录表中插入锁记录对目标数据进行加锁,包括:在第二锁记录的所述主键与任意一个第一锁记录的所述主键相同的情况下,根据所述锁级别对所述目标数据进行加锁,所述第一锁记录为已插入的所述锁记录,所述第二锁记录为待插入的所述锁记录;在所述第二锁记录的所述主键与所有的所述第一锁记录的所述主键均不同或者所述分布式锁记录表不存在所述第一锁记录的情况下,将待插入的所述锁记录插入所述分布式锁记录表并回复加锁成功。3.根据权利要求2所述的方法,其特征在于,所述锁级别包括分布式排它锁和分布式共享锁,在第二锁记录的主键与任意一个第一锁记录的主键相同的情况下,根据所述锁级别对所述目标数据进行加锁,包括:在所述第二锁记录的所述锁级别和第三锁记录的所述锁级别中的一个为所述分布式排它锁的情况下,回复加锁失败,所述第三锁记录为与所述第二锁记录的主键相同的所述第一锁记录;在所述第二锁记录的所述锁级别和所述第三锁记录的所述锁级别均为所述分布式共享锁的情况下,更新所述第三锁记录并回复加锁成功。4.根据权利要求1所述的方法,其特征在于,所述锁记录包括锁级别和共享计数,所述锁级别包括分布式排它锁和分布式共享锁,所述共享计数为当前调用所述目标数据的所述目标业务的数量,在所述目标业务完成的情况下,查询所述分布式锁记录表中的锁记录,对所述目标数据进行解锁,包括:在目标锁记录不存在的情况下,回复解锁成功,所述目标锁记录为所述目标数据对应的所述锁记录;在所述目标锁记录的所述锁级别为所述分布式排它锁的情况下,删除所述目标锁记录并回复解锁成功;在所述目标锁记录的所述锁级别为所述分布式共享锁的情况下,根据所述共享计数对所述目标锁记录进行处理并回复解锁成功。5.根据权利要求4所述的方法,其特征在于,根据所述共享计数对所述目标锁记录进行处理并回复解锁成功,包括:在所述目标锁记录的所述共享计数大于1的情况下,将所述共享计数减1;在所述目标锁记录的所述共享计数等于1的情况下,删除所述目标锁记录并回复解锁成功。6.根据权利要求1所述的方法,其特征在于,所述锁记录包括锁级别和锁的值,所述锁
级别包括分布式排它锁和分布式共享锁,所述锁的值用于表征所述目...

【专利技术属性】
技术研发人员:朱峰姚亚峰刘亮田健易剑
申请(专利权)人:中国邮政储蓄银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1